summaryrefslogtreecommitdiff
path: root/tests/compute
diff options
context:
space:
mode:
Diffstat (limited to 'tests/compute')
-rw-r--r--tests/compute/half-texture.slang41
-rw-r--r--tests/compute/half-texture.slang.1.expected51
-rw-r--r--tests/compute/half-texture.slang.expected185
3 files changed, 277 insertions, 0 deletions
diff --git a/tests/compute/half-texture.slang b/tests/compute/half-texture.slang
new file mode 100644
index 000000000..635336c66
--- /dev/null
+++ b/tests/compute/half-texture.slang
@@ -0,0 +1,41 @@
+//TEST:SIMPLE: -target spirv -entry computeMain -profile cs_6_2
+//TEST:SIMPLE: -target hlsl -entry computeMain -profile cs_6_2
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=16):dxbinding(0),glbinding(0),out
+RWStructuredBuffer<int> outputBuffer;
+
+//TEST_INPUT: Texture2D(size=4):dxbinding(1),glbinding(1)
+RWTexture2D<half> halfTexture;
+//TEST_INPUT: Texture2D(size=4):dxbinding(2),glbinding(2)
+RWTexture2D<half2> halfTexture2;
+//TEST_INPUT: Texture2D(size=4):dxbinding(3),glbinding(3)
+RWTexture2D<half4> halfTexture4;
+
+//TEST_INPUT: Sampler : dxbinding(0),glbinding(0)
+SamplerState s;
+
+[numthreads(4, 4, 1)]
+void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
+{
+ int2 pos = int2(dispatchThreadID.xy);
+ float2 uv = pos * (1.0f / 3.0f);
+ int2 pos2 = int2(3 - pos.y, 3 - pos.x);
+
+#if 0
+ half h = halfTexture.Sample(s, uv);
+ half2 h2 = halfTexture2.Sample(s, uv);
+ half4 h4 = halfTexture4.Sample(s, uv);
+#else
+ half h = halfTexture[pos2];
+ half2 h2 = halfTexture2[pos2];
+ half4 h4 = halfTexture4[pos2];
+#endif
+
+ // Store a results
+ halfTexture[pos] = h2.x + h2.y;
+ halfTexture2[pos] = h4.xy;
+ halfTexture4[pos] = half4(h2, h, h);
+
+ int index = pos.x + pos.y * 4;
+ outputBuffer[index] = index;
+} \ No newline at end of file
diff --git a/tests/compute/half-texture.slang.1.expected b/tests/compute/half-texture.slang.1.expected
new file mode 100644
index 000000000..5d3f84e74
--- /dev/null
+++ b/tests/compute/half-texture.slang.1.expected
@@ -0,0 +1,51 @@
+result code = 0
+standard error = {
+}
+standard output = {
+#pragma pack_matrix(column_major)
+
+#line 18 "tests/compute/half-texture.slang"
+RWTexture2D<half > halfTexture_0 : register(u1);
+
+
+#line 30
+RWTexture2D<vector<half,2> > halfTexture2_0 : register(u2);
+
+
+#line 31
+RWTexture2D<vector<half,4> > halfTexture4_0 : register(u3);
+
+
+#line 40
+RWStructuredBuffer<int > outputBuffer_0 : register(u0);
+
+
+#line 18
+[shader("compute")][numthreads(4, 4, 1)]
+void computeMain(vector<uint,3> dispatchThreadID_0 : SV_DISPATCHTHREADID)
+{
+
+#line 20
+ vector<int,2> pos_0 = (vector<int,2>) dispatchThreadID_0.xy;
+ float _S1 = 1.00000000000000000000 / 3.00000000000000000000;
+ vector<int,2> pos2_0 = vector<int,2>(3 - pos_0.y, 3 - pos_0.x);
+
+#line 29
+ half h_0 = halfTexture_0[(vector<uint,2>) pos2_0];
+ vector<half,2> h2_0 = halfTexture2_0[(vector<uint,2>) pos2_0];
+ vector<half,4> h4_0 = halfTexture4_0[(vector<uint,2>) pos2_0];
+
+
+
+ halfTexture_0[(vector<uint,2>) pos_0] = h2_0.x + h2_0.y;
+ halfTexture2_0[(vector<uint,2>) pos_0] = h4_0.xy;
+ halfTexture4_0[(vector<uint,2>) pos_0] = vector<half,4>(h2_0, h_0, h_0);
+
+ int index_0 = pos_0.x + pos_0.y * 4;
+ outputBuffer_0[(uint) index_0] = index_0;
+
+#line 18
+ return;
+}
+
+}
diff --git a/tests/compute/half-texture.slang.expected b/tests/compute/half-texture.slang.expected
new file mode 100644
index 000000000..dc8d5dcbe
--- /dev/null
+++ b/tests/compute/half-texture.slang.expected
@@ -0,0 +1,185 @@
+result code = 0
+standard error = {
+}
+standard output = {
+// Module Version 10000
+// Generated by (magic number): 80007
+// Id's are bound by 129
+
+ Capability Shader
+ Capability Float16
+ Capability StorageImageExtendedFormats
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 13
+ ExecutionMode 4 LocalSize 4 4 1
+ Source GLSL 450
+ SourceExtension "GL_EXT_shader_16bit_storage"
+ SourceExtension "GL_GOOGLE_cpp_style_line_directive"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types"
+ Name 4 "main"
+ Name 9 "pos_0"
+ Name 13 "gl_GlobalInvocationID"
+ Name 22 "pos2_0"
+ Name 36 "h_0"
+ Name 40 "halfTexture_0"
+ Name 51 "h2_0"
+ Name 54 "halfTexture2_0"
+ Name 65 "h4_0"
+ Name 68 "halfTexture4_0"
+ Name 108 "index_0"
+ Name 117 "_S1"
+ MemberName 117(_S1) 0 "_data"
+ Name 119 "outputBuffer_0"
+ Decorate 13(gl_GlobalInvocationID) BuiltIn GlobalInvocationId
+ Decorate 40(halfTexture_0) DescriptorSet 0
+ Decorate 40(halfTexture_0) Binding 1
+ Decorate 54(halfTexture2_0) DescriptorSet 0
+ Decorate 54(halfTexture2_0) Binding 2
+ Decorate 68(halfTexture4_0) DescriptorSet 0
+ Decorate 68(halfTexture4_0) Binding 3
+ Decorate 116 ArrayStride 4
+ MemberDecorate 117(_S1) 0 Offset 0
+ Decorate 117(_S1) BufferBlock
+ Decorate 119(outputBuffer_0) DescriptorSet 0
+ Decorate 119(outputBuffer_0) Binding 0
+ Decorate 128 BuiltIn WorkgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7: TypeVector 6(int) 2
+ 8: TypePointer Function 7(ivec2)
+ 10: TypeInt 32 0
+ 11: TypeVector 10(int) 3
+ 12: TypePointer Input 11(ivec3)
+13(gl_GlobalInvocationID): 12(ptr) Variable Input
+ 19: TypeVector 10(int) 2
+ 23: 6(int) Constant 3
+ 24: 10(int) Constant 1
+ 25: TypePointer Function 6(int)
+ 29: 10(int) Constant 0
+ 34: TypeFloat 16
+ 35: TypePointer Function 34(float16_t)
+ 37: TypeFloat 32
+ 38: TypeImage 37(float) 2D nonsampled format:R16f
+ 39: TypePointer UniformConstant 38
+40(halfTexture_0): 39(ptr) Variable UniformConstant
+ 45: TypeVector 37(float) 4
+ 49: TypeVector 34(float16_t) 2
+ 50: TypePointer Function 49(f16vec2)
+ 52: TypeImage 37(float) 2D nonsampled format:Rg16f
+ 53: TypePointer UniformConstant 52
+54(halfTexture2_0): 53(ptr) Variable UniformConstant
+ 60: TypeVector 37(float) 2
+ 63: TypeVector 34(float16_t) 4
+ 64: TypePointer Function 63(f16vec4)
+ 66: TypeImage 37(float) 2D nonsampled format:Rgba16f
+ 67: TypePointer UniformConstant 66
+68(halfTexture4_0): 67(ptr) Variable UniformConstant
+ 84:34(float16_t) Constant 0
+ 113: 6(int) Constant 4
+ 116: TypeRuntimeArray 6(int)
+ 117(_S1): TypeStruct 116
+ 118: TypePointer Uniform 117(_S1)
+119(outputBuffer_0): 118(ptr) Variable Uniform
+ 120: 6(int) Constant 0
+ 124: TypePointer Uniform 6(int)
+ 127: 10(int) Constant 4
+ 128: 11(ivec3) ConstantComposite 127 127 24
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(pos_0): 8(ptr) Variable Function
+ 22(pos2_0): 8(ptr) Variable Function
+ 36(h_0): 35(ptr) Variable Function
+ 51(h2_0): 50(ptr) Variable Function
+ 65(h4_0): 64(ptr) Variable Function
+ 108(index_0): 25(ptr) Variable Function
+ 14: 11(ivec3) Load 13(gl_GlobalInvocationID)
+ 15: 10(int) CompositeExtract 14 0
+ 16: 10(int) CompositeExtract 14 1
+ 17: 10(int) CompositeExtract 14 2
+ 18: 11(ivec3) CompositeConstruct 15 16 17
+ 20: 19(ivec2) VectorShuffle 18 18 0 1
+ 21: 7(ivec2) Bitcast 20
+ Store 9(pos_0) 21
+ 26: 25(ptr) AccessChain 9(pos_0) 24
+ 27: 6(int) Load 26
+ 28: 6(int) ISub 23 27
+ 30: 25(ptr) AccessChain 9(pos_0) 29
+ 31: 6(int) Load 30
+ 32: 6(int) ISub 23 31
+ 33: 7(ivec2) CompositeConstruct 28 32
+ Store 22(pos2_0) 33
+ 41: 38 Load 40(halfTexture_0)
+ 42: 7(ivec2) Load 22(pos2_0)
+ 43: 19(ivec2) Bitcast 42
+ 44: 7(ivec2) Bitcast 43
+ 46: 45(fvec4) ImageRead 41 44
+ 47: 37(float) CompositeExtract 46 0
+ 48:34(float16_t) FConvert 47
+ Store 36(h_0) 48
+ 55: 52 Load 54(halfTexture2_0)
+ 56: 7(ivec2) Load 22(pos2_0)
+ 57: 19(ivec2) Bitcast 56
+ 58: 7(ivec2) Bitcast 57
+ 59: 45(fvec4) ImageRead 55 58
+ 61: 60(fvec2) VectorShuffle 59 59 0 1
+ 62: 49(f16vec2) FConvert 61
+ Store 51(h2_0) 62
+ 69: 66 Load 68(halfTexture4_0)
+ 70: 7(ivec2) Load 22(pos2_0)
+ 71: 19(ivec2) Bitcast 70
+ 72: 7(ivec2) Bitcast 71
+ 73: 45(fvec4) ImageRead 69 72
+ 74: 63(f16vec4) FConvert 73
+ Store 65(h4_0) 74
+ 75: 38 Load 40(halfTexture_0)
+ 76: 7(ivec2) Load 9(pos_0)
+ 77: 19(ivec2) Bitcast 76
+ 78: 7(ivec2) Bitcast 77
+ 79: 35(ptr) AccessChain 51(h2_0) 29
+ 80:34(float16_t) Load 79
+ 81: 35(ptr) AccessChain 51(h2_0) 24
+ 82:34(float16_t) Load 81
+ 83:34(float16_t) FAdd 80 82
+ 85: 63(f16vec4) CompositeConstruct 83 84 84 84
+ 86: 45(fvec4) FConvert 85
+ ImageWrite 75 78 86
+ 87: 52 Load 54(halfTexture2_0)
+ 88: 7(ivec2) Load 9(pos_0)
+ 89: 19(ivec2) Bitcast 88
+ 90: 7(ivec2) Bitcast 89
+ 91: 63(f16vec4) Load 65(h4_0)
+ 92: 49(f16vec2) VectorShuffle 91 91 0 1
+ 93:34(float16_t) CompositeExtract 92 0
+ 94:34(float16_t) CompositeExtract 92 1
+ 95: 63(f16vec4) CompositeConstruct 93 94 84 84
+ 96: 45(fvec4) FConvert 95
+ ImageWrite 87 90 96
+ 97: 66 Load 68(halfTexture4_0)
+ 98: 7(ivec2) Load 9(pos_0)
+ 99: 19(ivec2) Bitcast 98
+ 100: 7(ivec2) Bitcast 99
+ 101: 49(f16vec2) Load 51(h2_0)
+ 102:34(float16_t) Load 36(h_0)
+ 103:34(float16_t) Load 36(h_0)
+ 104:34(float16_t) CompositeExtract 101 0
+ 105:34(float16_t) CompositeExtract 101 1
+ 106: 63(f16vec4) CompositeConstruct 104 105 102 103
+ 107: 45(fvec4) FConvert 106
+ ImageWrite 97 100 107
+ 109: 25(ptr) AccessChain 9(pos_0) 29
+ 110: 6(int) Load 109
+ 111: 25(ptr) AccessChain 9(pos_0) 24
+ 112: 6(int) Load 111
+ 114: 6(int) IMul 112 113
+ 115: 6(int) IAdd 110 114
+ Store 108(index_0) 115
+ 121: 6(int) Load 108(index_0)
+ 122: 10(int) Bitcast 121
+ 123: 6(int) Load 108(index_0)
+ 125: 124(ptr) AccessChain 119(outputBuffer_0) 120 122
+ Store 125 123
+ Return
+ FunctionEnd
+}