diff options
Diffstat (limited to 'tests/compute')
| -rw-r--r-- | tests/compute/half-texture.slang | 41 | ||||
| -rw-r--r-- | tests/compute/half-texture.slang.1.expected | 51 | ||||
| -rw-r--r-- | tests/compute/half-texture.slang.expected | 185 |
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 +} |
