diff options
Diffstat (limited to 'tests')
3 files changed, 60 insertions, 3 deletions
diff --git a/tests/compute/interface-shader-param-in-struct.slang b/tests/compute/interface-shader-param-in-struct.slang index 62aa093ed..5080e4d57 100644 --- a/tests/compute/interface-shader-param-in-struct.slang +++ b/tests/compute/interface-shader-param-in-struct.slang @@ -3,9 +3,9 @@ // This test puts interface-type shader parameters // inside of structure types to make sure that works -//DISABLED_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -//DISABLED_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile sm_6_0 -use-dxil -//DISABLED_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute +//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute +//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile sm_6_0 -use-dxil +//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute // A lot of the setup is the same as for `interface-shader-param`, // so look there if you want the comments. diff --git a/tests/language-feature/shader-params/interface-shader-param-ordinary.slang b/tests/language-feature/shader-params/interface-shader-param-ordinary.slang new file mode 100644 index 000000000..8d475254f --- /dev/null +++ b/tests/language-feature/shader-params/interface-shader-param-ordinary.slang @@ -0,0 +1,53 @@ +// interface-shader-param-ordinary.slang + +// This test is for interface-type shader parameters that +// get specialized to types that include "ordinary" data +// but also don't fit into the allocation provided for +// them in the existential-type field itself. + +//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute +//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile sm_6_0 -use-dxil +//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute + +interface IModifier +{ + int modify(int value); +} + +//TEST_INPUT:set gOutputBuffer = out ubuffer(data=[0 0 0 0], stride=4) +RWStructuredBuffer<int> gOutputBuffer; + +//TEST_INPUT:set delta = 65536 +uniform int delta; + +//TEST_INPUT:set gModifier = new MyModifier{ ubuffer(data=[4 3 2 1], stride=4), 3 } } +uniform IModifier gModifier; + +int test(int val) +{ + return gModifier.modify(val) + delta; +} + + +[numthreads(4, 1, 1)] +void computeMain( + uint3 dispatchThreadID : SV_DispatchThreadID) +{ + let tid = dispatchThreadID.x; + + let inputVal : int = tid; + let outputVal = test(inputVal); + + gOutputBuffer[tid] = outputVal; +} + +struct MyModifier : IModifier +{ + RWStructuredBuffer<int> data; + int extra; + + int modify(int val) + { + return val*65536 + data[val]*256 + val*extra; + } +} diff --git a/tests/language-feature/shader-params/interface-shader-param-ordinary.slang.expected.txt b/tests/language-feature/shader-params/interface-shader-param-ordinary.slang.expected.txt new file mode 100644 index 000000000..434576d50 --- /dev/null +++ b/tests/language-feature/shader-params/interface-shader-param-ordinary.slang.expected.txt @@ -0,0 +1,4 @@ +10400 +20303 +30206 +40109 |
