formatting
This commit is contained in:
parent
4727e5786b
commit
3da749ef51
@ -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
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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); \
|
||||
|
||||
@ -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];
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user