File tree 1 file changed +10
-0
lines changed
src/ComputeSharp/Graphics/Resources/Helpers
1 file changed +10
-0
lines changed Original file line number Diff line number Diff line change @@ -20,6 +20,16 @@ public static D3D12_RESOURCE_STATES GetD3D12ResourceStates(ResourceState resourc
20
20
{
21
21
if ( resourceState == ResourceState . ReadOnly )
22
22
{
23
+ // Transitioning to 'NON_PIXEL_SHADER_RESOURCE' here is intentional, for writeable textures. Non writeable textures
24
+ // are created as 'D3D12_RESOURCE_STATE_COMMON', which should not be used in this scenario. Writable textures need
25
+ // a state transition to 'NON_PIXEL_SHADER_RESOURCE' after being used as 'UNORDERED_ACCESS'. Readonly textures can
26
+ // be created as 'COMMON', which is a shorthand for read-compatible states. The difference is intentional, and it
27
+ // ensures correct usage and synchronization based on how resources are accessed.
28
+ //
29
+ // Transitioning to 'COMMON' instead of 'NON_PIXEL_SHADER_RESOURCE' might "work" due to leniency in the hardware or
30
+ // driver implementation. However, it's not guaranteed behavior and could lead to undefined results in other
31
+ // environments or under different conditions. To ensure portability and correctness, explicit and precise resource
32
+ // states like 'NON_PIXEL_SHADER_RESOURCE' should be preferred, which is why the latter is being used here.
23
33
return D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE ;
24
34
}
25
35
You can’t perform that action at this time.
0 commit comments