Reorganise non/SIMD triangle rendering code

This commit is contained in:
Doyle Thai 2017-06-02 02:45:37 +10:00
parent 1c1ee6b5e3
commit 68616f3a8b
5 changed files with 939 additions and 1099 deletions

View File

@ -1048,7 +1048,7 @@ extern "C" void DTR_Update(PlatformRenderBuffer *const platformRenderBuffer,
DTRRenderTransform rotatingXform = DTRRender_DefaultTriangleTransform();
rotatingXform.rotation = rotation;
if (0)
if (1)
{
DTRDebug_BeginCycleCount("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);
}
if (1)
if (0)
{
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();
transform.scale = DqnV2_1f(2.0f);
LOCAL_PERSIST DqnV2 bitmapP = DqnV2_2f(300, 250);
bitmapP.x += 3.0f * sinf((f32)input->timeNowInS * 0.5f);
LOCAL_PERSIST DqnV2 bitmapP = DqnV2_2f(500, 250);
bitmapP.x += 2.0f * sinf((f32)input->timeNowInS * 0.5f);
f32 cAngle = (f32)input->timeNowInS;
DqnV4 color = DqnV4_4f(0.5f + 0.5f * sinf(cAngle), 0.5f + 0.5f * sinf(2.9f * cAngle),

View File

@ -713,6 +713,7 @@ FILE_SCOPE void *STBImageMalloc(size_t size)
{
DQN_ASSERT(globalSTBImageAllocator);
if (!globalSTBImageAllocator) return NULL;
void *result = DqnMemStack_Push(globalSTBImageAllocator, size);
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
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;
bitmap->bytesPerPixel = FORCE_4_BPP;
u8 *pixels = stbi_load_from_memory(rawData, (i32)file.size, &bitmap->dim.w, &bitmap->dim.h,
NULL, FORCE_4_BPP);
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;
memStack->block->used = usageBeforeSTB;
if ((usageBeforeSTB + pixelsSizeInBytes) < memStack->block->size)
{
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
// MemStack will allocate a new block for us if it can, so it'll already
// be somewhat "suitably" sitting in our memory system.
DQN_ASSERT(DQN_INVALID_CODE_PATH);
}
#endif
bitmap->memory = pixels;
@ -805,6 +810,7 @@ bool DTRAsset_LoadBitmap(const PlatformAPI api, DqnMemStack *const memStack,
}
cleanup:
globalSTBImageAllocator = NULL;
DqnMemStack_EndTempRegion(tmpMemRegion);
api.FileClose(&file);

View File

@ -46,10 +46,19 @@ enum DTRDebugCycleCount
DTRDebugCycleCount_DTR_Update,
DTRDebugCycleCount_DTR_Update_RenderModel,
DTRDebugCycleCount_DTR_Update_RenderPrimitiveTriangles,
DTRDebugCycleCount_SIMD_TexturedTriangle,
DTRDebugCycleCount_SIMD_TexturedTriangle_Rasterise,
DTRDebugCycleCount_SIMD_TexturedTriangle_RasterisePixel,
DTRDebugCycleCount_SIMD_TexturedTriangle_SampleTexture,
DTRDebugCycleCount_SIMDTexturedTriangle,
DTRDebugCycleCount_SIMDTexturedTriangle_Rasterise,
DTRDebugCycleCount_SIMDTexturedTriangle_RasterisePixel,
DTRDebugCycleCount_SIMDTexturedTriangle_SampleTexture,
DTRDebugCycleCount_SIMDTriangle,
DTRDebugCycleCount_SIMDTriangle_Rasterise,
DTRDebugCycleCount_SIMDTriangle_RasterisePixel,
DTRDebugCycleCount_SlowTriangle,
DTRDebugCycleCount_SlowTriangle_Rasterise,
DTRDebugCycleCount_SlowTriangle_RasterisePixel,
DTRDebugCycleCount_Count,
};

File diff suppressed because it is too large Load Diff

View File

@ -39,7 +39,7 @@ REM wd4100 unused argument parameters
REM wd4201 nonstandard extension used: nameless struct/union
REM wd4189 local variable is initialised but not referenced
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 Win32Flags=/FmWin32DTRenderer /FeWin32DTRenderer