summaryrefslogtreecommitdiff
path: root/tests/hlsl/consume-structured-buffer.slang
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2023-10-18 06:26:00 +0800
committerGitHub <noreply@github.com>2023-10-17 15:26:00 -0700
commit7826afcaad78cc33c976bb3db3cdc9eada4c77e8 (patch)
tree7a89a54512a4cbab6165d2c4b7906f88a032bbee /tests/hlsl/consume-structured-buffer.slang
parent0a3683dd39fc04d15937b8a4700d477f9492c257 (diff)
Type layouts for structured buffers with counters (#3269)
* More tests for append structured buffer * Append and Consume structured buffer tests for DX12 * neaten * test wobble * Add counter layout information to append/consume structured buffers * add getRWStructuredBufferType * Correct definition of get size for append/consume structured buffers * tweak append structured buffer test * Allow initializing counter buffer in render test * vulkan test for consume structured buffer * Handle null counterVarLayout in getExplicitCounterBindingRangeOffset * remove dead code * Implement atomic counter increment/decrement for spirv * explicit spirv test * Add missing check on result * Hold on to counter resources --------- Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'tests/hlsl/consume-structured-buffer.slang')
-rw-r--r--tests/hlsl/consume-structured-buffer.slang50
1 files changed, 24 insertions, 26 deletions
diff --git a/tests/hlsl/consume-structured-buffer.slang b/tests/hlsl/consume-structured-buffer.slang
index 3027b4184..352fd6dac 100644
--- a/tests/hlsl/consume-structured-buffer.slang
+++ b/tests/hlsl/consume-structured-buffer.slang
@@ -1,35 +1,33 @@
+//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=BUF):-dx12 -use-dxil -compute -output-using-type
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX(filecheck-buffer=BUF):-vk -compute -output-using-type
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX(filecheck-buffer=BUF):-vk -compute -output-using-type -emit-spirv-directly
-//TEST:SIMPLE(filecheck=GLSL):-target glsl -profile glsl_450 -stage compute -entry computeMain
-//TEST:SIMPLE(filecheck=SPIRV):-target spirv -profile glsl_450 -stage compute -entry computeMain
-
-//DISABLED_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -output-using-type -xslang -fvk-use-gl-layout
-
-//TEST_INPUT:ubuffer(data=[0], stride=4):out,name=outputBuffer
+//TEST_INPUT:ubuffer(data=[0 0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<float> outputBuffer;
-ConsumeStructuredBuffer<float2> consumeBuffer;
+// To check that our counter-initialization works correctly, set the initial
+// counter to 6 instead of 8, so we'll start reading from 6.0 downwards
+//TEST_INPUT:set consumeBuffer = ubuffer(data=[1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0], stride=4, counter=6)
+ConsumeStructuredBuffer<float> consumeBuffer;
-// GLSL: layout(std430, binding = 1) buffer StructuredBuffer_float2_t
-// GLSL: vec2 _data[];
-// GLSL: } consumeBuffer_elements_0
+[numthreads(4, 1, 1)]
+void computeMain(uint i : SV_GroupIndex)
+{
+ uint size, stride;
+ consumeBuffer.GetDimensions(size, stride);
-// GLSL: layout(std430, binding = 2) buffer StructuredBuffer_int_t
-// GLSL: int _data[];
-// GLSL: } consumeBuffer_counter
+ if(i == 0)
+ outputBuffer[0] = size;
-// GLSL: vec2 ConsumeStructuredBuffer_Consume_0()
-// GLSL: int [[COUNTER:[A-Za-z0-9_]+]] = atomicAdd(consumeBuffer_counter_0._data[0], -1);
-// GLSL: int [[COUNTER1:[A-Za-z0-9_]+]] = [[COUNTER]] - 1;
-// GLSL: if{{\s?}}([[COUNTER1]] >= 0)
-// GLSL: return consumeBuffer_elements_0._data{{\[}}[[COUNTER1]]{{\]}};
-// GLSL: else
-// GLSL: return vec2(0.0);
+ outputBuffer[i+1] = consumeBuffer.Consume();
-// SPIRV: OpEntryPoint
+ // BUF: type: float
+ // The total size of the ConsumeStructuredBuffer (from GetDimensions)
+ // BUF: 8.0
-[numthreads(1, 1, 1)]
-void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
-{
- var v = consumeBuffer.Consume();
- outputBuffer[dispatchThreadID.x] = v.x; // expect 1.0
+ // The values from consumeBuffer in any order
+ // BUF-DAG: 6.0
+ // BUF-DAG: 4.0
+ // BUF-DAG: 5.0
+ // BUF-DAG: 3.0
}