From 3da749ef51c12dfab506f4928b9bd3fbcba64506 Mon Sep 17 00:00:00 2001 From: jacob Date: Wed, 10 Dec 2025 11:48:42 -0600 Subject: [PATCH] formatting --- src/config.h | 3 ++- src/gpu/gpu_dx12/gpu_dx12_core.c | 3 ++- src/gpu/gpu_shader_core.cgh | 41 ++++++++++++++++---------------- src/pp/pp_vis/pp_vis_shaders.g | 20 ++++++++-------- src/proto/proto_shaders.g | 10 ++++---- src/ui/ui_shaders.g | 18 +++++++------- 6 files changed, 48 insertions(+), 47 deletions(-) diff --git a/src/config.h b/src/config.h index f40de1e6..d0951d8e 100644 --- a/src/config.h +++ b/src/config.h @@ -70,9 +70,10 @@ #define FLOOD_DEBUG 0 #define GPU_DEBUG 1 -#define GPU_SHADER_PRINT 1 #define GPU_DEBUG_VALIDATION 1 +#define GPU_SHADER_PRINT 1 + /* If enabled, bitbuffs will insert/verify magic numbers & length for each read & write */ #define BITBUFF_DEBUG 0 #define BITBUFF_TEST IsRtcEnabled diff --git a/src/gpu/gpu_dx12/gpu_dx12_core.c b/src/gpu/gpu_dx12/gpu_dx12_core.c index df0aece4..aed0842e 100644 --- a/src/gpu/gpu_dx12/gpu_dx12_core.c +++ b/src/gpu/gpu_dx12/gpu_dx12_core.c @@ -291,7 +291,7 @@ void G_Bootstrap(void) { /* Create debug print buffers */ - if (GPU_DEBUG) + if (GPU_SHADER_PRINT) { u64 print_buffer_size = Mebi(64); for (G_QueueKind kind = 0; kind < G_NumQueues; ++kind) @@ -299,6 +299,7 @@ void G_Bootstrap(void) G_D12_Queue *queue = G_D12_QueueFromKind(kind); if (kind != G_QueueKind_AsyncCopy) { + /* TODO: Don't create this in host memory. Just double buffer & do an async copy. */ G_ArenaHandle gpu_perm = G_PermArena(); queue->debug_print_buffer = G_PushBuffer( gpu_perm, diff --git a/src/gpu/gpu_shader_core.cgh b/src/gpu/gpu_shader_core.cgh index a91b1b12..d03d4ec8 100644 --- a/src/gpu/gpu_shader_core.cgh +++ b/src/gpu/gpu_shader_core.cgh @@ -40,8 +40,7 @@ Struct(G_SamplerStateRef) { u32 v; }; */ #define G_NumGeneralPurposeConstants (8) /* Constants available for any usage */ #define G_NumReservedConstants (1) /* Constants reserved for usage by the GPU layer */ -#define G_NumBackendReservedConstants (1) /* Constants reserved for usage by the GPU backend layer */ -#define G_NumConstants (G_NumGeneralPurposeConstants + G_NumReservedConstants + G_NumBackendReservedConstants) +#define G_NumConstants (G_NumGeneralPurposeConstants + G_NumReservedConstants) #if IsLanguageC #define G_ForceDeclConstant(type, name, slot) \ @@ -60,24 +59,24 @@ Struct(G_SamplerStateRef) { u32 v; }; //~ Resource dereference #if IsLanguageG - /* TODO: Non-uniform resource access is assumed as the default behavior. We - * may want to add explicit "uniform" variants for optimization on AMD devices - * in the future. */ + /* TODO: Non-uniform resource access currently is assumed as the default + * behavior. We may want to add explicit "uniform" variants for + * optimization on amd in the future. */ - template StructuredBuffer G_StructuredBufferFromRef(G_StructuredBufferRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } - template RWStructuredBuffer G_RWStructuredBufferFromRef(G_RWStructuredBufferRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } + template StructuredBuffer G_Dereference(G_StructuredBufferRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } + template RWStructuredBuffer G_Dereference(G_RWStructuredBufferRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } - ByteAddressBuffer G_ByteAddressBufferFromRef(G_ByteAddressBufferRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } - RWByteAddressBuffer G_RWByteAddressBufferFromRef(G_RWByteAddressBufferRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } + ByteAddressBuffer G_Dereference(G_ByteAddressBufferRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } + RWByteAddressBuffer G_Dereference(G_RWByteAddressBufferRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } - template Texture1D G_Texture1DFromRef(G_Texture1DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } - template Texture3D G_Texture3DFromRef(G_Texture3DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } - template RWTexture1D G_RWTexture1DFromRef(G_RWTexture1DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } - template Texture2D G_Texture2DFromRef(G_Texture2DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } - template RWTexture2D G_RWTexture2DFromRef(G_RWTexture2DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } - template RWTexture3D G_RWTexture3DFromRef(G_RWTexture3DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } + template Texture1D G_Dereference(G_Texture1DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } + template Texture2D G_Dereference(G_Texture2DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } + template Texture3D G_Dereference(G_Texture3DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } + template RWTexture1D G_Dereference(G_RWTexture1DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } + template RWTexture2D G_Dereference(G_RWTexture2DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } + template RWTexture3D G_Dereference(G_RWTexture3DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; } - SamplerState G_SamplerStateFromRef(G_SamplerStateRef r) { return SamplerDescriptorHeap[NonUniformResourceIndex(r.v)]; } + SamplerState G_Dereference(G_SamplerStateRef r) { return SamplerDescriptorHeap[NonUniformResourceIndex(r.v)]; } #endif //////////////////////////////////////////////////////////// @@ -115,20 +114,20 @@ G_ForceDeclConstant(G_RWByteAddressBufferRef, G_ShaderConst_DebugBufferRef, 8) { u32 data_u32[256]; u32 byte_pos; - }; - void G_PushByteToDebug(inout G_DebugBuffer buff, u32 byte) + void G_PushDebugChar(inout G_DebugBuffer buff, u32 c) { + /* TODO: Overflow check */ u32 u32_arr_pos = buff.byte_pos / 4; u32 idx_in_u32 = buff.byte_pos & 0x03; - buff.data_u32[u32_arr_pos] |= (byte & 0xFF) << (idx_in_u32 * 8); + buff.data_u32[u32_arr_pos] |= (c & 0xFF) << (idx_in_u32 * 8); buff.byte_pos += 1; } void G_CommitDebugBuffer(G_DebugBuffer buff) { - RWByteAddressBuffer rw = G_RWByteAddressBufferFromRef(G_ShaderConst_DebugBufferRef); + RWByteAddressBuffer rw = G_Dereference(G_ShaderConst_DebugBufferRef); u32 u32s_count = (buff.byte_pos + 3) / 4; u32 alloc_size = u32s_count * 4; @@ -152,7 +151,7 @@ G_ForceDeclConstant(G_RWByteAddressBufferRef, G_ShaderConst_DebugBufferRef, 8) u32 __pos = 0; \ while (U32FromChar(fmt[__pos]) != 0) \ { \ - G_PushByteToDebug(__dbg, U32FromChar(fmt[__pos])); \ + G_PushDebugChar(__dbg, U32FromChar(fmt[__pos])); \ ++__pos; \ } \ G_CommitDebugBuffer(__dbg); \ diff --git a/src/pp/pp_vis/pp_vis_shaders.g b/src/pp/pp_vis/pp_vis_shaders.g index b324863a..6d628cd1 100644 --- a/src/pp/pp_vis/pp_vis_shaders.g +++ b/src/pp/pp_vis/pp_vis_shaders.g @@ -3,8 +3,8 @@ ComputeShader2D(V_BackdropCS, 8, 8) { - V_DParams params = G_StructuredBufferFromRef(V_ShaderConst_Params)[0]; - RWTexture2D target = G_RWTexture2DFromRef(params.target_rw); + V_DParams params = G_Dereference(V_ShaderConst_Params)[0]; + RWTexture2D target = G_Dereference(params.target_rw); Vec2U32 target_pos = SV_DispatchThreadID; Vec2I32 target_size = params.target_size; @@ -23,9 +23,9 @@ ComputeShader2D(V_BackdropCS, 8, 8) VertexShader(V_DQuadVS, V_DQuadPSInput) { - V_DParams params = G_StructuredBufferFromRef(V_ShaderConst_Params)[0]; - StructuredBuffer quads = G_StructuredBufferFromRef(params.quads); - RWTexture2D target = G_RWTexture2DFromRef(params.target_rw); + V_DParams params = G_Dereference(V_ShaderConst_Params)[0]; + StructuredBuffer quads = G_Dereference(params.quads); + RWTexture2D target = G_Dereference(params.target_rw); V_DQuad quad = quads[SV_InstanceID]; @@ -45,8 +45,8 @@ VertexShader(V_DQuadVS, V_DQuadPSInput) PixelShader(V_DQuadPS, V_DQuadPSOutput, V_DQuadPSInput input) { - V_DParams params = G_StructuredBufferFromRef(V_ShaderConst_Params)[0]; - StructuredBuffer quads = G_StructuredBufferFromRef(params.quads); + V_DParams params = G_Dereference(V_ShaderConst_Params)[0]; + StructuredBuffer quads = G_Dereference(params.quads); V_DQuad quad = quads[input.quad_idx]; Vec4 final_color = 0; @@ -64,9 +64,9 @@ PixelShader(V_DQuadPS, V_DQuadPSOutput, V_DQuadPSInput input) VertexShader(V_DVertVS, V_DVertPSInput) { - V_DParams params = G_StructuredBufferFromRef(V_ShaderConst_Params)[0]; - StructuredBuffer verts = G_StructuredBufferFromRef(params.shape_verts); - RWTexture2D target = G_RWTexture2DFromRef(params.target_rw); + V_DParams params = G_Dereference(V_ShaderConst_Params)[0]; + StructuredBuffer verts = G_Dereference(params.shape_verts); + RWTexture2D target = G_Dereference(params.target_rw); V_DVert vert = verts[SV_VertexID]; diff --git a/src/proto/proto_shaders.g b/src/proto/proto_shaders.g index 585efd7f..e1c0f93c 100644 --- a/src/proto/proto_shaders.g +++ b/src/proto/proto_shaders.g @@ -8,9 +8,9 @@ Struct(TestStruct) ComputeShader2D(PT_TestCS, 8, 8) { - StructuredBuffer sb = G_StructuredBufferFromRef(PT_ShaderConst_TestBuff); + StructuredBuffer sb = G_Dereference(PT_ShaderConst_TestBuff); - RWTexture2D target_tex = G_RWTexture2DFromRef(PT_ShaderConst_TestTarget); + RWTexture2D target_tex = G_Dereference(PT_ShaderConst_TestTarget); Vec2U32 target_tex_size = countof(target_tex); Vec2I32 id = SV_DispatchThreadID; @@ -51,9 +51,9 @@ VertexShader(PT_BlitVS, PT_BlitPSInput) PixelShader(PT_BlitPS, PT_BlitPSOutput, PT_BlitPSInput input) { - SamplerState sampler = G_SamplerStateFromRef(PT_ShaderConst_BlitSampler); - Texture2D tex = G_Texture2DFromRef(PT_ShaderConst_BlitSrc); - Texture3D noise = G_Texture3DFromRef(PT_ShaderConst_NoiseTex); + SamplerState sampler = G_Dereference(PT_ShaderConst_BlitSampler); + Texture2D tex = G_Dereference(PT_ShaderConst_BlitSrc); + Texture3D noise = G_Dereference(PT_ShaderConst_NoiseTex); Vec2 uv = input.src_uv; Vec4 tex_col = tex.Sample(sampler, uv); diff --git a/src/ui/ui_shaders.g b/src/ui/ui_shaders.g index a72ceb2f..690a9161 100644 --- a/src/ui/ui_shaders.g +++ b/src/ui/ui_shaders.g @@ -6,8 +6,8 @@ VertexShader(UI_DRectVS, UI_DRectPSInput) { - UI_DParams params = G_StructuredBufferFromRef(UI_ShaderConst_Params)[0]; - StructuredBuffer rects = G_StructuredBufferFromRef(params.rects); + UI_DParams params = G_Dereference(UI_ShaderConst_Params)[0]; + StructuredBuffer rects = G_Dereference(params.rects); UI_DRect rect = rects[SV_InstanceID]; Vec2 rect_uv = RectUvFromVertexId(SV_VertexID); @@ -31,9 +31,9 @@ VertexShader(UI_DRectVS, UI_DRectPSInput) PixelShader(UI_DRectPS, UI_DRectPSOutput, UI_DRectPSInput input) { - UI_DParams params = G_StructuredBufferFromRef(UI_ShaderConst_Params)[0]; - StructuredBuffer rects = G_StructuredBufferFromRef(params.rects); - SamplerState sampler = G_SamplerStateFromRef(params.sampler); + UI_DParams params = G_Dereference(UI_ShaderConst_Params)[0]; + StructuredBuffer rects = G_Dereference(params.rects); + SamplerState sampler = G_Dereference(params.sampler); UI_DRect rect = rects[input.rect_idx]; @@ -93,7 +93,7 @@ PixelShader(UI_DRectPS, UI_DRectPSOutput, UI_DRectPSInput input) } else if (!G_IsRefNil(rect.tex)) { - Texture2D tex = G_Texture2DFromRef(rect.tex); + Texture2D tex = G_Dereference(rect.tex); background_color = tex.Sample(sampler, input.tex_uv); } else @@ -138,9 +138,9 @@ VertexShader(UI_BlitVS, UI_BlitPSInput) PixelShader(UI_BlitPS, UI_BlitPSOutput, UI_BlitPSInput input) { - UI_DParams params = G_StructuredBufferFromRef(UI_ShaderConst_Params)[0]; - Texture2D tex = G_Texture2DFromRef(params.target_ro); - SamplerState sampler = G_SamplerStateFromRef(params.sampler); + UI_DParams params = G_Dereference(UI_ShaderConst_Params)[0]; + Texture2D tex = G_Dereference(params.target_ro); + SamplerState sampler = G_Dereference(params.sampler); Vec2 uv = input.src_uv; Vec4 result = tex.Sample(sampler, uv);