formatting

This commit is contained in:
jacob 2025-12-10 11:48:42 -06:00
parent 4727e5786b
commit 3da749ef51
6 changed files with 48 additions and 47 deletions

View File

@ -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

View File

@ -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,

View File

@ -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<typename T> StructuredBuffer<T> G_StructuredBufferFromRef(G_StructuredBufferRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; }
template<typename T> RWStructuredBuffer<T> G_RWStructuredBufferFromRef(G_RWStructuredBufferRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; }
template<typename T> StructuredBuffer<T> G_Dereference(G_StructuredBufferRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; }
template<typename T> RWStructuredBuffer<T> 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<typename T> Texture1D<T> G_Texture1DFromRef(G_Texture1DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; }
template<typename T> Texture3D<T> G_Texture3DFromRef(G_Texture3DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; }
template<typename T> RWTexture1D<T> G_RWTexture1DFromRef(G_RWTexture1DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; }
template<typename T> Texture2D<T> G_Texture2DFromRef(G_Texture2DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; }
template<typename T> RWTexture2D<T> G_RWTexture2DFromRef(G_RWTexture2DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; }
template<typename T> RWTexture3D<T> G_RWTexture3DFromRef(G_RWTexture3DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; }
template<typename T> Texture1D<T> G_Dereference(G_Texture1DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; }
template<typename T> Texture2D<T> G_Dereference(G_Texture2DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; }
template<typename T> Texture3D<T> G_Dereference(G_Texture3DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; }
template<typename T> RWTexture1D<T> G_Dereference(G_RWTexture1DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; }
template<typename T> RWTexture2D<T> G_Dereference(G_RWTexture2DRef r) { return ResourceDescriptorHeap[NonUniformResourceIndex(r.v)]; }
template<typename T> RWTexture3D<T> 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); \

View File

@ -3,8 +3,8 @@
ComputeShader2D(V_BackdropCS, 8, 8)
{
V_DParams params = G_StructuredBufferFromRef<V_DParams>(V_ShaderConst_Params)[0];
RWTexture2D<Vec4> target = G_RWTexture2DFromRef<Vec4>(params.target_rw);
V_DParams params = G_Dereference<V_DParams>(V_ShaderConst_Params)[0];
RWTexture2D<Vec4> target = G_Dereference<Vec4>(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_DParams>(V_ShaderConst_Params)[0];
StructuredBuffer<V_DQuad> quads = G_StructuredBufferFromRef<V_DQuad>(params.quads);
RWTexture2D<Vec4> target = G_RWTexture2DFromRef<Vec4>(params.target_rw);
V_DParams params = G_Dereference<V_DParams>(V_ShaderConst_Params)[0];
StructuredBuffer<V_DQuad> quads = G_Dereference<V_DQuad>(params.quads);
RWTexture2D<Vec4> target = G_Dereference<Vec4>(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_DParams>(V_ShaderConst_Params)[0];
StructuredBuffer<V_DQuad> quads = G_StructuredBufferFromRef<V_DQuad>(params.quads);
V_DParams params = G_Dereference<V_DParams>(V_ShaderConst_Params)[0];
StructuredBuffer<V_DQuad> quads = G_Dereference<V_DQuad>(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_DParams>(V_ShaderConst_Params)[0];
StructuredBuffer<V_DVert> verts = G_StructuredBufferFromRef<V_DVert>(params.shape_verts);
RWTexture2D<Vec4> target = G_RWTexture2DFromRef<Vec4>(params.target_rw);
V_DParams params = G_Dereference<V_DParams>(V_ShaderConst_Params)[0];
StructuredBuffer<V_DVert> verts = G_Dereference<V_DVert>(params.shape_verts);
RWTexture2D<Vec4> target = G_Dereference<Vec4>(params.target_rw);
V_DVert vert = verts[SV_VertexID];

View File

@ -8,9 +8,9 @@ Struct(TestStruct)
ComputeShader2D(PT_TestCS, 8, 8)
{
StructuredBuffer<TestStruct> sb = G_StructuredBufferFromRef<TestStruct>(PT_ShaderConst_TestBuff);
StructuredBuffer<TestStruct> sb = G_Dereference<TestStruct>(PT_ShaderConst_TestBuff);
RWTexture2D<Vec4> target_tex = G_RWTexture2DFromRef<Vec4>(PT_ShaderConst_TestTarget);
RWTexture2D<Vec4> target_tex = G_Dereference<Vec4>(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<Vec4> tex = G_Texture2DFromRef<Vec4>(PT_ShaderConst_BlitSrc);
Texture3D<u32> noise = G_Texture3DFromRef<u32>(PT_ShaderConst_NoiseTex);
SamplerState sampler = G_Dereference(PT_ShaderConst_BlitSampler);
Texture2D<Vec4> tex = G_Dereference<Vec4>(PT_ShaderConst_BlitSrc);
Texture3D<u32> noise = G_Dereference<u32>(PT_ShaderConst_NoiseTex);
Vec2 uv = input.src_uv;
Vec4 tex_col = tex.Sample(sampler, uv);

View File

@ -6,8 +6,8 @@
VertexShader(UI_DRectVS, UI_DRectPSInput)
{
UI_DParams params = G_StructuredBufferFromRef<UI_DParams>(UI_ShaderConst_Params)[0];
StructuredBuffer<UI_DRect> rects = G_StructuredBufferFromRef<UI_DRect>(params.rects);
UI_DParams params = G_Dereference<UI_DParams>(UI_ShaderConst_Params)[0];
StructuredBuffer<UI_DRect> rects = G_Dereference<UI_DRect>(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_DParams>(UI_ShaderConst_Params)[0];
StructuredBuffer<UI_DRect> rects = G_StructuredBufferFromRef<UI_DRect>(params.rects);
SamplerState sampler = G_SamplerStateFromRef(params.sampler);
UI_DParams params = G_Dereference<UI_DParams>(UI_ShaderConst_Params)[0];
StructuredBuffer<UI_DRect> rects = G_Dereference<UI_DRect>(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<Vec4> tex = G_Texture2DFromRef<Vec4>(rect.tex);
Texture2D<Vec4> tex = G_Dereference<Vec4>(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_DParams>(UI_ShaderConst_Params)[0];
Texture2D<Vec4> tex = G_Texture2DFromRef<Vec4>(params.target_ro);
SamplerState sampler = G_SamplerStateFromRef(params.sampler);
UI_DParams params = G_Dereference<UI_DParams>(UI_ShaderConst_Params)[0];
Texture2D<Vec4> tex = G_Dereference<Vec4>(params.target_ro);
SamplerState sampler = G_Dereference(params.sampler);
Vec2 uv = input.src_uv;
Vec4 result = tex.Sample(sampler, uv);