From 95c8a3f42edde61332670f64119b50e35e38cc1a Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 17 Jun 2022 15:16:11 +0100 Subject: [PATCH] Test swizzles of UAV reads --- .../demos/d3d11/d3d11_shader_debug_zoo.cpp | 52 ++++++++++++++++++- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/util/test/demos/d3d11/d3d11_shader_debug_zoo.cpp b/util/test/demos/d3d11/d3d11_shader_debug_zoo.cpp index a089e2bc8..a765bdbca 100644 --- a/util/test/demos/d3d11/d3d11_shader_debug_zoo.cpp +++ b/util/test/demos/d3d11/d3d11_shader_debug_zoo.cpp @@ -110,6 +110,7 @@ Texture2D smiley : register(t5); RWByteAddressBuffer byterwtest : register(u1); RWStructuredBuffer structrwtest : register(u2); +RWBuffer typedrwtest : register(u3); Buffer unboundsrv1 : register(t100); Texture2D unboundsrv2 : register(t101); @@ -676,6 +677,50 @@ float4 main(v2f IN) : SV_Target0 { return rgb_srv[0]; } + if(IN.tri == 80) + { + uint z2 = uint(zero); + MyStruct read = structrwtest[z2+7]; + + return read.b.xyzw; + } + if(IN.tri == 81) + { + uint z2 = uint(zero); + MyStruct read = structrwtest[z2+7]; + + return read.b.zzyx; + } + if(IN.tri == 82) + { + uint z2 = uint(zero); + MyStruct read = structrwtest[z2+7]; + + return read.b.zwxy; + } + if(IN.tri == 83) + { + uint z2 = uint(zero); + MyStruct read = structrwtest[z2+7]; + + return read.b.wzwy; + } + if(IN.tri == 84) + { + return typedrwtest[uint(zero)].xyzw; + } + if(IN.tri == 85) + { + return typedrwtest[uint(zero)].zzyx; + } + if(IN.tri == 86) + { + return typedrwtest[uint(zero)].zwxy; + } + if(IN.tri == 87) + { + return typedrwtest[uint(zero)].wzwy; + } return float4(0.4f, 0.4f, 0.4f, 0.4f); } @@ -938,6 +983,9 @@ float4 main(v2f IN, uint samp : SV_SampleIndex) : SV_Target0 ID3D11UnorderedAccessViewPtr structuav = MakeUAV(structBuf2).Format(DXGI_FORMAT_UNKNOWN).FirstElement(3).NumElements(5); + ID3D11BufferPtr rgbuavBuf = MakeBuffer().UAV().Data(structdata); + ID3D11UnorderedAccessViewPtr typeuav = MakeUAV(rgbuavBuf).Format(DXGI_FORMAT_R32G32B32A32_FLOAT); + Texture rgba8; LoadXPM(SmileyTexture, rgba8); @@ -992,8 +1040,8 @@ float4 main(v2f IN, uint samp : SV_SampleIndex) : SV_Target0 UINT zero[4] = {}; ctx->ClearUnorderedAccessViewUint(rawuav, zero); ctx->ClearUnorderedAccessViewUint(structuav, zero); - ID3D11UnorderedAccessView *uavs[] = {rawuav, structuav}; - ctx->OMSetRenderTargetsAndUnorderedAccessViews(1, &fltRT.GetInterfacePtr(), NULL, 1, 2, uavs, + ID3D11UnorderedAccessView *uavs[] = {rawuav, structuav, typeuav}; + ctx->OMSetRenderTargetsAndUnorderedAccessViews(1, &fltRT.GetInterfacePtr(), NULL, 1, 3, uavs, NULL); setMarker("Main Test");