diff options
Diffstat (limited to 'tests/hlsl')
| -rw-r--r-- | tests/hlsl/raster-order-resource.slang | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/hlsl/raster-order-resource.slang b/tests/hlsl/raster-order-resource.slang new file mode 100644 index 000000000..2db9f31dc --- /dev/null +++ b/tests/hlsl/raster-order-resource.slang @@ -0,0 +1,50 @@ +//TEST:SIMPLE(filecheck=SPIRV): -target spirv -fvk-use-entrypoint-name +//TEST:SIMPLE(filecheck=METAL): -target metal +//TEST:SIMPLE(filecheck=METALASM): -target metallib + + +// METAL-DAG: {{.*}}{{\[\[}}raster_order_group(0){{\]\]}} {{\[\[}}buffer(0) +// METAL-DAG: {{.*}}{{\[\[}}raster_order_group(0){{\]\]}} {{\[\[}}texture(0) +// METAL-DAG: {{.*}}{{\[\[}}raster_order_group(0){{\]\]}} {{\[\[}}buffer(1) + +// METALASM: @fragMain + +RasterizerOrderedByteAddressBuffer buffer; + +[shader("fragment")] +float4 fragMain() : SV_Target +{ + // SPIRV: %fragMain_0 = OpFunction + // SPIRV: OpBeginInvocationInterlockEXT + // SPIRV: OpEndInvocationInterlockEXT + + buffer.Store(0, 0x12345678); + return float4(1, 0, 0, 1); +} + +RasterizerOrderedTexture2D tex; + +[shader("fragment")] +float4 fragMain2() : SV_Target +{ + // SPIRV: %fragMain2_0 = OpFunction + // SPIRV: OpBeginInvocationInterlockEXT + // SPIRV: OpEndInvocationInterlockEXT + + tex[uint2(0, 0)] = float4(1, 0, 0, 1); + return float4(1, 0, 0, 1); +} + +RasterizerOrderedStructuredBuffer<float> buffer2; + +[shader("fragment")] +float4 fragMain3() : SV_Target +{ + // SPIRV: %fragMain3_0 = OpFunction + // SPIRV: OpBeginInvocationInterlockEXT + // SPIRV: OpEndInvocationInterlockEXT + + buffer2[0] = 1; + return float4(1, 0, 0, 1); +} + |
