Reorganise non/SIMD triangle rendering code
This commit is contained in:
parent
1c1ee6b5e3
commit
68616f3a8b
@ -1048,7 +1048,7 @@ extern "C" void DTR_Update(PlatformRenderBuffer *const platformRenderBuffer,
|
|||||||
DTRRenderTransform rotatingXform = DTRRender_DefaultTriangleTransform();
|
DTRRenderTransform rotatingXform = DTRRender_DefaultTriangleTransform();
|
||||||
rotatingXform.rotation = rotation;
|
rotatingXform.rotation = rotation;
|
||||||
|
|
||||||
if (0)
|
if (1)
|
||||||
{
|
{
|
||||||
DTRDebug_BeginCycleCount("DTR_Update_RenderPrimitiveTriangles",
|
DTRDebug_BeginCycleCount("DTR_Update_RenderPrimitiveTriangles",
|
||||||
DTRDebugCycleCount_DTR_Update_RenderPrimitiveTriangles);
|
DTRDebugCycleCount_DTR_Update_RenderPrimitiveTriangles);
|
||||||
@ -1061,7 +1061,7 @@ extern "C" void DTR_Update(PlatformRenderBuffer *const platformRenderBuffer,
|
|||||||
DTRDebug_EndCycleCount(DTRDebugCycleCount_DTR_Update_RenderPrimitiveTriangles);
|
DTRDebug_EndCycleCount(DTRDebugCycleCount_DTR_Update_RenderPrimitiveTriangles);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (1)
|
if (0)
|
||||||
{
|
{
|
||||||
DTRDebug_BeginCycleCount("DTR_Update_RenderModel", DTRDebugCycleCount_DTR_Update_RenderModel);
|
DTRDebug_BeginCycleCount("DTR_Update_RenderModel", DTRDebugCycleCount_DTR_Update_RenderModel);
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
@ -1093,8 +1093,8 @@ extern "C" void DTR_Update(PlatformRenderBuffer *const platformRenderBuffer,
|
|||||||
DTRRenderTransform transform = DTRRender_DefaultTransform();
|
DTRRenderTransform transform = DTRRender_DefaultTransform();
|
||||||
transform.scale = DqnV2_1f(2.0f);
|
transform.scale = DqnV2_1f(2.0f);
|
||||||
|
|
||||||
LOCAL_PERSIST DqnV2 bitmapP = DqnV2_2f(300, 250);
|
LOCAL_PERSIST DqnV2 bitmapP = DqnV2_2f(500, 250);
|
||||||
bitmapP.x += 3.0f * sinf((f32)input->timeNowInS * 0.5f);
|
bitmapP.x += 2.0f * sinf((f32)input->timeNowInS * 0.5f);
|
||||||
|
|
||||||
f32 cAngle = (f32)input->timeNowInS;
|
f32 cAngle = (f32)input->timeNowInS;
|
||||||
DqnV4 color = DqnV4_4f(0.5f + 0.5f * sinf(cAngle), 0.5f + 0.5f * sinf(2.9f * cAngle),
|
DqnV4 color = DqnV4_4f(0.5f + 0.5f * sinf(cAngle), 0.5f + 0.5f * sinf(2.9f * cAngle),
|
||||||
|
@ -713,6 +713,7 @@ FILE_SCOPE void *STBImageMalloc(size_t size)
|
|||||||
{
|
{
|
||||||
DQN_ASSERT(globalSTBImageAllocator);
|
DQN_ASSERT(globalSTBImageAllocator);
|
||||||
if (!globalSTBImageAllocator) return NULL;
|
if (!globalSTBImageAllocator) return NULL;
|
||||||
|
|
||||||
void *result = DqnMemStack_Push(globalSTBImageAllocator, size);
|
void *result = DqnMemStack_Push(globalSTBImageAllocator, size);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -746,19 +747,21 @@ bool DTRAsset_LoadBitmap(const PlatformAPI api, DqnMemStack *const memStack,
|
|||||||
|
|
||||||
// IMPORTANT(doyle): Look at this line!!! To remind you anytime you think of modifying code here
|
// IMPORTANT(doyle): Look at this line!!! To remind you anytime you think of modifying code here
|
||||||
globalSTBImageAllocator = memStack;
|
globalSTBImageAllocator = memStack;
|
||||||
size_t usageBeforeSTB = memStack->block->used;
|
|
||||||
|
// TODO(doyle): We don't need this atm since we are still using a temp stack in this code.
|
||||||
|
// size_t usageBeforeSTB = memStack->block->used;
|
||||||
|
|
||||||
const u32 FORCE_4_BPP = 4;
|
const u32 FORCE_4_BPP = 4;
|
||||||
bitmap->bytesPerPixel = FORCE_4_BPP;
|
bitmap->bytesPerPixel = FORCE_4_BPP;
|
||||||
u8 *pixels = stbi_load_from_memory(rawData, (i32)file.size, &bitmap->dim.w, &bitmap->dim.h,
|
u8 *pixels = stbi_load_from_memory(rawData, (i32)file.size, &bitmap->dim.w, &bitmap->dim.h,
|
||||||
NULL, FORCE_4_BPP);
|
NULL, FORCE_4_BPP);
|
||||||
|
|
||||||
if (!pixels) goto cleanup;
|
if (!pixels) goto cleanup;
|
||||||
|
result = true;
|
||||||
|
|
||||||
result = true;
|
// TODO(doyle): See above. Since we use temp stack we can allocate straight into the AssetStack.
|
||||||
|
#if 0
|
||||||
size_t pixelsSizeInBytes = bitmap->dim.w * bitmap->dim.h * FORCE_4_BPP;
|
size_t pixelsSizeInBytes = bitmap->dim.w * bitmap->dim.h * FORCE_4_BPP;
|
||||||
memStack->block->used = usageBeforeSTB;
|
memStack->block->used = usageBeforeSTB;
|
||||||
|
|
||||||
if ((usageBeforeSTB + pixelsSizeInBytes) < memStack->block->size)
|
if ((usageBeforeSTB + pixelsSizeInBytes) < memStack->block->size)
|
||||||
{
|
{
|
||||||
u8 *dest = memStack->block->memory + memStack->block->used;
|
u8 *dest = memStack->block->memory + memStack->block->used;
|
||||||
@ -771,7 +774,9 @@ bool DTRAsset_LoadBitmap(const PlatformAPI api, DqnMemStack *const memStack,
|
|||||||
// Otherwise, stbi will call STBImageMalloc which uses our MemStack and
|
// Otherwise, stbi will call STBImageMalloc which uses our MemStack and
|
||||||
// MemStack will allocate a new block for us if it can, so it'll already
|
// MemStack will allocate a new block for us if it can, so it'll already
|
||||||
// be somewhat "suitably" sitting in our memory system.
|
// be somewhat "suitably" sitting in our memory system.
|
||||||
|
DQN_ASSERT(DQN_INVALID_CODE_PATH);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
bitmap->memory = pixels;
|
bitmap->memory = pixels;
|
||||||
|
|
||||||
@ -805,6 +810,7 @@ bool DTRAsset_LoadBitmap(const PlatformAPI api, DqnMemStack *const memStack,
|
|||||||
}
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
|
globalSTBImageAllocator = NULL;
|
||||||
DqnMemStack_EndTempRegion(tmpMemRegion);
|
DqnMemStack_EndTempRegion(tmpMemRegion);
|
||||||
api.FileClose(&file);
|
api.FileClose(&file);
|
||||||
|
|
||||||
|
@ -46,10 +46,19 @@ enum DTRDebugCycleCount
|
|||||||
DTRDebugCycleCount_DTR_Update,
|
DTRDebugCycleCount_DTR_Update,
|
||||||
DTRDebugCycleCount_DTR_Update_RenderModel,
|
DTRDebugCycleCount_DTR_Update_RenderModel,
|
||||||
DTRDebugCycleCount_DTR_Update_RenderPrimitiveTriangles,
|
DTRDebugCycleCount_DTR_Update_RenderPrimitiveTriangles,
|
||||||
DTRDebugCycleCount_SIMD_TexturedTriangle,
|
|
||||||
DTRDebugCycleCount_SIMD_TexturedTriangle_Rasterise,
|
DTRDebugCycleCount_SIMDTexturedTriangle,
|
||||||
DTRDebugCycleCount_SIMD_TexturedTriangle_RasterisePixel,
|
DTRDebugCycleCount_SIMDTexturedTriangle_Rasterise,
|
||||||
DTRDebugCycleCount_SIMD_TexturedTriangle_SampleTexture,
|
DTRDebugCycleCount_SIMDTexturedTriangle_RasterisePixel,
|
||||||
|
DTRDebugCycleCount_SIMDTexturedTriangle_SampleTexture,
|
||||||
|
|
||||||
|
DTRDebugCycleCount_SIMDTriangle,
|
||||||
|
DTRDebugCycleCount_SIMDTriangle_Rasterise,
|
||||||
|
DTRDebugCycleCount_SIMDTriangle_RasterisePixel,
|
||||||
|
|
||||||
|
DTRDebugCycleCount_SlowTriangle,
|
||||||
|
DTRDebugCycleCount_SlowTriangle_Rasterise,
|
||||||
|
DTRDebugCycleCount_SlowTriangle_RasterisePixel,
|
||||||
DTRDebugCycleCount_Count,
|
DTRDebugCycleCount_Count,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -39,7 +39,7 @@ REM wd4100 unused argument parameters
|
|||||||
REM wd4201 nonstandard extension used: nameless struct/union
|
REM wd4201 nonstandard extension used: nameless struct/union
|
||||||
REM wd4189 local variable is initialised but not referenced
|
REM wd4189 local variable is initialised but not referenced
|
||||||
REM wd4505 unreferenced local function not used will be removed
|
REM wd4505 unreferenced local function not used will be removed
|
||||||
set CompileFlags=-EHsc -GR- -Oi -MT -Z7 -W4 -wd4100 -wd4201 -wd4189 -wd4505 -O2 -FAsc /I..\src\external\
|
set CompileFlags=-EHsc -GR- -Oi -MT -Z7 -W4 -wd4100 -wd4201 -wd4189 -wd4505 -Od -FAsc /I..\src\external\
|
||||||
set DLLFlags=/Fm%ProjectName% /Fo%ProjectName% /Fa%ProjectName% /Fe%ProjectName%
|
set DLLFlags=/Fm%ProjectName% /Fo%ProjectName% /Fa%ProjectName% /Fe%ProjectName%
|
||||||
set Win32Flags=/FmWin32DTRenderer /FeWin32DTRenderer
|
set Win32Flags=/FmWin32DTRenderer /FeWin32DTRenderer
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user