From 91c7ef684ed04f2dca1b77c388be993193c8e50f Mon Sep 17 00:00:00 2001 From: jacob Date: Mon, 2 Mar 2026 17:04:16 -0800 Subject: [PATCH] zero pipeline-desc memory for hashing --- src/gpu/gpu_dx12/gpu_dx12_core.c | 18 ++++++++++++++---- src/gpu/gpu_dx12/gpu_dx12_core.h | 2 ++ src/pp/pp_sim/pp_sim_core.c | 2 -- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/gpu/gpu_dx12/gpu_dx12_core.c b/src/gpu/gpu_dx12/gpu_dx12_core.c index 16b96a49..f5f4be75 100644 --- a/src/gpu/gpu_dx12/gpu_dx12_core.c +++ b/src/gpu/gpu_dx12/gpu_dx12_core.c @@ -760,7 +760,7 @@ String G_D12_NameFromObject(Arena *arena, ID3D12Object *object) G_D12_Pipeline *G_D12_PipelineFromDesc(G_D12_PipelineDesc desc) { - u64 hash = HashString(StringFromStruct(&desc)); + u64 hash = G_D12_HashFromPipelineDesc(desc); // Fetch pipeline from cache G_D12_Pipeline *pipeline = 0; @@ -837,6 +837,8 @@ G_D12_Pipeline *G_D12_PipelineFromDesc(G_D12_PipelineDesc desc) ); } + LogInfoF("Creating pipeline %F", FmtString(pipeline_name)); + // Create PSO ID3D12PipelineState *pso = 0; if (ok) @@ -1005,6 +1007,8 @@ G_D12_Pipeline *G_D12_PipelineFromDesc(G_D12_PipelineDesc desc) Panic(error_str); } + LogInfoF("Created pipeline %F", FmtString(pipeline_name)); + pipeline->pso = pso; pipeline->error = error_str; pipeline->ok = ok; @@ -1014,6 +1018,11 @@ G_D12_Pipeline *G_D12_PipelineFromDesc(G_D12_PipelineDesc desc) return pipeline; } +u64 G_D12_HashFromPipelineDesc(G_D12_PipelineDesc desc) +{ + return HashString(StringFromStruct(&desc)); +} + //////////////////////////////////////////////////////////// //~ Queue @@ -2171,7 +2180,6 @@ G_D12_StagingRegionNode *G_D12_PushStagingRegion(G_D12_CmdList *cl, u64 size) if (old_ring) { // FIXME: Queue old ring for deletion with command list - DEBUGBREAKABLE; } } Unlock(&lock); @@ -2582,7 +2590,8 @@ i64 G_CommitCommandList(G_CommandListHandle cl_handle) // Fetch pipeline G_D12_Pipeline *pipeline = 0; { - G_D12_PipelineDesc pipeline_desc = Zi; + G_D12_PipelineDesc pipeline_desc; + ZeroStruct(&pipeline_desc); pipeline_desc.cs = cmd->compute.cs; pipeline = G_D12_PipelineFromDesc(pipeline_desc); } @@ -2638,7 +2647,8 @@ i64 G_CommitCommandList(G_CommandListHandle cl_handle) // Fetch pipeline G_D12_Pipeline *pipeline = 0; { - G_D12_PipelineDesc pipeline_desc = Zi; + G_D12_PipelineDesc pipeline_desc; + ZeroStruct(&pipeline_desc); pipeline_desc.vs = cmd->rasterize.vs; pipeline_desc.ps = cmd->rasterize.ps; { diff --git a/src/gpu/gpu_dx12/gpu_dx12_core.h b/src/gpu/gpu_dx12/gpu_dx12_core.h index 090f6e5d..a93a5a85 100644 --- a/src/gpu/gpu_dx12/gpu_dx12_core.h +++ b/src/gpu/gpu_dx12/gpu_dx12_core.h @@ -31,6 +31,7 @@ //////////////////////////////////////////////////////////// //~ Pipeline types +// NOTE: Must be zero initialized (including padding bits) for hashing Struct(G_D12_PipelineDesc) { VertexShader vs; @@ -534,6 +535,7 @@ String G_D12_NameFromObject(Arena *arena, ID3D12Object *object); //~ Pipeline G_D12_Pipeline *G_D12_PipelineFromDesc(G_D12_PipelineDesc desc); +u64 G_D12_HashFromPipelineDesc(G_D12_PipelineDesc desc); //////////////////////////////////////////////////////////// //~ Queue diff --git a/src/pp/pp_sim/pp_sim_core.c b/src/pp/pp_sim/pp_sim_core.c index 4453835d..fbb11522 100644 --- a/src/pp/pp_sim/pp_sim_core.c +++ b/src/pp/pp_sim/pp_sim_core.c @@ -436,8 +436,6 @@ void S_TickForever(WaveLaneCtx *lane) bot->control.move.y = SinF32(move_t); bot->control.move.y += move_bias; bot->control.look = MulVec2(VEC2(CosF32(look_t), SinF32(look_t)), 3); - - DEBUGBREAKABLE; } } }