From 0ce1131ba12f777fbaa40004e0e3e7af89ccf4f0 Mon Sep 17 00:00:00 2001 From: Tim Foley Date: Tue, 21 Aug 2018 08:40:25 -0700 Subject: Add support for more RasterizerOrdered types (#628) Fixes #627 The front-end has support for `RasterizerOrderedBuffer` and `RasterizerOrderedTexture*`, but left out support for: * `RasterizerOrderedByteAddressBuffer` * `RasterizerOrderedStructuredBuffer` [Nitpick: these tyeps are all amazingly annoying to type. It is easy to want to write `RasterOrdered` instead of the bulkier `RasterizerOrdered`, and almost everybody does in casual speech. There's already the issue of wanting to type `StructureBuffer` (a buffer of structures) instead of `StructuredBuffer` (a buffer that is... structured?). Then you have `ByteAddressBuffer` which is just adding to the confusion because it is nominally a "byte addressable" buffer (so that `ByteAddressedBuffer` would actually make sense), but then actually *isn't* byte addressable in practice.] There were a few `TODO` comments related to this already, and this change was mostly a matter of doing a find-in-files for `RWByteAddressBuffer` and `RWStructuredBuffer` and adding matching `RasterizerOrdered` cases. The test I added just checks that these types make it through the front-end, and doesn't do any actual confirmation that they work as intended. It is worth noting that the handling of ordering in GLSL/VK is different from in HLSL ("pixel shader interlock" instead of "rasterizer ordered views"), so coming up with a cross-compilation story would need to be a later step. --- tests/front-end/rasterizer-ordered-uav.slang | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 tests/front-end/rasterizer-ordered-uav.slang (limited to 'tests') diff --git a/tests/front-end/rasterizer-ordered-uav.slang b/tests/front-end/rasterizer-ordered-uav.slang new file mode 100644 index 000000000..368dcc4e9 --- /dev/null +++ b/tests/front-end/rasterizer-ordered-uav.slang @@ -0,0 +1,20 @@ +// rasterizer-ordered-uav.slang +//TEST:SIMPLE: + +// Confirm that the `RasterizerOrdered*` types are supported + +struct S { float4 a; } + +RasterizerOrderedBuffer b0; +RasterizerOrderedByteAddressBuffer b1; +RasterizerOrderedStructuredBuffer b2; +RasterizerOrderedTexture1D b3; +RasterizerOrderedTexture1DArray b4; +RasterizerOrderedTexture2D b5; +RasterizerOrderedTexture2DArray b6; +RasterizerOrderedTexture3D b7; + + +float4 test(uint4 coord, float4 value) +{ +} \ No newline at end of file -- cgit v1.2.3