From a04321fdb62f3103e9239dcf6b5d1631918a1651 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 19 Sep 2022 16:44:12 +0100 Subject: [PATCH] Handle D3D12 tier 1 VRS devices better when testing --- util/test/demos/d3d12/d3d12_vrs.cpp | 35 +++++------------------------ 1 file changed, 5 insertions(+), 30 deletions(-) diff --git a/util/test/demos/d3d12/d3d12_vrs.cpp b/util/test/demos/d3d12/d3d12_vrs.cpp index b1f62a807..79430118c 100644 --- a/util/test/demos/d3d12/d3d12_vrs.cpp +++ b/util/test/demos/d3d12/d3d12_vrs.cpp @@ -125,6 +125,9 @@ OUT main(float3 pos : POSITION, float4 col : COLOR0) ResourceBarrier(vb, D3D12_RESOURCE_STATE_COMMON, D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER); + if(opts6.ShadingRateImageTileSize == 0) + opts6.ShadingRateImageTileSize = 1; + ID3D12ResourcePtr shadImage = MakeTexture(DXGI_FORMAT_R8_UINT, screenWidth / opts6.ShadingRateImageTileSize, screenHeight / opts6.ShadingRateImageTileSize) @@ -206,7 +209,7 @@ OUT main(float3 pos : POSITION, float4 col : COLOR0) cmd5->RSSetShadingRate(D3D12_SHADING_RATE_1X1, combiners); } - if(vertpso) + if(opts6.VariableShadingRateTier == D3D12_VARIABLE_SHADING_RATE_TIER_2) { setMarker(cmd, "Vertex"); @@ -216,10 +219,6 @@ OUT main(float3 pos : POSITION, float4 col : COLOR0) cmd->DrawInstanced(6, 1, 0, 0); cmd->SetPipelineState(pso); - } - - if(opts6.VariableShadingRateTier == D3D12_VARIABLE_SHADING_RATE_TIER_2) - { setMarker(cmd, "Image"); cmd5->RSSetShadingRateImage(shadImage); @@ -228,10 +227,7 @@ OUT main(float3 pos : POSITION, float4 col : COLOR0) cmd->DrawInstanced(6, 1, 0, 0); cmd5->RSSetShadingRateImage(NULL); - } - if(vertpso) - { setMarker(cmd, "Base + Vertex"); cmd5->RSSetShadingRate(D3D12_SHADING_RATE_2X2, combiners); @@ -242,10 +238,7 @@ OUT main(float3 pos : POSITION, float4 col : COLOR0) cmd->SetPipelineState(pso); cmd5->RSSetShadingRate(D3D12_SHADING_RATE_1X1, combiners); - } - if(opts6.VariableShadingRateTier == D3D12_VARIABLE_SHADING_RATE_TIER_2) - { setMarker(cmd, "Base + Image"); cmd5->RSSetShadingRate(D3D12_SHADING_RATE_2X2, combiners); @@ -256,10 +249,7 @@ OUT main(float3 pos : POSITION, float4 col : COLOR0) cmd5->RSSetShadingRateImage(NULL); cmd5->RSSetShadingRate(D3D12_SHADING_RATE_1X1, combiners); - } - if(vertpso && opts6.VariableShadingRateTier == D3D12_VARIABLE_SHADING_RATE_TIER_2) - { setMarker(cmd, "Vertex + Image"); cmd5->RSSetShadingRateImage(shadImage); @@ -270,10 +260,7 @@ OUT main(float3 pos : POSITION, float4 col : COLOR0) cmd->SetPipelineState(pso); cmd5->RSSetShadingRateImage(NULL); - } - if(opts6.VariableShadingRateTier == D3D12_VARIABLE_SHADING_RATE_TIER_2) - { ResourceBarrier(cmd, shadImage, D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE, D3D12_RESOURCE_STATE_UNORDERED_ACCESS); } @@ -312,40 +299,28 @@ OUT main(float3 pos : POSITION, float4 col : COLOR0) cmdB->DrawInstanced(0, 0, 0, 0); } - if(vertpso) + if(opts6.VariableShadingRateTier == D3D12_VARIABLE_SHADING_RATE_TIER_2) { setMarker(cmdB, "Vertex"); RSSetViewport(cmdB, {x * 2.0f, 0.0f, x, y, 0.0f, 1.0f}); cmdB->DrawInstanced(0, 0, 0, 0); - } - if(opts6.VariableShadingRateTier == D3D12_VARIABLE_SHADING_RATE_TIER_2) - { setMarker(cmdB, "Image"); RSSetViewport(cmdB, {x * 3.0f, 0.0f, x, y, 0.0f, 1.0f}); cmdB->DrawInstanced(0, 0, 0, 0); - } - if(vertpso) - { setMarker(cmdB, "Base + Vertex"); RSSetViewport(cmdB, {x * 0.0f, y, x, y, 0.0f, 1.0f}); cmdB->DrawInstanced(0, 0, 0, 0); - } - if(opts6.VariableShadingRateTier == D3D12_VARIABLE_SHADING_RATE_TIER_2) - { setMarker(cmdB, "Base + Image"); RSSetViewport(cmdB, {x * 3.0f, y, x, y, 0.0f, 1.0f}); cmdB->DrawInstanced(0, 0, 0, 0); - } - if(vertpso && opts6.VariableShadingRateTier == D3D12_VARIABLE_SHADING_RATE_TIER_2) - { setMarker(cmdB, "Vertex + Image"); RSSetViewport(cmdB, {x * 3.0f, y * 2.0f, x, y, 0.0f, 1.0f});