diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/compute/half-opaque-convert.slang | 28 | ||||
| -rw-r--r-- | tests/compute/half-opaque-convert.slang.expected.txt | 4 |
2 files changed, 32 insertions, 0 deletions
diff --git a/tests/compute/half-opaque-convert.slang b/tests/compute/half-opaque-convert.slang new file mode 100644 index 000000000..caf1f47e6 --- /dev/null +++ b/tests/compute/half-opaque-convert.slang @@ -0,0 +1,28 @@ +//DISABLE_TEST(compute):COMPARE_COMPUTE:-dx12 -compute -use-dxil -profile cs_6_2 -render-features half -shaderobj +//DISABLE_TEST(compute):COMPARE_COMPUTE:-vk -compute -profile cs_6_2 -render-features half -shaderobj +//TEST(compute):COMPARE_COMPUTE:-cuda -compute -render-features half -shaderobj + +//DISABLE_TEST(compute):SIMPLE:-target ptx -stage compute -entry computeMain + +// The following test shows if half can be processed as an opaque type. This means +// it can be copied, and converted to and from float types, but nothing else. +// No maths, no swizzling. + +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer +RWStructuredBuffer<float> outputBuffer; + +[numthreads(4, 1, 1)] +void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + uint tid = dispatchThreadID.x; + + float a = (1.0f / 2.0f) * tid.x; + + // Convert into half + half ha = f32tof16_(a); + // Convert back to float + float fa = f16tof32(ha); + + // Write it out + outputBuffer[tid] = fa; +}
\ No newline at end of file diff --git a/tests/compute/half-opaque-convert.slang.expected.txt b/tests/compute/half-opaque-convert.slang.expected.txt new file mode 100644 index 000000000..12bb9a952 --- /dev/null +++ b/tests/compute/half-opaque-convert.slang.expected.txt @@ -0,0 +1,4 @@ +0 +3F000000 +3F800000 +3FC00000 |
