HLSL: Add gather, improve proto generator machine for upcoming 2DMS/Shadow

This commit is contained in:
LoopDawg 2016-07-22 08:28:11 -06:00
parent 630e1bc636
commit a2f3d285a8
15 changed files with 2266 additions and 329 deletions

View File

@ -0,0 +1,359 @@
hlsl.gather.array.dx10.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:44 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:24 Function Parameters:
0:? Sequence
0:29 Sequence
0:29 move second child to first child (temp 4-component vector of float)
0:29 'txval20' (temp 4-component vector of float)
0:29 textureGather (global 4-component vector of float)
0:29 Construct combined texture-sampler (temp sampler2DArray)
0:29 'g_tTex2df4a' (uniform texture2DArray)
0:29 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
0:? 0.200000
0:? 0.300000
0:30 Sequence
0:30 move second child to first child (temp 4-component vector of int)
0:30 'txval21' (temp 4-component vector of int)
0:30 textureGather (global 4-component vector of int)
0:30 Construct combined texture-sampler (temp isampler2DArray)
0:30 'g_tTex2di4a' (uniform itexture2DArray)
0:30 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.300000
0:? 0.400000
0:? 0.500000
0:31 Sequence
0:31 move second child to first child (temp 4-component vector of uint)
0:31 'txval22' (temp 4-component vector of uint)
0:31 textureGather (global 4-component vector of uint)
0:31 Construct combined texture-sampler (temp usampler2DArray)
0:31 'g_tTex2du4a' (uniform utexture2DArray)
0:31 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.500000
0:? 0.600000
0:? 0.700000
0:35 Sequence
0:35 move second child to first child (temp 4-component vector of float)
0:35 'txval40' (temp 4-component vector of float)
0:35 textureGather (global 4-component vector of float)
0:35 Construct combined texture-sampler (temp samplerCubeArray)
0:35 'g_tTexcdf4a' (uniform textureCubeArray)
0:35 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
0:? 0.200000
0:? 0.300000
0:? 0.400000
0:36 Sequence
0:36 move second child to first child (temp 4-component vector of int)
0:36 'txval41' (temp 4-component vector of int)
0:36 textureGather (global 4-component vector of int)
0:36 Construct combined texture-sampler (temp isamplerCubeArray)
0:36 'g_tTexcdi4a' (uniform itextureCubeArray)
0:36 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.400000
0:? 0.500000
0:? 0.600000
0:? 0.700000
0:37 Sequence
0:37 move second child to first child (temp 4-component vector of uint)
0:37 'txval42' (temp 4-component vector of uint)
0:37 textureGather (global 4-component vector of uint)
0:37 Construct combined texture-sampler (temp usamplerCubeArray)
0:37 'g_tTexcdu4a' (uniform utextureCubeArray)
0:37 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.700000
0:? 0.800000
0:? 0.900000
0:? 1.000000
0:40 move second child to first child (temp float)
0:40 Depth: direct index for structure (temp float FragDepth)
0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 1.000000
0:42 Branch: Return with expression
0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:? Linker Objects
0:? 'g_sSamp' (uniform sampler)
0:? 'g_tTex1df4a' (uniform texture1DArray)
0:? 'g_tTex1df4' (uniform texture1DArray)
0:? 'g_tTex1di4a' (uniform itexture1DArray)
0:? 'g_tTex1du4a' (uniform utexture1DArray)
0:? 'g_tTex2df4a' (uniform texture2DArray)
0:? 'g_tTex2di4a' (uniform itexture2DArray)
0:? 'g_tTex2du4a' (uniform utexture2DArray)
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:44 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:24 Function Parameters:
0:? Sequence
0:29 Sequence
0:29 move second child to first child (temp 4-component vector of float)
0:29 'txval20' (temp 4-component vector of float)
0:29 textureGather (global 4-component vector of float)
0:29 Construct combined texture-sampler (temp sampler2DArray)
0:29 'g_tTex2df4a' (uniform texture2DArray)
0:29 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
0:? 0.200000
0:? 0.300000
0:30 Sequence
0:30 move second child to first child (temp 4-component vector of int)
0:30 'txval21' (temp 4-component vector of int)
0:30 textureGather (global 4-component vector of int)
0:30 Construct combined texture-sampler (temp isampler2DArray)
0:30 'g_tTex2di4a' (uniform itexture2DArray)
0:30 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.300000
0:? 0.400000
0:? 0.500000
0:31 Sequence
0:31 move second child to first child (temp 4-component vector of uint)
0:31 'txval22' (temp 4-component vector of uint)
0:31 textureGather (global 4-component vector of uint)
0:31 Construct combined texture-sampler (temp usampler2DArray)
0:31 'g_tTex2du4a' (uniform utexture2DArray)
0:31 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.500000
0:? 0.600000
0:? 0.700000
0:35 Sequence
0:35 move second child to first child (temp 4-component vector of float)
0:35 'txval40' (temp 4-component vector of float)
0:35 textureGather (global 4-component vector of float)
0:35 Construct combined texture-sampler (temp samplerCubeArray)
0:35 'g_tTexcdf4a' (uniform textureCubeArray)
0:35 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
0:? 0.200000
0:? 0.300000
0:? 0.400000
0:36 Sequence
0:36 move second child to first child (temp 4-component vector of int)
0:36 'txval41' (temp 4-component vector of int)
0:36 textureGather (global 4-component vector of int)
0:36 Construct combined texture-sampler (temp isamplerCubeArray)
0:36 'g_tTexcdi4a' (uniform itextureCubeArray)
0:36 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.400000
0:? 0.500000
0:? 0.600000
0:? 0.700000
0:37 Sequence
0:37 move second child to first child (temp 4-component vector of uint)
0:37 'txval42' (temp 4-component vector of uint)
0:37 textureGather (global 4-component vector of uint)
0:37 Construct combined texture-sampler (temp usamplerCubeArray)
0:37 'g_tTexcdu4a' (uniform utextureCubeArray)
0:37 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.700000
0:? 0.800000
0:? 0.900000
0:? 1.000000
0:40 move second child to first child (temp float)
0:40 Depth: direct index for structure (temp float FragDepth)
0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 1.000000
0:42 Branch: Return with expression
0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:? Linker Objects
0:? 'g_sSamp' (uniform sampler)
0:? 'g_tTex1df4a' (uniform texture1DArray)
0:? 'g_tTex1df4' (uniform texture1DArray)
0:? 'g_tTex1di4a' (uniform itexture1DArray)
0:? 'g_tTex1du4a' (uniform utexture1DArray)
0:? 'g_tTex2df4a' (uniform texture2DArray)
0:? 'g_tTex2di4a' (uniform itexture2DArray)
0:? 'g_tTex2du4a' (uniform utexture2DArray)
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 108
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "main"
Name 9 "txval20"
Name 12 "g_tTex2df4a"
Name 16 "g_sSamp"
Name 30 "txval21"
Name 33 "g_tTex2di4a"
Name 45 "txval22"
Name 48 "g_tTex2du4a"
Name 57 "txval40"
Name 60 "g_tTexcdf4a"
Name 67 "txval41"
Name 70 "g_tTexcdi4a"
Name 77 "txval42"
Name 80 "g_tTexcdu4a"
Name 90 "PS_OUTPUT"
MemberName 90(PS_OUTPUT) 0 "Color"
MemberName 90(PS_OUTPUT) 1 "Depth"
Name 92 "psout"
Name 100 "g_tTex1df4a"
Name 101 "g_tTex1df4"
Name 104 "g_tTex1di4a"
Name 107 "g_tTex1du4a"
Decorate 12(g_tTex2df4a) DescriptorSet 0
Decorate 16(g_sSamp) DescriptorSet 0
Decorate 33(g_tTex2di4a) DescriptorSet 0
Decorate 48(g_tTex2du4a) DescriptorSet 0
Decorate 60(g_tTexcdf4a) DescriptorSet 0
Decorate 70(g_tTexcdi4a) DescriptorSet 0
Decorate 80(g_tTexcdu4a) DescriptorSet 0
MemberDecorate 90(PS_OUTPUT) 1 BuiltIn FragDepth
Decorate 100(g_tTex1df4a) DescriptorSet 0
Decorate 101(g_tTex1df4) DescriptorSet 0
Decorate 104(g_tTex1di4a) DescriptorSet 0
Decorate 107(g_tTex1du4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
10: TypeImage 6(float) 2D array sampled format:Unknown
11: TypePointer UniformConstant 10
12(g_tTex2df4a): 11(ptr) Variable UniformConstant
14: TypeSampler
15: TypePointer UniformConstant 14
16(g_sSamp): 15(ptr) Variable UniformConstant
18: TypeSampledImage 10
20: TypeVector 6(float) 3
21: 6(float) Constant 1036831949
22: 6(float) Constant 1045220557
23: 6(float) Constant 1050253722
24: 20(fvec3) ConstantComposite 21 22 23
25: TypeInt 32 1
26: 25(int) Constant 0
28: TypeVector 25(int) 4
29: TypePointer Function 28(ivec4)
31: TypeImage 25(int) 2D array sampled format:Unknown
32: TypePointer UniformConstant 31
33(g_tTex2di4a): 32(ptr) Variable UniformConstant
36: TypeSampledImage 31
38: 6(float) Constant 1053609165
39: 6(float) Constant 1056964608
40: 20(fvec3) ConstantComposite 23 38 39
42: TypeInt 32 0
43: TypeVector 42(int) 4
44: TypePointer Function 43(ivec4)
46: TypeImage 42(int) 2D array sampled format:Unknown
47: TypePointer UniformConstant 46
48(g_tTex2du4a): 47(ptr) Variable UniformConstant
51: TypeSampledImage 46
53: 6(float) Constant 1058642330
54: 6(float) Constant 1060320051
55: 20(fvec3) ConstantComposite 39 53 54
58: TypeImage 6(float) Cube array sampled format:Unknown
59: TypePointer UniformConstant 58
60(g_tTexcdf4a): 59(ptr) Variable UniformConstant
63: TypeSampledImage 58
65: 7(fvec4) ConstantComposite 21 22 23 38
68: TypeImage 25(int) Cube array sampled format:Unknown
69: TypePointer UniformConstant 68
70(g_tTexcdi4a): 69(ptr) Variable UniformConstant
73: TypeSampledImage 68
75: 7(fvec4) ConstantComposite 38 39 53 54
78: TypeImage 42(int) Cube array sampled format:Unknown
79: TypePointer UniformConstant 78
80(g_tTexcdu4a): 79(ptr) Variable UniformConstant
83: TypeSampledImage 78
85: 6(float) Constant 1061997773
86: 6(float) Constant 1063675494
87: 6(float) Constant 1065353216
88: 7(fvec4) ConstantComposite 54 85 86 87
90(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
91: TypePointer Function 90(PS_OUTPUT)
93: 25(int) Constant 1
94: TypePointer Function 6(float)
98: TypeImage 6(float) 1D array sampled format:Unknown
99: TypePointer UniformConstant 98
100(g_tTex1df4a): 99(ptr) Variable UniformConstant
101(g_tTex1df4): 99(ptr) Variable UniformConstant
102: TypeImage 25(int) 1D array sampled format:Unknown
103: TypePointer UniformConstant 102
104(g_tTex1di4a): 103(ptr) Variable UniformConstant
105: TypeImage 42(int) 1D array sampled format:Unknown
106: TypePointer UniformConstant 105
107(g_tTex1du4a): 106(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval20): 8(ptr) Variable Function
30(txval21): 29(ptr) Variable Function
45(txval22): 44(ptr) Variable Function
57(txval40): 8(ptr) Variable Function
67(txval41): 29(ptr) Variable Function
77(txval42): 44(ptr) Variable Function
92(psout): 91(ptr) Variable Function
13: 10 Load 12(g_tTex2df4a)
17: 14 Load 16(g_sSamp)
19: 18 SampledImage 13 17
27: 7(fvec4) ImageGather 19 24 26
Store 9(txval20) 27
34: 31 Load 33(g_tTex2di4a)
35: 14 Load 16(g_sSamp)
37: 36 SampledImage 34 35
41: 28(ivec4) ImageGather 37 40 26
Store 30(txval21) 41
49: 46 Load 48(g_tTex2du4a)
50: 14 Load 16(g_sSamp)
52: 51 SampledImage 49 50
56: 43(ivec4) ImageGather 52 55 26
Store 45(txval22) 56
61: 58 Load 60(g_tTexcdf4a)
62: 14 Load 16(g_sSamp)
64: 63 SampledImage 61 62
66: 7(fvec4) ImageGather 64 65 26
Store 57(txval40) 66
71: 68 Load 70(g_tTexcdi4a)
72: 14 Load 16(g_sSamp)
74: 73 SampledImage 71 72
76: 28(ivec4) ImageGather 74 75 26
Store 67(txval41) 76
81: 78 Load 80(g_tTexcdu4a)
82: 14 Load 16(g_sSamp)
84: 83 SampledImage 81 82
89: 43(ivec4) ImageGather 84 88 26
Store 77(txval42) 89
95: 94(ptr) AccessChain 92(psout) 93
Store 95 87
96:90(PS_OUTPUT) Load 92(psout)
ReturnValue 96
FunctionEnd

View File

@ -0,0 +1,373 @@
hlsl.gather.basic.dx10.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:49 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:29 Function Parameters:
0:? Sequence
0:34 Sequence
0:34 move second child to first child (temp 4-component vector of float)
0:34 'txval20' (temp 4-component vector of float)
0:34 textureGather (global 4-component vector of float)
0:34 Construct combined texture-sampler (temp sampler2D)
0:34 'g_tTex2df4' (uniform texture2D)
0:34 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
0:? 0.200000
0:35 Sequence
0:35 move second child to first child (temp 4-component vector of int)
0:35 'txval21' (temp 4-component vector of int)
0:35 textureGather (global 4-component vector of int)
0:35 Construct combined texture-sampler (temp isampler2D)
0:35 'g_tTex2di4' (uniform itexture2D)
0:35 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.300000
0:? 0.400000
0:36 Sequence
0:36 move second child to first child (temp 4-component vector of uint)
0:36 'txval22' (temp 4-component vector of uint)
0:36 textureGather (global 4-component vector of uint)
0:36 Construct combined texture-sampler (temp usampler2D)
0:36 'g_tTex2du4' (uniform utexture2D)
0:36 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.500000
0:? 0.600000
0:40 Sequence
0:40 move second child to first child (temp 4-component vector of float)
0:40 'txval40' (temp 4-component vector of float)
0:40 textureGather (global 4-component vector of float)
0:40 Construct combined texture-sampler (temp samplerCube)
0:40 'g_tTexcdf4' (uniform textureCube)
0:40 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
0:? 0.200000
0:? 0.300000
0:41 Sequence
0:41 move second child to first child (temp 4-component vector of int)
0:41 'txval41' (temp 4-component vector of int)
0:41 textureGather (global 4-component vector of int)
0:41 Construct combined texture-sampler (temp isamplerCube)
0:41 'g_tTexcdi4' (uniform itextureCube)
0:41 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.400000
0:? 0.500000
0:? 0.600000
0:42 Sequence
0:42 move second child to first child (temp 4-component vector of uint)
0:42 'txval42' (temp 4-component vector of uint)
0:42 textureGather (global 4-component vector of uint)
0:42 Construct combined texture-sampler (temp usamplerCube)
0:42 'g_tTexcdu4' (uniform utextureCube)
0:42 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.700000
0:? 0.800000
0:? 0.900000
0:45 move second child to first child (temp float)
0:45 Depth: direct index for structure (temp float FragDepth)
0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:45 Constant:
0:45 1 (const int)
0:45 Constant:
0:45 1.000000
0:47 Branch: Return with expression
0:47 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:? Linker Objects
0:? 'g_sSamp' (uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
0:? 'g_tTex1df4a' (uniform texture1D)
0:? 'g_tTex1df4' (uniform texture1D)
0:? 'g_tTex1di4' (uniform itexture1D)
0:? 'g_tTex1du4' (uniform utexture1D)
0:? 'g_tTex2df4' (uniform texture2D)
0:? 'g_tTex2di4' (uniform itexture2D)
0:? 'g_tTex2du4' (uniform utexture2D)
0:? 'g_tTex3df4' (uniform texture3D)
0:? 'g_tTex3di4' (uniform itexture3D)
0:? 'g_tTex3du4' (uniform utexture3D)
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:49 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:29 Function Parameters:
0:? Sequence
0:34 Sequence
0:34 move second child to first child (temp 4-component vector of float)
0:34 'txval20' (temp 4-component vector of float)
0:34 textureGather (global 4-component vector of float)
0:34 Construct combined texture-sampler (temp sampler2D)
0:34 'g_tTex2df4' (uniform texture2D)
0:34 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
0:? 0.200000
0:35 Sequence
0:35 move second child to first child (temp 4-component vector of int)
0:35 'txval21' (temp 4-component vector of int)
0:35 textureGather (global 4-component vector of int)
0:35 Construct combined texture-sampler (temp isampler2D)
0:35 'g_tTex2di4' (uniform itexture2D)
0:35 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.300000
0:? 0.400000
0:36 Sequence
0:36 move second child to first child (temp 4-component vector of uint)
0:36 'txval22' (temp 4-component vector of uint)
0:36 textureGather (global 4-component vector of uint)
0:36 Construct combined texture-sampler (temp usampler2D)
0:36 'g_tTex2du4' (uniform utexture2D)
0:36 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.500000
0:? 0.600000
0:40 Sequence
0:40 move second child to first child (temp 4-component vector of float)
0:40 'txval40' (temp 4-component vector of float)
0:40 textureGather (global 4-component vector of float)
0:40 Construct combined texture-sampler (temp samplerCube)
0:40 'g_tTexcdf4' (uniform textureCube)
0:40 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
0:? 0.200000
0:? 0.300000
0:41 Sequence
0:41 move second child to first child (temp 4-component vector of int)
0:41 'txval41' (temp 4-component vector of int)
0:41 textureGather (global 4-component vector of int)
0:41 Construct combined texture-sampler (temp isamplerCube)
0:41 'g_tTexcdi4' (uniform itextureCube)
0:41 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.400000
0:? 0.500000
0:? 0.600000
0:42 Sequence
0:42 move second child to first child (temp 4-component vector of uint)
0:42 'txval42' (temp 4-component vector of uint)
0:42 textureGather (global 4-component vector of uint)
0:42 Construct combined texture-sampler (temp usamplerCube)
0:42 'g_tTexcdu4' (uniform utextureCube)
0:42 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.700000
0:? 0.800000
0:? 0.900000
0:45 move second child to first child (temp float)
0:45 Depth: direct index for structure (temp float FragDepth)
0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:45 Constant:
0:45 1 (const int)
0:45 Constant:
0:45 1.000000
0:47 Branch: Return with expression
0:47 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:? Linker Objects
0:? 'g_sSamp' (uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
0:? 'g_tTex1df4a' (uniform texture1D)
0:? 'g_tTex1df4' (uniform texture1D)
0:? 'g_tTex1di4' (uniform itexture1D)
0:? 'g_tTex1du4' (uniform utexture1D)
0:? 'g_tTex2df4' (uniform texture2D)
0:? 'g_tTex2di4' (uniform itexture2D)
0:? 'g_tTex2du4' (uniform utexture2D)
0:? 'g_tTex3df4' (uniform texture3D)
0:? 'g_tTex3di4' (uniform itexture3D)
0:? 'g_tTex3du4' (uniform utexture3D)
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 119
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "main"
Name 9 "txval20"
Name 12 "g_tTex2df4"
Name 16 "g_sSamp"
Name 29 "txval21"
Name 32 "g_tTex2di4"
Name 44 "txval22"
Name 47 "g_tTex2du4"
Name 56 "txval40"
Name 59 "g_tTexcdf4"
Name 67 "txval41"
Name 70 "g_tTexcdi4"
Name 77 "txval42"
Name 80 "g_tTexcdu4"
Name 90 "PS_OUTPUT"
MemberName 90(PS_OUTPUT) 0 "Color"
MemberName 90(PS_OUTPUT) 1 "Depth"
Name 92 "psout"
Name 99 "g_sSamp2d"
Name 102 "g_tTex1df4a"
Name 103 "g_tTex1df4"
Name 106 "g_tTex1di4"
Name 109 "g_tTex1du4"
Name 112 "g_tTex3df4"
Name 115 "g_tTex3di4"
Name 118 "g_tTex3du4"
Decorate 12(g_tTex2df4) DescriptorSet 0
Decorate 16(g_sSamp) DescriptorSet 0
Decorate 32(g_tTex2di4) DescriptorSet 0
Decorate 47(g_tTex2du4) DescriptorSet 0
Decorate 59(g_tTexcdf4) DescriptorSet 0
Decorate 70(g_tTexcdi4) DescriptorSet 0
Decorate 80(g_tTexcdu4) DescriptorSet 0
MemberDecorate 90(PS_OUTPUT) 1 BuiltIn FragDepth
Decorate 99(g_sSamp2d) DescriptorSet 0
Decorate 102(g_tTex1df4a) DescriptorSet 0
Decorate 103(g_tTex1df4) DescriptorSet 0
Decorate 106(g_tTex1di4) DescriptorSet 0
Decorate 109(g_tTex1du4) DescriptorSet 0
Decorate 112(g_tTex3df4) DescriptorSet 0
Decorate 115(g_tTex3di4) DescriptorSet 0
Decorate 118(g_tTex3du4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
10: TypeImage 6(float) 2D sampled format:Unknown
11: TypePointer UniformConstant 10
12(g_tTex2df4): 11(ptr) Variable UniformConstant
14: TypeSampler
15: TypePointer UniformConstant 14
16(g_sSamp): 15(ptr) Variable UniformConstant
18: TypeSampledImage 10
20: TypeVector 6(float) 2
21: 6(float) Constant 1036831949
22: 6(float) Constant 1045220557
23: 20(fvec2) ConstantComposite 21 22
24: TypeInt 32 1
25: 24(int) Constant 0
27: TypeVector 24(int) 4
28: TypePointer Function 27(ivec4)
30: TypeImage 24(int) 2D sampled format:Unknown
31: TypePointer UniformConstant 30
32(g_tTex2di4): 31(ptr) Variable UniformConstant
35: TypeSampledImage 30
37: 6(float) Constant 1050253722
38: 6(float) Constant 1053609165
39: 20(fvec2) ConstantComposite 37 38
41: TypeInt 32 0
42: TypeVector 41(int) 4
43: TypePointer Function 42(ivec4)
45: TypeImage 41(int) 2D sampled format:Unknown
46: TypePointer UniformConstant 45
47(g_tTex2du4): 46(ptr) Variable UniformConstant
50: TypeSampledImage 45
52: 6(float) Constant 1056964608
53: 6(float) Constant 1058642330
54: 20(fvec2) ConstantComposite 52 53
57: TypeImage 6(float) Cube sampled format:Unknown
58: TypePointer UniformConstant 57
59(g_tTexcdf4): 58(ptr) Variable UniformConstant
62: TypeSampledImage 57
64: TypeVector 6(float) 3
65: 64(fvec3) ConstantComposite 21 22 37
68: TypeImage 24(int) Cube sampled format:Unknown
69: TypePointer UniformConstant 68
70(g_tTexcdi4): 69(ptr) Variable UniformConstant
73: TypeSampledImage 68
75: 64(fvec3) ConstantComposite 38 52 53
78: TypeImage 41(int) Cube sampled format:Unknown
79: TypePointer UniformConstant 78
80(g_tTexcdu4): 79(ptr) Variable UniformConstant
83: TypeSampledImage 78
85: 6(float) Constant 1060320051
86: 6(float) Constant 1061997773
87: 6(float) Constant 1063675494
88: 64(fvec3) ConstantComposite 85 86 87
90(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
91: TypePointer Function 90(PS_OUTPUT)
93: 24(int) Constant 1
94: 6(float) Constant 1065353216
95: TypePointer Function 6(float)
99(g_sSamp2d): 15(ptr) Variable UniformConstant
100: TypeImage 6(float) 1D sampled format:Unknown
101: TypePointer UniformConstant 100
102(g_tTex1df4a): 101(ptr) Variable UniformConstant
103(g_tTex1df4): 101(ptr) Variable UniformConstant
104: TypeImage 24(int) 1D sampled format:Unknown
105: TypePointer UniformConstant 104
106(g_tTex1di4): 105(ptr) Variable UniformConstant
107: TypeImage 41(int) 1D sampled format:Unknown
108: TypePointer UniformConstant 107
109(g_tTex1du4): 108(ptr) Variable UniformConstant
110: TypeImage 6(float) 3D sampled format:Unknown
111: TypePointer UniformConstant 110
112(g_tTex3df4): 111(ptr) Variable UniformConstant
113: TypeImage 24(int) 3D sampled format:Unknown
114: TypePointer UniformConstant 113
115(g_tTex3di4): 114(ptr) Variable UniformConstant
116: TypeImage 41(int) 3D sampled format:Unknown
117: TypePointer UniformConstant 116
118(g_tTex3du4): 117(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval20): 8(ptr) Variable Function
29(txval21): 28(ptr) Variable Function
44(txval22): 43(ptr) Variable Function
56(txval40): 8(ptr) Variable Function
67(txval41): 28(ptr) Variable Function
77(txval42): 43(ptr) Variable Function
92(psout): 91(ptr) Variable Function
13: 10 Load 12(g_tTex2df4)
17: 14 Load 16(g_sSamp)
19: 18 SampledImage 13 17
26: 7(fvec4) ImageGather 19 23 25
Store 9(txval20) 26
33: 30 Load 32(g_tTex2di4)
34: 14 Load 16(g_sSamp)
36: 35 SampledImage 33 34
40: 27(ivec4) ImageGather 36 39 25
Store 29(txval21) 40
48: 45 Load 47(g_tTex2du4)
49: 14 Load 16(g_sSamp)
51: 50 SampledImage 48 49
55: 42(ivec4) ImageGather 51 54 25
Store 44(txval22) 55
60: 57 Load 59(g_tTexcdf4)
61: 14 Load 16(g_sSamp)
63: 62 SampledImage 60 61
66: 7(fvec4) ImageGather 63 65 25
Store 56(txval40) 66
71: 68 Load 70(g_tTexcdi4)
72: 14 Load 16(g_sSamp)
74: 73 SampledImage 71 72
76: 27(ivec4) ImageGather 74 75 25
Store 67(txval41) 76
81: 78 Load 80(g_tTexcdu4)
82: 14 Load 16(g_sSamp)
84: 83 SampledImage 81 82
89: 42(ivec4) ImageGather 84 88 25
Store 77(txval42) 89
96: 95(ptr) AccessChain 92(psout) 93
Store 96 94
97:90(PS_OUTPUT) Load 92(psout)
ReturnValue 97
FunctionEnd

View File

@ -0,0 +1,374 @@
hlsl.gather.basic.dx10.vert
Shader version: 450
0:? Sequence
0:47 Function Definition: main( (global structure{temp 4-component vector of float FragCoord Pos})
0:28 Function Parameters:
0:? Sequence
0:33 Sequence
0:33 move second child to first child (temp 4-component vector of float)
0:33 'txval20' (temp 4-component vector of float)
0:33 textureGather (global 4-component vector of float)
0:33 Construct combined texture-sampler (temp sampler2D)
0:33 'g_tTex2df4' (uniform texture2D)
0:33 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
0:? 0.200000
0:34 Sequence
0:34 move second child to first child (temp 4-component vector of int)
0:34 'txval21' (temp 4-component vector of int)
0:34 textureGather (global 4-component vector of int)
0:34 Construct combined texture-sampler (temp isampler2D)
0:34 'g_tTex2di4' (uniform itexture2D)
0:34 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.300000
0:? 0.400000
0:35 Sequence
0:35 move second child to first child (temp 4-component vector of uint)
0:35 'txval22' (temp 4-component vector of uint)
0:35 textureGather (global 4-component vector of uint)
0:35 Construct combined texture-sampler (temp usampler2D)
0:35 'g_tTex2du4' (uniform utexture2D)
0:35 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.500000
0:? 0.600000
0:39 Sequence
0:39 move second child to first child (temp 4-component vector of float)
0:39 'txval40' (temp 4-component vector of float)
0:39 textureGather (global 4-component vector of float)
0:39 Construct combined texture-sampler (temp samplerCube)
0:39 'g_tTexcdf4' (uniform textureCube)
0:39 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
0:? 0.200000
0:? 0.300000
0:40 Sequence
0:40 move second child to first child (temp 4-component vector of int)
0:40 'txval41' (temp 4-component vector of int)
0:40 textureGather (global 4-component vector of int)
0:40 Construct combined texture-sampler (temp isamplerCube)
0:40 'g_tTexcdi4' (uniform itextureCube)
0:40 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.400000
0:? 0.500000
0:? 0.600000
0:41 Sequence
0:41 move second child to first child (temp 4-component vector of uint)
0:41 'txval42' (temp 4-component vector of uint)
0:41 textureGather (global 4-component vector of uint)
0:41 Construct combined texture-sampler (temp usamplerCube)
0:41 'g_tTexcdu4' (uniform utextureCube)
0:41 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.700000
0:? 0.800000
0:? 0.900000
0:43 move second child to first child (temp 4-component vector of float)
0:43 Pos: direct index for structure (temp 4-component vector of float FragCoord)
0:43 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
0:43 Constant:
0:43 0 (const int)
0:? Constant:
0:? 0.000000
0:? 0.000000
0:? 0.000000
0:? 0.000000
0:45 Branch: Return with expression
0:45 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
0:? Linker Objects
0:? 'g_sSamp' (uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
0:? 'g_tTex1df4a' (uniform texture1D)
0:? 'g_tTex1df4' (uniform texture1D)
0:? 'g_tTex1di4' (uniform itexture1D)
0:? 'g_tTex1du4' (uniform utexture1D)
0:? 'g_tTex2df4' (uniform texture2D)
0:? 'g_tTex2di4' (uniform itexture2D)
0:? 'g_tTex2du4' (uniform utexture2D)
0:? 'g_tTex3df4' (uniform texture3D)
0:? 'g_tTex3di4' (uniform itexture3D)
0:? 'g_tTex3du4' (uniform utexture3D)
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
Linked vertex stage:
Shader version: 450
0:? Sequence
0:47 Function Definition: main( (global structure{temp 4-component vector of float FragCoord Pos})
0:28 Function Parameters:
0:? Sequence
0:33 Sequence
0:33 move second child to first child (temp 4-component vector of float)
0:33 'txval20' (temp 4-component vector of float)
0:33 textureGather (global 4-component vector of float)
0:33 Construct combined texture-sampler (temp sampler2D)
0:33 'g_tTex2df4' (uniform texture2D)
0:33 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
0:? 0.200000
0:34 Sequence
0:34 move second child to first child (temp 4-component vector of int)
0:34 'txval21' (temp 4-component vector of int)
0:34 textureGather (global 4-component vector of int)
0:34 Construct combined texture-sampler (temp isampler2D)
0:34 'g_tTex2di4' (uniform itexture2D)
0:34 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.300000
0:? 0.400000
0:35 Sequence
0:35 move second child to first child (temp 4-component vector of uint)
0:35 'txval22' (temp 4-component vector of uint)
0:35 textureGather (global 4-component vector of uint)
0:35 Construct combined texture-sampler (temp usampler2D)
0:35 'g_tTex2du4' (uniform utexture2D)
0:35 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.500000
0:? 0.600000
0:39 Sequence
0:39 move second child to first child (temp 4-component vector of float)
0:39 'txval40' (temp 4-component vector of float)
0:39 textureGather (global 4-component vector of float)
0:39 Construct combined texture-sampler (temp samplerCube)
0:39 'g_tTexcdf4' (uniform textureCube)
0:39 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
0:? 0.200000
0:? 0.300000
0:40 Sequence
0:40 move second child to first child (temp 4-component vector of int)
0:40 'txval41' (temp 4-component vector of int)
0:40 textureGather (global 4-component vector of int)
0:40 Construct combined texture-sampler (temp isamplerCube)
0:40 'g_tTexcdi4' (uniform itextureCube)
0:40 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.400000
0:? 0.500000
0:? 0.600000
0:41 Sequence
0:41 move second child to first child (temp 4-component vector of uint)
0:41 'txval42' (temp 4-component vector of uint)
0:41 textureGather (global 4-component vector of uint)
0:41 Construct combined texture-sampler (temp usamplerCube)
0:41 'g_tTexcdu4' (uniform utextureCube)
0:41 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.700000
0:? 0.800000
0:? 0.900000
0:43 move second child to first child (temp 4-component vector of float)
0:43 Pos: direct index for structure (temp 4-component vector of float FragCoord)
0:43 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
0:43 Constant:
0:43 0 (const int)
0:? Constant:
0:? 0.000000
0:? 0.000000
0:? 0.000000
0:? 0.000000
0:45 Branch: Return with expression
0:45 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
0:? Linker Objects
0:? 'g_sSamp' (uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
0:? 'g_tTex1df4a' (uniform texture1D)
0:? 'g_tTex1df4' (uniform texture1D)
0:? 'g_tTex1di4' (uniform itexture1D)
0:? 'g_tTex1du4' (uniform utexture1D)
0:? 'g_tTex2df4' (uniform texture2D)
0:? 'g_tTex2di4' (uniform itexture2D)
0:? 'g_tTex2du4' (uniform utexture2D)
0:? 'g_tTex3df4' (uniform texture3D)
0:? 'g_tTex3di4' (uniform itexture3D)
0:? 'g_tTex3du4' (uniform utexture3D)
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 118
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main"
Source HLSL 450
Name 4 "main"
Name 9 "txval20"
Name 12 "g_tTex2df4"
Name 16 "g_sSamp"
Name 29 "txval21"
Name 32 "g_tTex2di4"
Name 44 "txval22"
Name 47 "g_tTex2du4"
Name 56 "txval40"
Name 59 "g_tTexcdf4"
Name 67 "txval41"
Name 70 "g_tTexcdi4"
Name 77 "txval42"
Name 80 "g_tTexcdu4"
Name 90 "VS_OUTPUT"
MemberName 90(VS_OUTPUT) 0 "Pos"
Name 92 "vsout"
Name 98 "g_sSamp2d"
Name 101 "g_tTex1df4a"
Name 102 "g_tTex1df4"
Name 105 "g_tTex1di4"
Name 108 "g_tTex1du4"
Name 111 "g_tTex3df4"
Name 114 "g_tTex3di4"
Name 117 "g_tTex3du4"
Decorate 12(g_tTex2df4) DescriptorSet 0
Decorate 16(g_sSamp) DescriptorSet 0
Decorate 32(g_tTex2di4) DescriptorSet 0
Decorate 47(g_tTex2du4) DescriptorSet 0
Decorate 59(g_tTexcdf4) DescriptorSet 0
Decorate 70(g_tTexcdi4) DescriptorSet 0
Decorate 80(g_tTexcdu4) DescriptorSet 0
MemberDecorate 90(VS_OUTPUT) 0 BuiltIn FragCoord
Decorate 98(g_sSamp2d) DescriptorSet 0
Decorate 101(g_tTex1df4a) DescriptorSet 0
Decorate 102(g_tTex1df4) DescriptorSet 0
Decorate 105(g_tTex1di4) DescriptorSet 0
Decorate 108(g_tTex1du4) DescriptorSet 0
Decorate 111(g_tTex3df4) DescriptorSet 0
Decorate 114(g_tTex3di4) DescriptorSet 0
Decorate 117(g_tTex3du4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
10: TypeImage 6(float) 2D sampled format:Unknown
11: TypePointer UniformConstant 10
12(g_tTex2df4): 11(ptr) Variable UniformConstant
14: TypeSampler
15: TypePointer UniformConstant 14
16(g_sSamp): 15(ptr) Variable UniformConstant
18: TypeSampledImage 10
20: TypeVector 6(float) 2
21: 6(float) Constant 1036831949
22: 6(float) Constant 1045220557
23: 20(fvec2) ConstantComposite 21 22
24: TypeInt 32 1
25: 24(int) Constant 0
27: TypeVector 24(int) 4
28: TypePointer Function 27(ivec4)
30: TypeImage 24(int) 2D sampled format:Unknown
31: TypePointer UniformConstant 30
32(g_tTex2di4): 31(ptr) Variable UniformConstant
35: TypeSampledImage 30
37: 6(float) Constant 1050253722
38: 6(float) Constant 1053609165
39: 20(fvec2) ConstantComposite 37 38
41: TypeInt 32 0
42: TypeVector 41(int) 4
43: TypePointer Function 42(ivec4)
45: TypeImage 41(int) 2D sampled format:Unknown
46: TypePointer UniformConstant 45
47(g_tTex2du4): 46(ptr) Variable UniformConstant
50: TypeSampledImage 45
52: 6(float) Constant 1056964608
53: 6(float) Constant 1058642330
54: 20(fvec2) ConstantComposite 52 53
57: TypeImage 6(float) Cube sampled format:Unknown
58: TypePointer UniformConstant 57
59(g_tTexcdf4): 58(ptr) Variable UniformConstant
62: TypeSampledImage 57
64: TypeVector 6(float) 3
65: 64(fvec3) ConstantComposite 21 22 37
68: TypeImage 24(int) Cube sampled format:Unknown
69: TypePointer UniformConstant 68
70(g_tTexcdi4): 69(ptr) Variable UniformConstant
73: TypeSampledImage 68
75: 64(fvec3) ConstantComposite 38 52 53
78: TypeImage 41(int) Cube sampled format:Unknown
79: TypePointer UniformConstant 78
80(g_tTexcdu4): 79(ptr) Variable UniformConstant
83: TypeSampledImage 78
85: 6(float) Constant 1060320051
86: 6(float) Constant 1061997773
87: 6(float) Constant 1063675494
88: 64(fvec3) ConstantComposite 85 86 87
90(VS_OUTPUT): TypeStruct 7(fvec4)
91: TypePointer Function 90(VS_OUTPUT)
93: 6(float) Constant 0
94: 7(fvec4) ConstantComposite 93 93 93 93
98(g_sSamp2d): 15(ptr) Variable UniformConstant
99: TypeImage 6(float) 1D sampled format:Unknown
100: TypePointer UniformConstant 99
101(g_tTex1df4a): 100(ptr) Variable UniformConstant
102(g_tTex1df4): 100(ptr) Variable UniformConstant
103: TypeImage 24(int) 1D sampled format:Unknown
104: TypePointer UniformConstant 103
105(g_tTex1di4): 104(ptr) Variable UniformConstant
106: TypeImage 41(int) 1D sampled format:Unknown
107: TypePointer UniformConstant 106
108(g_tTex1du4): 107(ptr) Variable UniformConstant
109: TypeImage 6(float) 3D sampled format:Unknown
110: TypePointer UniformConstant 109
111(g_tTex3df4): 110(ptr) Variable UniformConstant
112: TypeImage 24(int) 3D sampled format:Unknown
113: TypePointer UniformConstant 112
114(g_tTex3di4): 113(ptr) Variable UniformConstant
115: TypeImage 41(int) 3D sampled format:Unknown
116: TypePointer UniformConstant 115
117(g_tTex3du4): 116(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval20): 8(ptr) Variable Function
29(txval21): 28(ptr) Variable Function
44(txval22): 43(ptr) Variable Function
56(txval40): 8(ptr) Variable Function
67(txval41): 28(ptr) Variable Function
77(txval42): 43(ptr) Variable Function
92(vsout): 91(ptr) Variable Function
13: 10 Load 12(g_tTex2df4)
17: 14 Load 16(g_sSamp)
19: 18 SampledImage 13 17
26: 7(fvec4) ImageGather 19 23 25
Store 9(txval20) 26
33: 30 Load 32(g_tTex2di4)
34: 14 Load 16(g_sSamp)
36: 35 SampledImage 33 34
40: 27(ivec4) ImageGather 36 39 25
Store 29(txval21) 40
48: 45 Load 47(g_tTex2du4)
49: 14 Load 16(g_sSamp)
51: 50 SampledImage 48 49
55: 42(ivec4) ImageGather 51 54 25
Store 44(txval22) 55
60: 57 Load 59(g_tTexcdf4)
61: 14 Load 16(g_sSamp)
63: 62 SampledImage 60 61
66: 7(fvec4) ImageGather 63 65 25
Store 56(txval40) 66
71: 68 Load 70(g_tTexcdi4)
72: 14 Load 16(g_sSamp)
74: 73 SampledImage 71 72
76: 27(ivec4) ImageGather 74 75 25
Store 67(txval41) 76
81: 78 Load 80(g_tTexcdu4)
82: 14 Load 16(g_sSamp)
84: 83 SampledImage 81 82
89: 42(ivec4) ImageGather 84 88 25
Store 77(txval42) 89
95: 8(ptr) AccessChain 92(vsout) 25
Store 95 94
96:90(VS_OUTPUT) Load 92(vsout)
ReturnValue 96
FunctionEnd

View File

@ -0,0 +1,294 @@
hlsl.gather.offset.dx10.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:45 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:28 Function Parameters:
0:? Sequence
0:33 Sequence
0:33 move second child to first child (temp 4-component vector of float)
0:33 'txval20' (temp 4-component vector of float)
0:33 textureGatherOffset (global 4-component vector of float)
0:33 Construct combined texture-sampler (temp sampler2D)
0:33 'g_tTex2df4' (uniform texture2D)
0:33 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
0:? 0.200000
0:? Constant:
0:? 1 (const int)
0:? 0 (const int)
0:34 Sequence
0:34 move second child to first child (temp 4-component vector of int)
0:34 'txval21' (temp 4-component vector of int)
0:34 textureGatherOffset (global 4-component vector of int)
0:34 Construct combined texture-sampler (temp isampler2D)
0:34 'g_tTex2di4' (uniform itexture2D)
0:34 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.300000
0:? 0.400000
0:? Constant:
0:? 1 (const int)
0:? 1 (const int)
0:35 Sequence
0:35 move second child to first child (temp 4-component vector of uint)
0:35 'txval22' (temp 4-component vector of uint)
0:35 textureGatherOffset (global 4-component vector of uint)
0:35 Construct combined texture-sampler (temp usampler2D)
0:35 'g_tTex2du4' (uniform utexture2D)
0:35 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.500000
0:? 0.600000
0:? Constant:
0:? 1 (const int)
0:? -1 (const int)
0:41 move second child to first child (temp float)
0:41 Depth: direct index for structure (temp float FragDepth)
0:41 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:41 Constant:
0:41 1 (const int)
0:41 Constant:
0:41 1.000000
0:43 Branch: Return with expression
0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:? Linker Objects
0:? 'g_sSamp' (uniform sampler)
0:? 'g_tTex1df4a' (uniform texture1D)
0:? 'g_tTex1df4' (uniform texture1D)
0:? 'g_tTex1di4' (uniform itexture1D)
0:? 'g_tTex1du4' (uniform utexture1D)
0:? 'g_tTex2df4' (uniform texture2D)
0:? 'g_tTex2di4' (uniform itexture2D)
0:? 'g_tTex2du4' (uniform utexture2D)
0:? 'g_tTex3df4' (uniform texture3D)
0:? 'g_tTex3di4' (uniform itexture3D)
0:? 'g_tTex3du4' (uniform utexture3D)
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:45 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:28 Function Parameters:
0:? Sequence
0:33 Sequence
0:33 move second child to first child (temp 4-component vector of float)
0:33 'txval20' (temp 4-component vector of float)
0:33 textureGatherOffset (global 4-component vector of float)
0:33 Construct combined texture-sampler (temp sampler2D)
0:33 'g_tTex2df4' (uniform texture2D)
0:33 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
0:? 0.200000
0:? Constant:
0:? 1 (const int)
0:? 0 (const int)
0:34 Sequence
0:34 move second child to first child (temp 4-component vector of int)
0:34 'txval21' (temp 4-component vector of int)
0:34 textureGatherOffset (global 4-component vector of int)
0:34 Construct combined texture-sampler (temp isampler2D)
0:34 'g_tTex2di4' (uniform itexture2D)
0:34 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.300000
0:? 0.400000
0:? Constant:
0:? 1 (const int)
0:? 1 (const int)
0:35 Sequence
0:35 move second child to first child (temp 4-component vector of uint)
0:35 'txval22' (temp 4-component vector of uint)
0:35 textureGatherOffset (global 4-component vector of uint)
0:35 Construct combined texture-sampler (temp usampler2D)
0:35 'g_tTex2du4' (uniform utexture2D)
0:35 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.500000
0:? 0.600000
0:? Constant:
0:? 1 (const int)
0:? -1 (const int)
0:41 move second child to first child (temp float)
0:41 Depth: direct index for structure (temp float FragDepth)
0:41 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:41 Constant:
0:41 1 (const int)
0:41 Constant:
0:41 1.000000
0:43 Branch: Return with expression
0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:? Linker Objects
0:? 'g_sSamp' (uniform sampler)
0:? 'g_tTex1df4a' (uniform texture1D)
0:? 'g_tTex1df4' (uniform texture1D)
0:? 'g_tTex1di4' (uniform itexture1D)
0:? 'g_tTex1du4' (uniform utexture1D)
0:? 'g_tTex2df4' (uniform texture2D)
0:? 'g_tTex2di4' (uniform itexture2D)
0:? 'g_tTex2du4' (uniform utexture2D)
0:? 'g_tTex3df4' (uniform texture3D)
0:? 'g_tTex3di4' (uniform itexture3D)
0:? 'g_tTex3du4' (uniform utexture3D)
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 98
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "main"
Name 9 "txval20"
Name 12 "g_tTex2df4"
Name 16 "g_sSamp"
Name 32 "txval21"
Name 35 "g_tTex2di4"
Name 48 "txval22"
Name 51 "g_tTex2du4"
Name 62 "PS_OUTPUT"
MemberName 62(PS_OUTPUT) 0 "Color"
MemberName 62(PS_OUTPUT) 1 "Depth"
Name 64 "psout"
Name 72 "g_tTex1df4a"
Name 73 "g_tTex1df4"
Name 76 "g_tTex1di4"
Name 79 "g_tTex1du4"
Name 82 "g_tTex3df4"
Name 85 "g_tTex3di4"
Name 88 "g_tTex3du4"
Name 91 "g_tTexcdf4"
Name 94 "g_tTexcdi4"
Name 97 "g_tTexcdu4"
Decorate 12(g_tTex2df4) DescriptorSet 0
Decorate 16(g_sSamp) DescriptorSet 0
Decorate 35(g_tTex2di4) DescriptorSet 0
Decorate 51(g_tTex2du4) DescriptorSet 0
MemberDecorate 62(PS_OUTPUT) 1 BuiltIn FragDepth
Decorate 72(g_tTex1df4a) DescriptorSet 0
Decorate 73(g_tTex1df4) DescriptorSet 0
Decorate 76(g_tTex1di4) DescriptorSet 0
Decorate 79(g_tTex1du4) DescriptorSet 0
Decorate 82(g_tTex3df4) DescriptorSet 0
Decorate 85(g_tTex3di4) DescriptorSet 0
Decorate 88(g_tTex3du4) DescriptorSet 0
Decorate 91(g_tTexcdf4) DescriptorSet 0
Decorate 94(g_tTexcdi4) DescriptorSet 0
Decorate 97(g_tTexcdu4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
10: TypeImage 6(float) 2D sampled format:Unknown
11: TypePointer UniformConstant 10
12(g_tTex2df4): 11(ptr) Variable UniformConstant
14: TypeSampler
15: TypePointer UniformConstant 14
16(g_sSamp): 15(ptr) Variable UniformConstant
18: TypeSampledImage 10
20: TypeVector 6(float) 2
21: 6(float) Constant 1036831949
22: 6(float) Constant 1045220557
23: 20(fvec2) ConstantComposite 21 22
24: TypeInt 32 1
25: TypeVector 24(int) 2
26: 24(int) Constant 1
27: 24(int) Constant 0
28: 25(ivec2) ConstantComposite 26 27
30: TypeVector 24(int) 4
31: TypePointer Function 30(ivec4)
33: TypeImage 24(int) 2D sampled format:Unknown
34: TypePointer UniformConstant 33
35(g_tTex2di4): 34(ptr) Variable UniformConstant
38: TypeSampledImage 33
40: 6(float) Constant 1050253722
41: 6(float) Constant 1053609165
42: 20(fvec2) ConstantComposite 40 41
43: 25(ivec2) ConstantComposite 26 26
45: TypeInt 32 0
46: TypeVector 45(int) 4
47: TypePointer Function 46(ivec4)
49: TypeImage 45(int) 2D sampled format:Unknown
50: TypePointer UniformConstant 49
51(g_tTex2du4): 50(ptr) Variable UniformConstant
54: TypeSampledImage 49
56: 6(float) Constant 1056964608
57: 6(float) Constant 1058642330
58: 20(fvec2) ConstantComposite 56 57
59: 24(int) Constant 4294967295
60: 25(ivec2) ConstantComposite 26 59
62(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
63: TypePointer Function 62(PS_OUTPUT)
65: 6(float) Constant 1065353216
66: TypePointer Function 6(float)
70: TypeImage 6(float) 1D sampled format:Unknown
71: TypePointer UniformConstant 70
72(g_tTex1df4a): 71(ptr) Variable UniformConstant
73(g_tTex1df4): 71(ptr) Variable UniformConstant
74: TypeImage 24(int) 1D sampled format:Unknown
75: TypePointer UniformConstant 74
76(g_tTex1di4): 75(ptr) Variable UniformConstant
77: TypeImage 45(int) 1D sampled format:Unknown
78: TypePointer UniformConstant 77
79(g_tTex1du4): 78(ptr) Variable UniformConstant
80: TypeImage 6(float) 3D sampled format:Unknown
81: TypePointer UniformConstant 80
82(g_tTex3df4): 81(ptr) Variable UniformConstant
83: TypeImage 24(int) 3D sampled format:Unknown
84: TypePointer UniformConstant 83
85(g_tTex3di4): 84(ptr) Variable UniformConstant
86: TypeImage 45(int) 3D sampled format:Unknown
87: TypePointer UniformConstant 86
88(g_tTex3du4): 87(ptr) Variable UniformConstant
89: TypeImage 6(float) Cube sampled format:Unknown
90: TypePointer UniformConstant 89
91(g_tTexcdf4): 90(ptr) Variable UniformConstant
92: TypeImage 24(int) Cube sampled format:Unknown
93: TypePointer UniformConstant 92
94(g_tTexcdi4): 93(ptr) Variable UniformConstant
95: TypeImage 45(int) Cube sampled format:Unknown
96: TypePointer UniformConstant 95
97(g_tTexcdu4): 96(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval20): 8(ptr) Variable Function
32(txval21): 31(ptr) Variable Function
48(txval22): 47(ptr) Variable Function
64(psout): 63(ptr) Variable Function
13: 10 Load 12(g_tTex2df4)
17: 14 Load 16(g_sSamp)
19: 18 SampledImage 13 17
29: 7(fvec4) ImageGather 19 23 27 ConstOffset 28
Store 9(txval20) 29
36: 33 Load 35(g_tTex2di4)
37: 14 Load 16(g_sSamp)
39: 38 SampledImage 36 37
44: 30(ivec4) ImageGather 39 42 27 ConstOffset 43
Store 32(txval21) 44
52: 49 Load 51(g_tTex2du4)
53: 14 Load 16(g_sSamp)
55: 54 SampledImage 52 53
61: 46(ivec4) ImageGather 55 58 27 ConstOffset 60
Store 48(txval22) 61
67: 66(ptr) AccessChain 64(psout) 26
Store 67 65
68:62(PS_OUTPUT) Load 64(psout)
ReturnValue 68
FunctionEnd

View File

@ -0,0 +1,259 @@
hlsl.gather.offsetarray.dx10.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:37 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:20 Function Parameters:
0:? Sequence
0:25 Sequence
0:25 move second child to first child (temp 4-component vector of float)
0:25 'txval20' (temp 4-component vector of float)
0:25 textureGatherOffset (global 4-component vector of float)
0:25 Construct combined texture-sampler (temp sampler2DArray)
0:25 'g_tTex2df4' (uniform texture2DArray)
0:25 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
0:? 0.200000
0:? 0.300000
0:? Constant:
0:? 1 (const int)
0:? 0 (const int)
0:26 Sequence
0:26 move second child to first child (temp 4-component vector of int)
0:26 'txval21' (temp 4-component vector of int)
0:26 textureGatherOffset (global 4-component vector of int)
0:26 Construct combined texture-sampler (temp isampler2DArray)
0:26 'g_tTex2di4' (uniform itexture2DArray)
0:26 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.300000
0:? 0.400000
0:? 0.400000
0:? Constant:
0:? 1 (const int)
0:? 1 (const int)
0:27 Sequence
0:27 move second child to first child (temp 4-component vector of uint)
0:27 'txval22' (temp 4-component vector of uint)
0:27 textureGatherOffset (global 4-component vector of uint)
0:27 Construct combined texture-sampler (temp usampler2DArray)
0:27 'g_tTex2du4' (uniform utexture2DArray)
0:27 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.500000
0:? 0.600000
0:? 0.700000
0:? Constant:
0:? 1 (const int)
0:? -1 (const int)
0:33 move second child to first child (temp float)
0:33 Depth: direct index for structure (temp float FragDepth)
0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 1.000000
0:35 Branch: Return with expression
0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:? Linker Objects
0:? 'g_sSamp' (uniform sampler)
0:? 'g_tTex1df4a' (uniform texture1DArray)
0:? 'g_tTex1df4' (uniform texture1DArray)
0:? 'g_tTex1di4' (uniform itexture1DArray)
0:? 'g_tTex1du4' (uniform utexture1DArray)
0:? 'g_tTex2df4' (uniform texture2DArray)
0:? 'g_tTex2di4' (uniform itexture2DArray)
0:? 'g_tTex2du4' (uniform utexture2DArray)
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:37 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:20 Function Parameters:
0:? Sequence
0:25 Sequence
0:25 move second child to first child (temp 4-component vector of float)
0:25 'txval20' (temp 4-component vector of float)
0:25 textureGatherOffset (global 4-component vector of float)
0:25 Construct combined texture-sampler (temp sampler2DArray)
0:25 'g_tTex2df4' (uniform texture2DArray)
0:25 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
0:? 0.200000
0:? 0.300000
0:? Constant:
0:? 1 (const int)
0:? 0 (const int)
0:26 Sequence
0:26 move second child to first child (temp 4-component vector of int)
0:26 'txval21' (temp 4-component vector of int)
0:26 textureGatherOffset (global 4-component vector of int)
0:26 Construct combined texture-sampler (temp isampler2DArray)
0:26 'g_tTex2di4' (uniform itexture2DArray)
0:26 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.300000
0:? 0.400000
0:? 0.400000
0:? Constant:
0:? 1 (const int)
0:? 1 (const int)
0:27 Sequence
0:27 move second child to first child (temp 4-component vector of uint)
0:27 'txval22' (temp 4-component vector of uint)
0:27 textureGatherOffset (global 4-component vector of uint)
0:27 Construct combined texture-sampler (temp usampler2DArray)
0:27 'g_tTex2du4' (uniform utexture2DArray)
0:27 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.500000
0:? 0.600000
0:? 0.700000
0:? Constant:
0:? 1 (const int)
0:? -1 (const int)
0:33 move second child to first child (temp float)
0:33 Depth: direct index for structure (temp float FragDepth)
0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 1.000000
0:35 Branch: Return with expression
0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:? Linker Objects
0:? 'g_sSamp' (uniform sampler)
0:? 'g_tTex1df4a' (uniform texture1DArray)
0:? 'g_tTex1df4' (uniform texture1DArray)
0:? 'g_tTex1di4' (uniform itexture1DArray)
0:? 'g_tTex1du4' (uniform utexture1DArray)
0:? 'g_tTex2df4' (uniform texture2DArray)
0:? 'g_tTex2di4' (uniform itexture2DArray)
0:? 'g_tTex2du4' (uniform utexture2DArray)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 81
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "main"
Name 9 "txval20"
Name 12 "g_tTex2df4"
Name 16 "g_sSamp"
Name 33 "txval21"
Name 36 "g_tTex2di4"
Name 48 "txval22"
Name 51 "g_tTex2du4"
Name 63 "PS_OUTPUT"
MemberName 63(PS_OUTPUT) 0 "Color"
MemberName 63(PS_OUTPUT) 1 "Depth"
Name 65 "psout"
Name 73 "g_tTex1df4a"
Name 74 "g_tTex1df4"
Name 77 "g_tTex1di4"
Name 80 "g_tTex1du4"
Decorate 12(g_tTex2df4) DescriptorSet 0
Decorate 16(g_sSamp) DescriptorSet 0
Decorate 36(g_tTex2di4) DescriptorSet 0
Decorate 51(g_tTex2du4) DescriptorSet 0
MemberDecorate 63(PS_OUTPUT) 1 BuiltIn FragDepth
Decorate 73(g_tTex1df4a) DescriptorSet 0
Decorate 74(g_tTex1df4) DescriptorSet 0
Decorate 77(g_tTex1di4) DescriptorSet 0
Decorate 80(g_tTex1du4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
10: TypeImage 6(float) 2D array sampled format:Unknown
11: TypePointer UniformConstant 10
12(g_tTex2df4): 11(ptr) Variable UniformConstant
14: TypeSampler
15: TypePointer UniformConstant 14
16(g_sSamp): 15(ptr) Variable UniformConstant
18: TypeSampledImage 10
20: TypeVector 6(float) 3
21: 6(float) Constant 1036831949
22: 6(float) Constant 1045220557
23: 6(float) Constant 1050253722
24: 20(fvec3) ConstantComposite 21 22 23
25: TypeInt 32 1
26: TypeVector 25(int) 2
27: 25(int) Constant 1
28: 25(int) Constant 0
29: 26(ivec2) ConstantComposite 27 28
31: TypeVector 25(int) 4
32: TypePointer Function 31(ivec4)
34: TypeImage 25(int) 2D array sampled format:Unknown
35: TypePointer UniformConstant 34
36(g_tTex2di4): 35(ptr) Variable UniformConstant
39: TypeSampledImage 34
41: 6(float) Constant 1053609165
42: 20(fvec3) ConstantComposite 23 41 41
43: 26(ivec2) ConstantComposite 27 27
45: TypeInt 32 0
46: TypeVector 45(int) 4
47: TypePointer Function 46(ivec4)
49: TypeImage 45(int) 2D array sampled format:Unknown
50: TypePointer UniformConstant 49
51(g_tTex2du4): 50(ptr) Variable UniformConstant
54: TypeSampledImage 49
56: 6(float) Constant 1056964608
57: 6(float) Constant 1058642330
58: 6(float) Constant 1060320051
59: 20(fvec3) ConstantComposite 56 57 58
60: 25(int) Constant 4294967295
61: 26(ivec2) ConstantComposite 27 60
63(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
64: TypePointer Function 63(PS_OUTPUT)
66: 6(float) Constant 1065353216
67: TypePointer Function 6(float)
71: TypeImage 6(float) 1D array sampled format:Unknown
72: TypePointer UniformConstant 71
73(g_tTex1df4a): 72(ptr) Variable UniformConstant
74(g_tTex1df4): 72(ptr) Variable UniformConstant
75: TypeImage 25(int) 1D array sampled format:Unknown
76: TypePointer UniformConstant 75
77(g_tTex1di4): 76(ptr) Variable UniformConstant
78: TypeImage 45(int) 1D array sampled format:Unknown
79: TypePointer UniformConstant 78
80(g_tTex1du4): 79(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval20): 8(ptr) Variable Function
33(txval21): 32(ptr) Variable Function
48(txval22): 47(ptr) Variable Function
65(psout): 64(ptr) Variable Function
13: 10 Load 12(g_tTex2df4)
17: 14 Load 16(g_sSamp)
19: 18 SampledImage 13 17
30: 7(fvec4) ImageGather 19 24 28 ConstOffset 29
Store 9(txval20) 30
37: 34 Load 36(g_tTex2di4)
38: 14 Load 16(g_sSamp)
40: 39 SampledImage 37 38
44: 31(ivec4) ImageGather 40 42 28 ConstOffset 43
Store 33(txval21) 44
52: 49 Load 51(g_tTex2du4)
53: 14 Load 16(g_sSamp)
55: 54 SampledImage 52 53
62: 46(ivec4) ImageGather 55 59 28 ConstOffset 61
Store 48(txval22) 62
68: 67(ptr) AccessChain 65(psout) 27
Store 68 66
69:63(PS_OUTPUT) Load 65(psout)
ReturnValue 69
FunctionEnd

View File

@ -10,7 +10,7 @@ gl_FragCoord origin is upper left
0:27 'txval10' (temp 4-component vector of float)
0:27 textureLod (global 4-component vector of float)
0:27 Construct combined texture-sampler (temp sampler1DArray)
0:27 'g_tTex1df4' (uniform texture1DArray)
0:27 'g_tTex1df4a' (uniform texture1DArray)
0:27 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
@ -22,7 +22,7 @@ gl_FragCoord origin is upper left
0:28 'txval11' (temp 4-component vector of int)
0:28 textureLod (global 4-component vector of int)
0:28 Construct combined texture-sampler (temp isampler1DArray)
0:28 'g_tTex1di4' (uniform itexture1DArray)
0:28 'g_tTex1di4a' (uniform itexture1DArray)
0:28 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.200000
@ -34,7 +34,7 @@ gl_FragCoord origin is upper left
0:29 'txval12' (temp 4-component vector of uint)
0:29 textureLod (global 4-component vector of uint)
0:29 Construct combined texture-sampler (temp usampler1DArray)
0:29 'g_tTex1du4' (uniform utexture1DArray)
0:29 'g_tTex1du4a' (uniform utexture1DArray)
0:29 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.300000
@ -46,7 +46,7 @@ gl_FragCoord origin is upper left
0:31 'txval20' (temp 4-component vector of float)
0:31 textureLod (global 4-component vector of float)
0:31 Construct combined texture-sampler (temp sampler2DArray)
0:31 'g_tTex2df4' (uniform texture2DArray)
0:31 'g_tTex2df4a' (uniform texture2DArray)
0:31 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
@ -59,7 +59,7 @@ gl_FragCoord origin is upper left
0:32 'txval21' (temp 4-component vector of int)
0:32 textureLod (global 4-component vector of int)
0:32 Construct combined texture-sampler (temp isampler2DArray)
0:32 'g_tTex2di4' (uniform itexture2DArray)
0:32 'g_tTex2di4a' (uniform itexture2DArray)
0:32 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.300000
@ -72,7 +72,7 @@ gl_FragCoord origin is upper left
0:33 'txval22' (temp 4-component vector of uint)
0:33 textureLod (global 4-component vector of uint)
0:33 Construct combined texture-sampler (temp usampler2DArray)
0:33 'g_tTex2du4' (uniform utexture2DArray)
0:33 'g_tTex2du4a' (uniform utexture2DArray)
0:33 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.500000
@ -85,7 +85,7 @@ gl_FragCoord origin is upper left
0:35 'txval40' (temp 4-component vector of float)
0:35 textureLod (global 4-component vector of float)
0:35 Construct combined texture-sampler (temp samplerCubeArray)
0:35 'g_tTexcdf4' (uniform textureCubeArray)
0:35 'g_tTexcdf4a' (uniform textureCubeArray)
0:35 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
@ -99,7 +99,7 @@ gl_FragCoord origin is upper left
0:36 'txval41' (temp 4-component vector of int)
0:36 textureLod (global 4-component vector of int)
0:36 Construct combined texture-sampler (temp isamplerCubeArray)
0:36 'g_tTexcdi4' (uniform itextureCubeArray)
0:36 'g_tTexcdi4a' (uniform itextureCubeArray)
0:36 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.400000
@ -113,7 +113,7 @@ gl_FragCoord origin is upper left
0:37 'txval42' (temp 4-component vector of uint)
0:37 textureLod (global 4-component vector of uint)
0:37 Construct combined texture-sampler (temp usamplerCubeArray)
0:37 'g_tTexcdu4' (uniform utextureCubeArray)
0:37 'g_tTexcdu4a' (uniform utextureCubeArray)
0:37 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.700000
@ -135,14 +135,14 @@ gl_FragCoord origin is upper left
0:? 'g_sSamp' (uniform sampler)
0:? 'g_tTex1df4a' (uniform texture1DArray)
0:? 'g_tTex1df4' (uniform texture1DArray)
0:? 'g_tTex1di4' (uniform itexture1DArray)
0:? 'g_tTex1du4' (uniform utexture1DArray)
0:? 'g_tTex2df4' (uniform texture2DArray)
0:? 'g_tTex2di4' (uniform itexture2DArray)
0:? 'g_tTex2du4' (uniform utexture2DArray)
0:? 'g_tTexcdf4' (uniform textureCubeArray)
0:? 'g_tTexcdi4' (uniform itextureCubeArray)
0:? 'g_tTexcdu4' (uniform utextureCubeArray)
0:? 'g_tTex1di4a' (uniform itexture1DArray)
0:? 'g_tTex1du4a' (uniform utexture1DArray)
0:? 'g_tTex2df4a' (uniform texture2DArray)
0:? 'g_tTex2di4a' (uniform itexture2DArray)
0:? 'g_tTex2du4a' (uniform utexture2DArray)
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
Linked fragment stage:
@ -159,7 +159,7 @@ gl_FragCoord origin is upper left
0:27 'txval10' (temp 4-component vector of float)
0:27 textureLod (global 4-component vector of float)
0:27 Construct combined texture-sampler (temp sampler1DArray)
0:27 'g_tTex1df4' (uniform texture1DArray)
0:27 'g_tTex1df4a' (uniform texture1DArray)
0:27 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
@ -171,7 +171,7 @@ gl_FragCoord origin is upper left
0:28 'txval11' (temp 4-component vector of int)
0:28 textureLod (global 4-component vector of int)
0:28 Construct combined texture-sampler (temp isampler1DArray)
0:28 'g_tTex1di4' (uniform itexture1DArray)
0:28 'g_tTex1di4a' (uniform itexture1DArray)
0:28 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.200000
@ -183,7 +183,7 @@ gl_FragCoord origin is upper left
0:29 'txval12' (temp 4-component vector of uint)
0:29 textureLod (global 4-component vector of uint)
0:29 Construct combined texture-sampler (temp usampler1DArray)
0:29 'g_tTex1du4' (uniform utexture1DArray)
0:29 'g_tTex1du4a' (uniform utexture1DArray)
0:29 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.300000
@ -195,7 +195,7 @@ gl_FragCoord origin is upper left
0:31 'txval20' (temp 4-component vector of float)
0:31 textureLod (global 4-component vector of float)
0:31 Construct combined texture-sampler (temp sampler2DArray)
0:31 'g_tTex2df4' (uniform texture2DArray)
0:31 'g_tTex2df4a' (uniform texture2DArray)
0:31 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
@ -208,7 +208,7 @@ gl_FragCoord origin is upper left
0:32 'txval21' (temp 4-component vector of int)
0:32 textureLod (global 4-component vector of int)
0:32 Construct combined texture-sampler (temp isampler2DArray)
0:32 'g_tTex2di4' (uniform itexture2DArray)
0:32 'g_tTex2di4a' (uniform itexture2DArray)
0:32 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.300000
@ -221,7 +221,7 @@ gl_FragCoord origin is upper left
0:33 'txval22' (temp 4-component vector of uint)
0:33 textureLod (global 4-component vector of uint)
0:33 Construct combined texture-sampler (temp usampler2DArray)
0:33 'g_tTex2du4' (uniform utexture2DArray)
0:33 'g_tTex2du4a' (uniform utexture2DArray)
0:33 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.500000
@ -234,7 +234,7 @@ gl_FragCoord origin is upper left
0:35 'txval40' (temp 4-component vector of float)
0:35 textureLod (global 4-component vector of float)
0:35 Construct combined texture-sampler (temp samplerCubeArray)
0:35 'g_tTexcdf4' (uniform textureCubeArray)
0:35 'g_tTexcdf4a' (uniform textureCubeArray)
0:35 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.100000
@ -248,7 +248,7 @@ gl_FragCoord origin is upper left
0:36 'txval41' (temp 4-component vector of int)
0:36 textureLod (global 4-component vector of int)
0:36 Construct combined texture-sampler (temp isamplerCubeArray)
0:36 'g_tTexcdi4' (uniform itextureCubeArray)
0:36 'g_tTexcdi4a' (uniform itextureCubeArray)
0:36 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.400000
@ -262,7 +262,7 @@ gl_FragCoord origin is upper left
0:37 'txval42' (temp 4-component vector of uint)
0:37 textureLod (global 4-component vector of uint)
0:37 Construct combined texture-sampler (temp usamplerCubeArray)
0:37 'g_tTexcdu4' (uniform utextureCubeArray)
0:37 'g_tTexcdu4a' (uniform utextureCubeArray)
0:37 'g_sSamp' (uniform sampler)
0:? Constant:
0:? 0.700000
@ -284,14 +284,14 @@ gl_FragCoord origin is upper left
0:? 'g_sSamp' (uniform sampler)
0:? 'g_tTex1df4a' (uniform texture1DArray)
0:? 'g_tTex1df4' (uniform texture1DArray)
0:? 'g_tTex1di4' (uniform itexture1DArray)
0:? 'g_tTex1du4' (uniform utexture1DArray)
0:? 'g_tTex2df4' (uniform texture2DArray)
0:? 'g_tTex2di4' (uniform itexture2DArray)
0:? 'g_tTex2du4' (uniform utexture2DArray)
0:? 'g_tTexcdf4' (uniform textureCubeArray)
0:? 'g_tTexcdi4' (uniform itextureCubeArray)
0:? 'g_tTexcdu4' (uniform utextureCubeArray)
0:? 'g_tTex1di4a' (uniform itexture1DArray)
0:? 'g_tTex1du4a' (uniform utexture1DArray)
0:? 'g_tTex2df4a' (uniform texture2DArray)
0:? 'g_tTex2di4a' (uniform itexture2DArray)
0:? 'g_tTex2du4a' (uniform utexture2DArray)
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
// Module Version 10000
// Generated by (magic number): 80001
@ -307,41 +307,41 @@ gl_FragCoord origin is upper left
Source HLSL 450
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
Name 12 "g_tTex1df4a"
Name 16 "g_sSamp"
Name 29 "txval11"
Name 32 "g_tTex1di4"
Name 32 "g_tTex1di4a"
Name 43 "txval12"
Name 46 "g_tTex1du4"
Name 46 "g_tTex1du4a"
Name 54 "txval20"
Name 57 "g_tTex2df4"
Name 57 "g_tTex2df4a"
Name 65 "txval21"
Name 68 "g_tTex2di4"
Name 68 "g_tTex2di4a"
Name 76 "txval22"
Name 79 "g_tTex2du4"
Name 79 "g_tTex2du4a"
Name 88 "txval40"
Name 91 "g_tTexcdf4"
Name 91 "g_tTexcdf4a"
Name 98 "txval41"
Name 101 "g_tTexcdi4"
Name 101 "g_tTexcdi4a"
Name 108 "txval42"
Name 111 "g_tTexcdu4"
Name 111 "g_tTexcdu4a"
Name 121 "PS_OUTPUT"
MemberName 121(PS_OUTPUT) 0 "Color"
MemberName 121(PS_OUTPUT) 1 "Depth"
Name 123 "psout"
Name 129 "g_tTex1df4a"
Decorate 12(g_tTex1df4) DescriptorSet 0
Name 129 "g_tTex1df4"
Decorate 12(g_tTex1df4a) DescriptorSet 0
Decorate 16(g_sSamp) DescriptorSet 0
Decorate 32(g_tTex1di4) DescriptorSet 0
Decorate 46(g_tTex1du4) DescriptorSet 0
Decorate 57(g_tTex2df4) DescriptorSet 0
Decorate 68(g_tTex2di4) DescriptorSet 0
Decorate 79(g_tTex2du4) DescriptorSet 0
Decorate 91(g_tTexcdf4) DescriptorSet 0
Decorate 101(g_tTexcdi4) DescriptorSet 0
Decorate 111(g_tTexcdu4) DescriptorSet 0
Decorate 32(g_tTex1di4a) DescriptorSet 0
Decorate 46(g_tTex1du4a) DescriptorSet 0
Decorate 57(g_tTex2df4a) DescriptorSet 0
Decorate 68(g_tTex2di4a) DescriptorSet 0
Decorate 79(g_tTex2du4a) DescriptorSet 0
Decorate 91(g_tTexcdf4a) DescriptorSet 0
Decorate 101(g_tTexcdi4a) DescriptorSet 0
Decorate 111(g_tTexcdu4a) DescriptorSet 0
MemberDecorate 121(PS_OUTPUT) 1 BuiltIn FragDepth
Decorate 129(g_tTex1df4a) DescriptorSet 0
Decorate 129(g_tTex1df4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -349,7 +349,7 @@ gl_FragCoord origin is upper left
8: TypePointer Function 7(fvec4)
10: TypeImage 6(float) 1D array sampled format:Unknown
11: TypePointer UniformConstant 10
12(g_tTex1df4): 11(ptr) Variable UniformConstant
12(g_tTex1df4a): 11(ptr) Variable UniformConstant
14: TypeSampler
15: TypePointer UniformConstant 14
16(g_sSamp): 15(ptr) Variable UniformConstant
@ -364,7 +364,7 @@ gl_FragCoord origin is upper left
28: TypePointer Function 27(ivec4)
30: TypeImage 26(int) 1D array sampled format:Unknown
31: TypePointer UniformConstant 30
32(g_tTex1di4): 31(ptr) Variable UniformConstant
32(g_tTex1di4a): 31(ptr) Variable UniformConstant
35: TypeSampledImage 30
37: 6(float) Constant 1050253722
38: 20(fvec2) ConstantComposite 22 37
@ -373,42 +373,42 @@ gl_FragCoord origin is upper left
42: TypePointer Function 41(ivec4)
44: TypeImage 40(int) 1D array sampled format:Unknown
45: TypePointer UniformConstant 44
46(g_tTex1du4): 45(ptr) Variable UniformConstant
46(g_tTex1du4a): 45(ptr) Variable UniformConstant
49: TypeSampledImage 44
51: 6(float) Constant 1053609165
52: 20(fvec2) ConstantComposite 37 51
55: TypeImage 6(float) 2D array sampled format:Unknown
56: TypePointer UniformConstant 55
57(g_tTex2df4): 56(ptr) Variable UniformConstant
57(g_tTex2df4a): 56(ptr) Variable UniformConstant
60: TypeSampledImage 55
62: TypeVector 6(float) 3
63: 62(fvec3) ConstantComposite 21 22 37
66: TypeImage 26(int) 2D array sampled format:Unknown
67: TypePointer UniformConstant 66
68(g_tTex2di4): 67(ptr) Variable UniformConstant
68(g_tTex2di4a): 67(ptr) Variable UniformConstant
71: TypeSampledImage 66
73: 6(float) Constant 1056964608
74: 62(fvec3) ConstantComposite 37 51 73
77: TypeImage 40(int) 2D array sampled format:Unknown
78: TypePointer UniformConstant 77
79(g_tTex2du4): 78(ptr) Variable UniformConstant
79(g_tTex2du4a): 78(ptr) Variable UniformConstant
82: TypeSampledImage 77
84: 6(float) Constant 1058642330
85: 6(float) Constant 1060320051
86: 62(fvec3) ConstantComposite 73 84 85
89: TypeImage 6(float) Cube array sampled format:Unknown
90: TypePointer UniformConstant 89
91(g_tTexcdf4): 90(ptr) Variable UniformConstant
91(g_tTexcdf4a): 90(ptr) Variable UniformConstant
94: TypeSampledImage 89
96: 7(fvec4) ConstantComposite 21 22 37 51
99: TypeImage 26(int) Cube array sampled format:Unknown
100: TypePointer UniformConstant 99
101(g_tTexcdi4): 100(ptr) Variable UniformConstant
101(g_tTexcdi4a): 100(ptr) Variable UniformConstant
104: TypeSampledImage 99
106: 7(fvec4) ConstantComposite 51 73 84 85
109: TypeImage 40(int) Cube array sampled format:Unknown
110: TypePointer UniformConstant 109
111(g_tTexcdu4): 110(ptr) Variable UniformConstant
111(g_tTexcdu4a): 110(ptr) Variable UniformConstant
114: TypeSampledImage 109
116: 6(float) Constant 1061997773
117: 6(float) Constant 1063675494
@ -418,7 +418,7 @@ gl_FragCoord origin is upper left
122: TypePointer Function 121(PS_OUTPUT)
124: 26(int) Constant 1
125: TypePointer Function 6(float)
129(g_tTex1df4a): 11(ptr) Variable UniformConstant
129(g_tTex1df4): 11(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@ -431,47 +431,47 @@ gl_FragCoord origin is upper left
98(txval41): 28(ptr) Variable Function
108(txval42): 42(ptr) Variable Function
123(psout): 122(ptr) Variable Function
13: 10 Load 12(g_tTex1df4)
13: 10 Load 12(g_tTex1df4a)
17: 14 Load 16(g_sSamp)
19: 18 SampledImage 13 17
25: 7(fvec4) ImageSampleExplicitLod 19 23 Lod 24
Store 9(txval10) 25
33: 30 Load 32(g_tTex1di4)
33: 30 Load 32(g_tTex1di4a)
34: 14 Load 16(g_sSamp)
36: 35 SampledImage 33 34
39: 27(ivec4) ImageSampleExplicitLod 36 38 Lod 24
Store 29(txval11) 39
47: 44 Load 46(g_tTex1du4)
47: 44 Load 46(g_tTex1du4a)
48: 14 Load 16(g_sSamp)
50: 49 SampledImage 47 48
53: 41(ivec4) ImageSampleExplicitLod 50 52 Lod 24
Store 43(txval12) 53
58: 55 Load 57(g_tTex2df4)
58: 55 Load 57(g_tTex2df4a)
59: 14 Load 16(g_sSamp)
61: 60 SampledImage 58 59
64: 7(fvec4) ImageSampleExplicitLod 61 63 Lod 24
Store 54(txval20) 64
69: 66 Load 68(g_tTex2di4)
69: 66 Load 68(g_tTex2di4a)
70: 14 Load 16(g_sSamp)
72: 71 SampledImage 69 70
75: 27(ivec4) ImageSampleExplicitLod 72 74 Lod 24
Store 65(txval21) 75
80: 77 Load 79(g_tTex2du4)
80: 77 Load 79(g_tTex2du4a)
81: 14 Load 16(g_sSamp)
83: 82 SampledImage 80 81
87: 41(ivec4) ImageSampleExplicitLod 83 86 Lod 24
Store 76(txval22) 87
92: 89 Load 91(g_tTexcdf4)
92: 89 Load 91(g_tTexcdf4a)
93: 14 Load 16(g_sSamp)
95: 94 SampledImage 92 93
97: 7(fvec4) ImageSampleExplicitLod 95 96 Lod 24
Store 88(txval40) 97
102: 99 Load 101(g_tTexcdi4)
102: 99 Load 101(g_tTexcdi4a)
103: 14 Load 16(g_sSamp)
105: 104 SampledImage 102 103
107: 27(ivec4) ImageSampleExplicitLod 105 106 Lod 24
Store 98(txval41) 107
112: 109 Load 111(g_tTexcdu4)
112: 109 Load 111(g_tTexcdu4a)
113: 14 Load 16(g_sSamp)
115: 114 SampledImage 112 113
120: 41(ivec4) ImageSampleExplicitLod 115 119 Lod 24

View File

@ -0,0 +1,43 @@
SamplerState g_sSamp : register(s0);
Texture1DArray g_tTex1df4a : register(t1);
uniform Texture1DArray <float4> g_tTex1df4 : register(t0);
Texture1DArray <int4> g_tTex1di4a;
Texture1DArray <uint4> g_tTex1du4a;
Texture2DArray <float4> g_tTex2df4a;
Texture2DArray <int4> g_tTex2di4a;
Texture2DArray <uint4> g_tTex2du4a;
TextureCubeArray <float4> g_tTexcdf4a;
TextureCubeArray <int4> g_tTexcdi4a;
TextureCubeArray <uint4> g_tTexcdu4a;
struct PS_OUTPUT
{
float4 Color : SV_Target0;
float Depth : SV_Depth;
};
PS_OUTPUT main()
{
PS_OUTPUT psout;
// No 1D gathers
float4 txval20 = g_tTex2df4a . Gather(g_sSamp, float3(0.1, 0.2, 0.3));
int4 txval21 = g_tTex2di4a . Gather(g_sSamp, float3(0.3, 0.4, 0.5));
uint4 txval22 = g_tTex2du4a . Gather(g_sSamp, float3(0.5, 0.6, 0.7));
// no 3D gathers
float4 txval40 = g_tTexcdf4a . Gather(g_sSamp, float4(0.1, 0.2, 0.3, 0.4));
int4 txval41 = g_tTexcdi4a . Gather(g_sSamp, float4(0.4, 0.5, 0.6, 0.7));
uint4 txval42 = g_tTexcdu4a . Gather(g_sSamp, float4(0.7, 0.8, 0.9, 1.0));
psout.Color = 1.0;
psout.Depth = 1.0;
return psout;
}

View File

@ -0,0 +1,48 @@
SamplerState g_sSamp : register(s0);
uniform sampler2D g_sSamp2d;
Texture1D g_tTex1df4a : register(t1);
uniform Texture1D <float4> g_tTex1df4 : register(t0);
Texture1D <int4> g_tTex1di4;
Texture1D <uint4> g_tTex1du4;
Texture2D <float4> g_tTex2df4;
Texture2D <int4> g_tTex2di4;
Texture2D <uint4> g_tTex2du4;
Texture3D <float4> g_tTex3df4;
Texture3D <int4> g_tTex3di4;
Texture3D <uint4> g_tTex3du4;
TextureCube <float4> g_tTexcdf4;
TextureCube <int4> g_tTexcdi4;
TextureCube <uint4> g_tTexcdu4;
struct PS_OUTPUT
{
float4 Color : SV_Target0;
float Depth : SV_Depth;
};
PS_OUTPUT main()
{
PS_OUTPUT psout;
// no 1D gathers
float4 txval20 = g_tTex2df4 . Gather(g_sSamp, float2(0.1, 0.2));
int4 txval21 = g_tTex2di4 . Gather(g_sSamp, float2(0.3, 0.4));
uint4 txval22 = g_tTex2du4 . Gather(g_sSamp, float2(0.5, 0.6));
// no 3D gathers
float4 txval40 = g_tTexcdf4 . Gather(g_sSamp, float3(0.1, 0.2, 0.3));
int4 txval41 = g_tTexcdi4 . Gather(g_sSamp, float3(0.4, 0.5, 0.6));
uint4 txval42 = g_tTexcdu4 . Gather(g_sSamp, float3(0.7, 0.8, 0.9));
psout.Color = 1.0;
psout.Depth = 1.0;
return psout;
}

View File

@ -0,0 +1,46 @@
SamplerState g_sSamp : register(s0);
uniform sampler2D g_sSamp2d;
Texture1D g_tTex1df4a : register(t1);
uniform Texture1D <float4> g_tTex1df4 : register(t0);
Texture1D <int4> g_tTex1di4;
Texture1D <uint4> g_tTex1du4;
Texture2D <float4> g_tTex2df4;
Texture2D <int4> g_tTex2di4;
Texture2D <uint4> g_tTex2du4;
Texture3D <float4> g_tTex3df4;
Texture3D <int4> g_tTex3di4;
Texture3D <uint4> g_tTex3du4;
TextureCube <float4> g_tTexcdf4;
TextureCube <int4> g_tTexcdi4;
TextureCube <uint4> g_tTexcdu4;
struct VS_OUTPUT
{
float4 Pos : SV_Position;
};
VS_OUTPUT main()
{
VS_OUTPUT vsout;
// no 1D gathers
float4 txval20 = g_tTex2df4 . Gather(g_sSamp, float2(0.1, 0.2));
int4 txval21 = g_tTex2di4 . Gather(g_sSamp, float2(0.3, 0.4));
uint4 txval22 = g_tTex2du4 . Gather(g_sSamp, float2(0.5, 0.6));
// no 3D gathers
float4 txval40 = g_tTexcdf4 . Gather(g_sSamp, float3(0.1, 0.2, 0.3));
int4 txval41 = g_tTexcdi4 . Gather(g_sSamp, float3(0.4, 0.5, 0.6));
uint4 txval42 = g_tTexcdu4 . Gather(g_sSamp, float3(0.7, 0.8, 0.9));
vsout.Pos = float4(0,0,0,0);
return vsout;
}

View File

@ -0,0 +1,44 @@
SamplerState g_sSamp : register(s0);
Texture1D g_tTex1df4a : register(t1);
uniform Texture1D <float4> g_tTex1df4 : register(t0);
Texture1D <int4> g_tTex1di4;
Texture1D <uint4> g_tTex1du4;
Texture2D <float4> g_tTex2df4;
Texture2D <int4> g_tTex2di4;
Texture2D <uint4> g_tTex2du4;
Texture3D <float4> g_tTex3df4;
Texture3D <int4> g_tTex3di4;
Texture3D <uint4> g_tTex3du4;
TextureCube <float4> g_tTexcdf4;
TextureCube <int4> g_tTexcdi4;
TextureCube <uint4> g_tTexcdu4;
struct PS_OUTPUT
{
float4 Color : SV_Target0;
float Depth : SV_Depth;
};
PS_OUTPUT main()
{
PS_OUTPUT psout;
// no 1D Gathers
float4 txval20 = g_tTex2df4 . Gather(g_sSamp, float2(0.1, 0.2), int2(1,0));
int4 txval21 = g_tTex2di4 . Gather(g_sSamp, float2(0.3, 0.4), int2(1,1));
uint4 txval22 = g_tTex2du4 . Gather(g_sSamp, float2(0.5, 0.6), int2(1,-1));
// no 3D gathers
// No Cube offset gathers
psout.Color = 1.0;
psout.Depth = 1.0;
return psout;
}

View File

@ -0,0 +1,36 @@
SamplerState g_sSamp : register(s0);
Texture1DArray g_tTex1df4a : register(t1);
uniform Texture1DArray <float4> g_tTex1df4 : register(t0);
Texture1DArray <int4> g_tTex1di4;
Texture1DArray <uint4> g_tTex1du4;
Texture2DArray <float4> g_tTex2df4;
Texture2DArray <int4> g_tTex2di4;
Texture2DArray <uint4> g_tTex2du4;
struct PS_OUTPUT
{
float4 Color : SV_Target0;
float Depth : SV_Depth;
};
PS_OUTPUT main()
{
PS_OUTPUT psout;
// No 1D gathers
float4 txval20 = g_tTex2df4 . Gather(g_sSamp, float3(0.1, 0.2, 0.3), int2(1,0));
int4 txval21 = g_tTex2di4 . Gather(g_sSamp, float3(0.3, 0.4, 0.4), int2(1,1));
uint4 txval22 = g_tTex2du4 . Gather(g_sSamp, float3(0.5, 0.6, 0.7), int2(1,-1));
// No 3D gathers
// No Cube offset gathers
psout.Color = 1.0;
psout.Depth = 1.0;
return psout;
}

View File

@ -3,16 +3,16 @@ SamplerState g_sSamp : register(s0);
Texture1DArray g_tTex1df4a : register(t1);
uniform Texture1DArray <float4> g_tTex1df4 : register(t0);
Texture1DArray <int4> g_tTex1di4;
Texture1DArray <uint4> g_tTex1du4;
Texture1DArray <int4> g_tTex1di4a;
Texture1DArray <uint4> g_tTex1du4a;
Texture2DArray <float4> g_tTex2df4;
Texture2DArray <int4> g_tTex2di4;
Texture2DArray <uint4> g_tTex2du4;
Texture2DArray <float4> g_tTex2df4a;
Texture2DArray <int4> g_tTex2di4a;
Texture2DArray <uint4> g_tTex2du4a;
TextureCubeArray <float4> g_tTexcdf4;
TextureCubeArray <int4> g_tTexcdi4;
TextureCubeArray <uint4> g_tTexcdu4;
TextureCubeArray <float4> g_tTexcdf4a;
TextureCubeArray <int4> g_tTexcdi4a;
TextureCubeArray <uint4> g_tTexcdu4a;
struct PS_OUTPUT
{
@ -24,17 +24,17 @@ PS_OUTPUT main()
{
PS_OUTPUT psout;
float4 txval10 = g_tTex1df4 . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75);
int4 txval11 = g_tTex1di4 . SampleLevel(g_sSamp, float2(0.2, 0.3), 0.75);
uint4 txval12 = g_tTex1du4 . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75);
float4 txval10 = g_tTex1df4a . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75);
int4 txval11 = g_tTex1di4a . SampleLevel(g_sSamp, float2(0.2, 0.3), 0.75);
uint4 txval12 = g_tTex1du4a . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75);
float4 txval20 = g_tTex2df4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75);
int4 txval21 = g_tTex2di4 . SampleLevel(g_sSamp, float3(0.3, 0.4, 0.5), 0.75);
uint4 txval22 = g_tTex2du4 . SampleLevel(g_sSamp, float3(0.5, 0.6, 0.7), 0.75);
float4 txval20 = g_tTex2df4a . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75);
int4 txval21 = g_tTex2di4a . SampleLevel(g_sSamp, float3(0.3, 0.4, 0.5), 0.75);
uint4 txval22 = g_tTex2du4a . SampleLevel(g_sSamp, float3(0.5, 0.6, 0.7), 0.75);
float4 txval40 = g_tTexcdf4 . SampleLevel(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75);
int4 txval41 = g_tTexcdi4 . SampleLevel(g_sSamp, float4(0.4, 0.5, 0.6, 0.7), 0.75);
uint4 txval42 = g_tTexcdu4 . SampleLevel(g_sSamp, float4(0.7, 0.8, 0.9, 1.0), 0.75);
float4 txval40 = g_tTexcdf4a . SampleLevel(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75);
int4 txval41 = g_tTexcdi4a . SampleLevel(g_sSamp, float4(0.4, 0.5, 0.6, 0.7), 0.75);
uint4 txval42 = g_tTexcdu4a . SampleLevel(g_sSamp, float4(0.7, 0.8, 0.9, 1.0), 0.75);
psout.Color = 1.0;
psout.Depth = 1.0;

View File

@ -81,6 +81,11 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.float1.frag", "PixelShaderFunction"},
{"hlsl.float4.frag", "PixelShaderFunction"},
{"hlsl.forLoop.frag", "PixelShaderFunction"},
{"hlsl.gather.array.dx10.frag", "main"},
{"hlsl.gather.basic.dx10.frag", "main"},
{"hlsl.gather.basic.dx10.vert", "main"},
{"hlsl.gather.offset.dx10.frag", "main"},
{"hlsl.gather.offsetarray.dx10.frag", "main"},
{"hlsl.getdimensions.dx10.frag", "main"},
{"hlsl.getdimensions.dx10.vert", "main"},
{"hlsl.if.frag", "PixelShaderFunction"},

View File

@ -1221,6 +1221,35 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType
break;
}
case EOpMethodGather:
{
TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped();
TIntermTyped* argSamp = argAggregate->getSequence()[1]->getAsTyped();
TIntermTyped* argCoord = argAggregate->getSequence()[2]->getAsTyped();
TIntermTyped* argOffset = nullptr;
// Offset is optional
if (argAggregate->getSequence().size() == 4)
argOffset = argAggregate->getSequence()[3]->getAsTyped();
const TOperator textureOp = (argOffset == nullptr ? EOpTextureGather : EOpTextureGatherOffset);
TIntermAggregate* txgather = new TIntermAggregate(textureOp);
TIntermAggregate* txcombine = handleSamplerTextureCombine(loc, argTex, argSamp);
txgather->getSequence().push_back(txcombine);
txgather->getSequence().push_back(argCoord);
if (argOffset != nullptr)
txgather->getSequence().push_back(argOffset);
txgather->setType(node->getType());
txgather->setLoc(loc);
node = txgather;
break;
}
default:
break; // most pass through unchanged
}

View File

@ -68,6 +68,7 @@ const char* BaseTypeName(const char argOrder, const char* scalarName, const char
}
bool IsTextureType(const char argOrder) { return argOrder == '%' || argOrder == '@'; }
bool IsSamplerType(const char argType) { return argType == 'S' || argType == 's'; }
bool IsTextureArrayed(const char argOrder) { return argOrder == '@'; }
// bool IsTextureMS(const char /*argOrder*/) { return false; } // TODO: ...
@ -95,6 +96,14 @@ bool IsIllegalSample(const glslang::TString& name, const char* argOrder, int dim
return true;
}
// Reject invalid Gathers
if (name == "Gather") {
if (dim0 == 1 || dim0 == 3) // there are no 1D or 3D gathers
return true;
if (dim0 == 4 && numArgs == 4) // there are no Cube gathers with offset
return true;
}
// Reject invalid Loads
if (name == "Load" && dim0 == 4)
return true; // Load does not support any cubemaps, arrayed or not.
@ -119,6 +128,29 @@ bool HasMipInCoord(const glslang::TString& name)
return name == "Load";
}
// Handle IO params marked with > or <
const char* IoParam(glslang::TString& s, const char* nthArgOrder)
{
if (*nthArgOrder == '>') { // output params
++nthArgOrder;
s.append("out ");
} else if (*nthArgOrder == '<') { // input params
++nthArgOrder;
s.append("in ");
}
return nthArgOrder;
}
// Handle repeated args
void HandleRepeatArg(const char*& arg, const char*& prev, const char* current)
{
if (*arg == ',' || *arg == '\0')
arg = prev;
else
prev = current;
}
// Create and return a type name. This is done in GLSL, not HLSL conventions, until such
// time as builtins are parsed using the HLSL parser.
//
@ -132,19 +164,16 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons
const bool isMatMul = (argOrder[0] == '#');
const bool isTexture = IsTextureType(argOrder[0]);
const bool isArrayed = IsTextureArrayed(argOrder[0]);
const bool isSampler = IsSamplerType(argType[0]);
//const bool isMS = IsTextureMS(argOrder[0]);
char order = *argOrder;
char type = *argType;
if (isTranspose) { // Take transpose of matrix dimensions
order = *++argOrder;
std::swap(dim0, dim1);
} else if (isMatMul) {
order = *++argOrder;
dim0 = dim1; // set vector dimension to mat col
} else if (isTexture) {
order = *++argOrder;
if (type == 'F') // map base type to texture of that type.
type = 'T'; // e.g, int -> itexture, uint -> utexture, etc.
else if (type == 'I')
@ -153,6 +182,11 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons
type = 'u';
}
while (!isalpha(*argOrder))
++argOrder;
char order = *argOrder;
if (UseHlslTypes) {
switch (type) {
case '-': s += "void"; break;
@ -197,8 +231,8 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons
dim0 = dim1 = fixedVecSize;
// Add sampler dimensions
if (type == 'S' || isTexture) {
if (order == 'V') {
if (isSampler || isTexture) {
if (order == 'V' || isTexture) {
switch (dim0) {
case 1: s += "1D"; break;
case 2: s += "2D"; break;
@ -378,7 +412,9 @@ void TBuiltInParseablesHlsl::createMatTimesMat()
//
void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, const SpvVersion& /*spvVersion*/)
{
static const EShLanguageMask EShLangAll = EShLanguageMask(EShLangCount - 1);
static const EShLanguageMask EShLangAll = EShLanguageMask(EShLangCount - 1);
static const EShLanguageMask EShLangPSCS = EShLanguageMask(EShLangFragmentMask | EShLangComputeMask);
static const EShLanguageMask EShLangVSPSGS = EShLanguageMask(EShLangVertexMask | EShLangFragmentMask | EShLangGeometryMask);
// This structure encodes the prototype information for each HLSL intrinsic.
// Because explicit enumeration would be cumbersome, it's procedurally generated.
@ -402,255 +438,244 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
const char* argType; // argument type key
unsigned int stage; // stage mask
} hlslIntrinsics[] = {
// name retOrd retType argOrder argType stage mask
// name retOrd retType argOrder argType stage mask
// -----------------------------------------------------------------------------------------------
{ "abort", nullptr, nullptr, "-", "-", EShLangAll },
{ "abs", nullptr, nullptr, "SVM", "DFUI", EShLangAll },
{ "acos", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "all", "S", "B", "SVM", "BFI", EShLangAll },
{ "AllMemoryBarrier", nullptr, nullptr, "-", "-", EShLangComputeMask },
{ "AllMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangComputeMask },
{ "any", "S", "B", "SVM", "BFI", EShLangAll },
{ "asdouble", "S", "D", "S,", "U,", EShLangAll },
{ "asdouble", "V2", "D", "V2,", "U,", EShLangAll },
{ "asfloat", nullptr, "F", "SVM", "BFIU", EShLangAll },
{ "asin", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "asint", nullptr, "I", "SVM", "FU", EShLangAll },
{ "asuint", nullptr, "U", "SVM", "FU", EShLangAll },
{ "atan", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "atan2", nullptr, nullptr, "SVM,", "F,", EShLangAll },
{ "ceil", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "CheckAccessFullyMapped", "S", "B" , "S", "U", EShLangFragmentMask | EShLangComputeMask },
{ "clamp", nullptr, nullptr, "SVM,,", "FUI,,", EShLangAll },
{ "clip", "-", "-", "SVM", "F", EShLangFragmentMask },
{ "cos", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "cosh", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "countbits", nullptr, nullptr, "SV", "U", EShLangAll },
{ "cross", nullptr, nullptr, "V3,", "F,", EShLangAll },
{ "D3DCOLORtoUBYTE4", "V4", "I", "V4", "F", EShLangAll },
{ "ddx", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "ddx_coarse", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "ddx_fine", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "ddy", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "ddy_coarse", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "ddy_fine", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "degrees", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "determinant", "S", "F", "M", "F", EShLangAll },
{ "DeviceMemoryBarrier", nullptr, nullptr, "-", "-", EShLangFragmentMask | EShLangComputeMask },
{ "DeviceMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangComputeMask },
{ "distance", "S", "F", "V,", "F,", EShLangAll },
{ "dot", "S", nullptr, "V,", "FI,", EShLangAll },
{ "dst", nullptr, nullptr, "V4,V4", "F,", EShLangAll },
// { "errorf", "-", "-", "", "", EShLangAll }, TODO: varargs
{ "EvaluateAttributeAtCentroid", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "EvaluateAttributeAtSample", nullptr, nullptr, "SVM,S", "F,U", EShLangFragmentMask },
{ "EvaluateAttributeSnapped", nullptr, nullptr, "SVM,V2", "F,I", EShLangFragmentMask },
{ "exp", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "exp2", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "f16tof32", nullptr, "F", "SV", "U", EShLangAll },
{ "f32tof16", nullptr, "U", "SV", "F", EShLangAll },
{ "faceforward", nullptr, nullptr, "V,,", "F,,", EShLangAll },
{ "firstbithigh", nullptr, nullptr, "SV", "UI", EShLangAll },
{ "firstbitlow", nullptr, nullptr, "SV", "UI", EShLangAll },
{ "floor", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "fma", nullptr, nullptr, "SVM,,", "D,,", EShLangAll },
{ "fmod", nullptr, nullptr, "SVM,", "F,", EShLangAll },
{ "frac", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "frexp", nullptr, nullptr, "SVM,", "F,", EShLangAll },
{ "fwidth", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "GetRenderTargetSampleCount", "S", "U", "-", "-", EShLangAll },
{ "GetRenderTargetSamplePosition", "V2", "F", "V1", "I", EShLangAll },
{ "GroupMemoryBarrier", nullptr, nullptr, "-", "-", EShLangComputeMask },
{ "GroupMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangComputeMask },
{ "InterlockedAdd", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask },
{ "InterlockedAdd", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask },
{ "InterlockedAnd", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask },
{ "InterlockedAnd", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask },
{ "InterlockedCompareExchange", "-", "-", "SVM,,,>", "UI,,,", EShLangFragmentMask | EShLangComputeMask },
{ "InterlockedCompareStore", "-", "-", "SVM,,", "UI,,", EShLangFragmentMask | EShLangComputeMask },
{ "InterlockedExchange", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask },
{ "InterlockedMax", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask },
{ "InterlockedMax", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask },
{ "InterlockedMin", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask },
{ "InterlockedMin", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask },
{ "InterlockedOr", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask },
{ "InterlockedOr", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask },
{ "InterlockedXor", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask },
{ "InterlockedXor", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask },
{ "isfinite", nullptr, "B" , "SVM", "F", EShLangAll },
{ "isinf", nullptr, "B" , "SVM", "F", EShLangAll },
{ "isnan", nullptr, "B" , "SVM", "F", EShLangAll },
{ "ldexp", nullptr, nullptr, "SVM,", "F,", EShLangAll },
{ "length", "S", "F", "V", "F", EShLangAll },
{ "lerp", nullptr, nullptr, "SVM,,", "F,,", EShLangAll },
{ "lit", "V4", "F", "S,,", "F,,", EShLangAll },
{ "log", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "log10", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "log2", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "mad", nullptr, nullptr, "SVM,,", "DFUI,,", EShLangAll },
{ "max", nullptr, nullptr, "SVM,", "FI,", EShLangAll },
{ "min", nullptr, nullptr, "SVM,", "FI,", EShLangAll },
{ "modf", nullptr, nullptr, "SVM,>", "FI,", EShLangAll },
{ "msad4", "V4", "U", "S,V2,V4", "U,,", EShLangAll },
{ "mul", "S", nullptr, "S,S", "FI,", EShLangAll },
{ "mul", "V", nullptr, "S,V", "FI,", EShLangAll },
{ "mul", "M", nullptr, "S,M", "FI,", EShLangAll },
{ "mul", "V", nullptr, "V,S", "FI,", EShLangAll },
{ "mul", "S", nullptr, "V,V", "FI,", EShLangAll },
{ "mul", "#V", nullptr, "V,M", "FI,", EShLangAll },
{ "mul", "M", nullptr, "M,S", "FI,", EShLangAll },
{ "mul", "V", nullptr, "M,#V", "FI,", EShLangAll },
{ "abort", nullptr, nullptr, "-", "-", EShLangAll },
{ "abs", nullptr, nullptr, "SVM", "DFUI", EShLangAll },
{ "acos", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "all", "S", "B", "SVM", "BFI", EShLangAll },
{ "AllMemoryBarrier", nullptr, nullptr, "-", "-", EShLangComputeMask },
{ "AllMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangComputeMask },
{ "any", "S", "B", "SVM", "BFI", EShLangAll },
{ "asdouble", "S", "D", "S,", "U,", EShLangAll },
{ "asdouble", "V2", "D", "V2,", "U,", EShLangAll },
{ "asfloat", nullptr, "F", "SVM", "BFIU", EShLangAll },
{ "asin", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "asint", nullptr, "I", "SVM", "FU", EShLangAll },
{ "asuint", nullptr, "U", "SVM", "FU", EShLangAll },
{ "atan", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "atan2", nullptr, nullptr, "SVM,", "F,", EShLangAll },
{ "ceil", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "CheckAccessFullyMapped", "S", "B" , "S", "U", EShLangPSCS },
{ "clamp", nullptr, nullptr, "SVM,,", "FUI,,", EShLangAll },
{ "clip", "-", "-", "SVM", "F", EShLangFragmentMask },
{ "cos", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "cosh", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "countbits", nullptr, nullptr, "SV", "U", EShLangAll },
{ "cross", nullptr, nullptr, "V3,", "F,", EShLangAll },
{ "D3DCOLORtoUBYTE4", "V4", "I", "V4", "F", EShLangAll },
{ "ddx", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "ddx_coarse", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "ddx_fine", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "ddy", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "ddy_coarse", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "ddy_fine", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "degrees", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "determinant", "S", "F", "M", "F", EShLangAll },
{ "DeviceMemoryBarrier", nullptr, nullptr, "-", "-", EShLangPSCS },
{ "DeviceMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangComputeMask },
{ "distance", "S", "F", "V,", "F,", EShLangAll },
{ "dot", "S", nullptr, "V,", "FI,", EShLangAll },
{ "dst", nullptr, nullptr, "V4,", "F,", EShLangAll },
// { "errorf", "-", "-", "", "", EShLangAll }, TODO: varargs
{ "EvaluateAttributeAtCentroid", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "EvaluateAttributeAtSample", nullptr, nullptr, "SVM,S", "F,U", EShLangFragmentMask },
{ "EvaluateAttributeSnapped", nullptr, nullptr, "SVM,V2", "F,I", EShLangFragmentMask },
{ "exp", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "exp2", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "f16tof32", nullptr, "F", "SV", "U", EShLangAll },
{ "f32tof16", nullptr, "U", "SV", "F", EShLangAll },
{ "faceforward", nullptr, nullptr, "V,,", "F,,", EShLangAll },
{ "firstbithigh", nullptr, nullptr, "SV", "UI", EShLangAll },
{ "firstbitlow", nullptr, nullptr, "SV", "UI", EShLangAll },
{ "floor", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "fma", nullptr, nullptr, "SVM,,", "D,,", EShLangAll },
{ "fmod", nullptr, nullptr, "SVM,", "F,", EShLangAll },
{ "frac", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "frexp", nullptr, nullptr, "SVM,", "F,", EShLangAll },
{ "fwidth", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "GetRenderTargetSampleCount", "S", "U", "-", "-", EShLangAll },
{ "GetRenderTargetSamplePosition", "V2", "F", "V1", "I", EShLangAll },
{ "GroupMemoryBarrier", nullptr, nullptr, "-", "-", EShLangComputeMask },
{ "GroupMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangComputeMask },
{ "InterlockedAdd", "-", "-", "SVM,,>", "UI,,", EShLangPSCS },
{ "InterlockedAdd", "-", "-", "SVM,", "UI,", EShLangPSCS },
{ "InterlockedAnd", "-", "-", "SVM,,>", "UI,,", EShLangPSCS },
{ "InterlockedAnd", "-", "-", "SVM,", "UI,", EShLangPSCS },
{ "InterlockedCompareExchange", "-", "-", "SVM,,,>", "UI,,,", EShLangPSCS },
{ "InterlockedCompareStore", "-", "-", "SVM,,", "UI,,", EShLangPSCS },
{ "InterlockedExchange", "-", "-", "SVM,,>", "UI,,", EShLangPSCS },
{ "InterlockedMax", "-", "-", "SVM,,>", "UI,,", EShLangPSCS },
{ "InterlockedMax", "-", "-", "SVM,", "UI,", EShLangPSCS },
{ "InterlockedMin", "-", "-", "SVM,,>", "UI,,", EShLangPSCS },
{ "InterlockedMin", "-", "-", "SVM,", "UI,", EShLangPSCS },
{ "InterlockedOr", "-", "-", "SVM,,>", "UI,,", EShLangPSCS },
{ "InterlockedOr", "-", "-", "SVM,", "UI,", EShLangPSCS },
{ "InterlockedXor", "-", "-", "SVM,,>", "UI,,", EShLangPSCS },
{ "InterlockedXor", "-", "-", "SVM,", "UI,", EShLangPSCS },
{ "isfinite", nullptr, "B" , "SVM", "F", EShLangAll },
{ "isinf", nullptr, "B" , "SVM", "F", EShLangAll },
{ "isnan", nullptr, "B" , "SVM", "F", EShLangAll },
{ "ldexp", nullptr, nullptr, "SVM,", "F,", EShLangAll },
{ "length", "S", "F", "V", "F", EShLangAll },
{ "lerp", nullptr, nullptr, "SVM,,", "F,,", EShLangAll },
{ "lit", "V4", "F", "S,,", "F,,", EShLangAll },
{ "log", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "log10", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "log2", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "mad", nullptr, nullptr, "SVM,,", "DFUI,,", EShLangAll },
{ "max", nullptr, nullptr, "SVM,", "FI,", EShLangAll },
{ "min", nullptr, nullptr, "SVM,", "FI,", EShLangAll },
{ "modf", nullptr, nullptr, "SVM,>", "FI,", EShLangAll },
{ "msad4", "V4", "U", "S,V2,V4", "U,,", EShLangAll },
{ "mul", "S", nullptr, "S,S", "FI,", EShLangAll },
{ "mul", "V", nullptr, "S,V", "FI,", EShLangAll },
{ "mul", "M", nullptr, "S,M", "FI,", EShLangAll },
{ "mul", "V", nullptr, "V,S", "FI,", EShLangAll },
{ "mul", "S", nullptr, "V,V", "FI,", EShLangAll },
{ "mul", "#V", nullptr, "V,M", "FI,", EShLangAll },
{ "mul", "M", nullptr, "M,S", "FI,", EShLangAll },
{ "mul", "V", nullptr, "M,#V", "FI,", EShLangAll },
// mat*mat form of mul is handled in createMatTimesMat()
{ "noise", "S", "F", "V", "F", EShLangFragmentMask },
{ "normalize", nullptr, nullptr, "V", "F", EShLangAll },
{ "pow", nullptr, nullptr, "SVM,", "F,", EShLangAll },
// { "printf", "-", "-", "", "", EShLangAll }, TODO: varargs
{ "Process2DQuadTessFactorsAvg", "-", "-", "V4,V2,>V4,>V2,>V2", "F,,,,", EShLangTessControlMask },
{ "Process2DQuadTessFactorsMax", "-", "-", "V4,V2,>V4,>V2,>V2", "F,,,,", EShLangTessControlMask },
{ "Process2DQuadTessFactorsMin", "-", "-", "V4,V2,>V4,>V2,>V2", "F,,,,", EShLangTessControlMask },
{ "ProcessIsolineTessFactors", "-", "-", "S,,>,>", "F,,,", EShLangTessControlMask },
{ "ProcessQuadTessFactorsAvg", "-", "-", "V4,S,>V4,>V2,>V2", "F,,,,", EShLangTessControlMask },
{ "ProcessQuadTessFactorsMax", "-", "-", "V4,S,>V4,>V2,>V2", "F,,,,", EShLangTessControlMask },
{ "ProcessQuadTessFactorsMin", "-", "-", "V4,S,>V4,>V2,>V2", "F,,,,", EShLangTessControlMask },
{ "ProcessTriTessFactorsAvg", "-", "-", "V3,S,>V3,>S,>S", "F,,,,", EShLangTessControlMask },
{ "ProcessTriTessFactorsMax", "-", "-", "V3,S,>V3,>S,>S", "F,,,,", EShLangTessControlMask },
{ "ProcessTriTessFactorsMin", "-", "-", "V3,S,>V3,>S,>S", "F,,,,", EShLangTessControlMask },
{ "radians", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "rcp", nullptr, nullptr, "SVM", "FD", EShLangAll },
{ "reflect", nullptr, nullptr, "V,", "F,", EShLangAll },
{ "refract", nullptr, nullptr, "V,V,S", "F,,", EShLangAll },
{ "reversebits", nullptr, nullptr, "SV", "U", EShLangAll },
{ "round", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "rsqrt", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "saturate", nullptr, nullptr , "SVM", "F", EShLangAll },
{ "sign", nullptr, nullptr, "SVM", "FI", EShLangAll },
{ "sin", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "sincos", "-", "-", "SVM,>,>", "F,,", EShLangAll },
{ "sinh", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "smoothstep", nullptr, nullptr, "SVM,,", "F,,", EShLangAll },
{ "sqrt", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "step", nullptr, nullptr, "SVM,", "F,", EShLangAll },
{ "tan", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "tanh", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "tex1D", "V4", "F", "V1,S", "S,F", EShLangFragmentMask },
{ "tex1D", "V4", "F", "V1,S,V1,V1", "S,F,F,F",EShLangFragmentMask },
{ "tex1Dbias", "V4", "F", "V1,V4", "S,F", EShLangFragmentMask },
{ "tex1Dgrad", "V4", "F", "V1,V1,V1,V1","S,F,F,F",EShLangFragmentMask },
{ "tex1Dlod", "V4", "F", "V1,V4", "S,F", EShLangFragmentMask },
{ "tex1Dproj", "V4", "F", "V1,V4", "S,F", EShLangFragmentMask },
{ "tex2D", "V4", "F", "V2,V2", "S,F", EShLangFragmentMask },
{ "tex2D", "V4", "F", "V2,V2,V2,V2","S,F,F,F",EShLangFragmentMask },
{ "tex2Dbias", "V4", "F", "V2,V4", "S,F", EShLangFragmentMask },
{ "tex2Dgrad", "V4", "F", "V2,V2,V2,V2","S,F,F,F",EShLangFragmentMask },
{ "tex2Dlod", "V4", "F", "V2,V4", "S,F", EShLangFragmentMask },
{ "tex2Dproj", "V4", "F", "V2,V4", "S,F", EShLangFragmentMask },
{ "tex3D", "V4", "F", "V3,V3", "S,F", EShLangFragmentMask },
{ "tex3D", "V4", "F", "V3,V3,V3,V3","S,F,F,F",EShLangFragmentMask },
{ "tex3Dbias", "V4", "F", "V3,V4", "S,F", EShLangFragmentMask },
{ "tex3Dgrad", "V4", "F", "V3,V3,V3,V3","S,F,F,F",EShLangFragmentMask },
{ "tex3Dlod", "V4", "F", "V3,V4", "S,F", EShLangFragmentMask },
{ "tex3Dproj", "V4", "F", "V3,V4", "S,F", EShLangFragmentMask },
{ "texCUBE", "V4", "F", "V4,V3", "S,F", EShLangFragmentMask },
{ "texCUBE", "V4", "F", "V4,V3,V3,V3","S,F,F,F",EShLangFragmentMask },
{ "texCUBEbias", "V4", "F", "V4,V4", "S,F", EShLangFragmentMask },
{ "texCUBEgrad", "V4", "F", "V4,V3,V3,V3","S,F,F,F",EShLangFragmentMask },
{ "texCUBElod", "V4", "F", "V4,V4", "S,F", EShLangFragmentMask },
{ "texCUBEproj", "V4", "F", "V4,V4", "S,F", EShLangFragmentMask },
{ "transpose", "^M", nullptr, "M", "F", EShLangAll },
{ "trunc", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "noise", "S", "F", "V", "F", EShLangFragmentMask },
{ "normalize", nullptr, nullptr, "V", "F", EShLangAll },
{ "pow", nullptr, nullptr, "SVM,", "F,", EShLangAll },
// { "printf", "-", "-", "", "", EShLangAll }, TODO: varargs
{ "Process2DQuadTessFactorsAvg", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangTessControlMask },
{ "Process2DQuadTessFactorsMax", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangTessControlMask },
{ "Process2DQuadTessFactorsMin", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangTessControlMask },
{ "ProcessIsolineTessFactors", "-", "-", "S,,>,>", "F,,,", EShLangTessControlMask },
{ "ProcessQuadTessFactorsAvg", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangTessControlMask },
{ "ProcessQuadTessFactorsMax", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangTessControlMask },
{ "ProcessQuadTessFactorsMin", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangTessControlMask },
{ "ProcessTriTessFactorsAvg", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangTessControlMask },
{ "ProcessTriTessFactorsMax", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangTessControlMask },
{ "ProcessTriTessFactorsMin", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangTessControlMask },
{ "radians", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "rcp", nullptr, nullptr, "SVM", "FD", EShLangAll },
{ "reflect", nullptr, nullptr, "V,", "F,", EShLangAll },
{ "refract", nullptr, nullptr, "V,V,S", "F,,", EShLangAll },
{ "reversebits", nullptr, nullptr, "SV", "U", EShLangAll },
{ "round", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "rsqrt", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "saturate", nullptr, nullptr , "SVM", "F", EShLangAll },
{ "sign", nullptr, nullptr, "SVM", "FI", EShLangAll },
{ "sin", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "sincos", "-", "-", "SVM,>,>", "F,,", EShLangAll },
{ "sinh", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "smoothstep", nullptr, nullptr, "SVM,,", "F,,", EShLangAll },
{ "sqrt", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "step", nullptr, nullptr, "SVM,", "F,", EShLangAll },
{ "tan", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "tanh", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "tex1D", "V4", "F", "V1,S", "S,F", EShLangFragmentMask },
{ "tex1D", "V4", "F", "V1,S,V1,", "S,F,,", EShLangFragmentMask },
{ "tex1Dbias", "V4", "F", "V1,V4", "S,F", EShLangFragmentMask },
{ "tex1Dgrad", "V4", "F", "V1,,,", "S,F,,", EShLangFragmentMask },
{ "tex1Dlod", "V4", "F", "V1,V4", "S,F", EShLangFragmentMask },
{ "tex1Dproj", "V4", "F", "V1,V4", "S,F", EShLangFragmentMask },
{ "tex2D", "V4", "F", "V2,", "S,F", EShLangFragmentMask },
{ "tex2D", "V4", "F", "V2,,,", "S,F,,", EShLangFragmentMask },
{ "tex2Dbias", "V4", "F", "V2,V4", "S,F", EShLangFragmentMask },
{ "tex2Dgrad", "V4", "F", "V2,,,", "S,F,,", EShLangFragmentMask },
{ "tex2Dlod", "V4", "F", "V2,V4", "S,F", EShLangFragmentMask },
{ "tex2Dproj", "V4", "F", "V2,V4", "S,F", EShLangFragmentMask },
{ "tex3D", "V4", "F", "V3,", "S,F", EShLangFragmentMask },
{ "tex3D", "V4", "F", "V3,,,", "S,F,,", EShLangFragmentMask },
{ "tex3Dbias", "V4", "F", "V3,V4", "S,F", EShLangFragmentMask },
{ "tex3Dgrad", "V4", "F", "V3,,,", "S,F,,", EShLangFragmentMask },
{ "tex3Dlod", "V4", "F", "V3,V4", "S,F", EShLangFragmentMask },
{ "tex3Dproj", "V4", "F", "V3,V4", "S,F", EShLangFragmentMask },
{ "texCUBE", "V4", "F", "V4,V3", "S,F", EShLangFragmentMask },
{ "texCUBE", "V4", "F", "V4,V3,,", "S,F,,", EShLangFragmentMask },
{ "texCUBEbias", "V4", "F", "V4,", "S,F", EShLangFragmentMask },
{ "texCUBEgrad", "V4", "F", "V4,V3,,", "S,F,,", EShLangFragmentMask },
{ "texCUBElod", "V4", "F", "V4,", "S,F", EShLangFragmentMask },
{ "texCUBEproj", "V4", "F", "V4,", "S,F", EShLangFragmentMask },
{ "transpose", "^M", nullptr, "M", "F", EShLangAll },
{ "trunc", nullptr, nullptr, "SVM", "F", EShLangAll },
// Texture object methods. Return type can be overridden by shader declaration.
// !O = no offset, O = offset, !A = no array, A = array
{ "Sample", /*!O !A*/ "V4", nullptr, "%V,S,V", "FIU,S,F", EShLangFragmentMask },
{ "Sample", /* O !A*/ "V4", nullptr, "%V,S,V,V", "FIU,S,F,I", EShLangFragmentMask },
{ "Sample", /*!O A*/ "V4", nullptr, "@V,S,V", "FIU,S,F", EShLangFragmentMask },
{ "Sample", /* O A*/ "V4", nullptr, "@V,S,V,V", "FIU,S,F,I", EShLangFragmentMask },
// !O = no offset, O = offset
{ "Sample", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangFragmentMask },
{ "Sample", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangFragmentMask },
{ "SampleBias", /*!O !A*/ "V4", nullptr, "%V,S,V,S", "FIU,S,F,F", EShLangFragmentMask },
{ "SampleBias", /* O !A*/ "V4", nullptr, "%V,S,V,S,V", "FIU,S,F,F,I", EShLangFragmentMask },
{ "SampleBias", /*!O A*/ "V4", nullptr, "@V,S,V,S", "FIU,S,F,F", EShLangFragmentMask },
{ "SampleBias", /* O A*/ "V4", nullptr, "@V,S,V,S,V", "FIU,S,F,F,I", EShLangFragmentMask },
{ "SampleBias", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,S,F,", EShLangFragmentMask },
{ "SampleBias", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,S,F,,I", EShLangFragmentMask },
// TODO: FXC accepts int/uint samplers here. unclear what that means.
{ "SampleCmp", /*!O !A*/ "S", "F", "%V,S,V,S", "FIU,s,F,F", EShLangFragmentMask },
{ "SampleCmp", /* O !A*/ "S", "F", "%V,S,V,S,V", "FIU,s,F,F,I", EShLangFragmentMask },
{ "SampleCmp", /*!O A*/ "S", "F", "@V,S,V,S", "FIU,s,F,F", EShLangFragmentMask },
{ "SampleCmp", /* O A*/ "S", "F", "@V,S,V,S,V", "FIU,s,F,F,I", EShLangFragmentMask },
{ "SampleCmp", /*!O*/ "S", "F", "%@,S,V,S", "FIU,s,F,", EShLangFragmentMask },
{ "SampleCmp", /* O*/ "S", "F", "%@,S,V,S,V", "FIU,s,F,,I", EShLangFragmentMask },
// TODO: FXC accepts int/uint samplers here. unclear what that means.
{ "SampleCmpLevelZero", /*!O !A*/ "S", "F", "%V,S,V,S", "FIU,s,F,F", EShLangFragmentMask },
{ "SampleCmpLevelZero", /* O !A*/ "S", "F", "%V,S,V,S,V", "FIU,s,F,F,I", EShLangFragmentMask },
{ "SampleCmpLevelZero", /*!O A*/ "S", "F", "@V,S,V,S", "FIU,s,F,F", EShLangFragmentMask },
{ "SampleCmpLevelZero", /* O A*/ "S", "F", "@V,S,V,S,V", "FIU,s,F,F,I", EShLangFragmentMask },
{ "SampleCmpLevelZero", /*!O*/ "S", "F", "%@,S,V,S", "FIU,s,F,F", EShLangFragmentMask },
{ "SampleCmpLevelZero", /* O*/ "S", "F", "%@,S,V,S,V", "FIU,s,F,F,I", EShLangFragmentMask },
{ "SampleGrad", /*!O !A*/ "V4", nullptr, "%V,S,V,V,V", "FIU,S,F,F,F", EShLangAll },
{ "SampleGrad", /* O !A*/ "V4", nullptr, "%V,S,V,V,V,V", "FIU,S,F,F,F,I", EShLangAll },
{ "SampleGrad", /*!O A*/ "V4", nullptr, "@V,S,V,V,V", "FIU,S,F,F,F", EShLangAll },
{ "SampleGrad", /* O A*/ "V4", nullptr, "@V,S,V,V,V,V", "FIU,S,F,F,F,I", EShLangAll },
{ "SampleGrad", /*!O*/ "V4", nullptr, "%@,S,V,,", "FIU,S,F,,", EShLangAll },
{ "SampleGrad", /* O*/ "V4", nullptr, "%@,S,V,,,", "FIU,S,F,,,I", EShLangAll },
{ "SampleLevel", /*!O !A*/ "V4", nullptr, "%V,S,V,S", "FIU,S,F,F", EShLangAll },
{ "SampleLevel", /* O !A*/ "V4", nullptr, "%V,S,V,S,V", "FIU,S,F,F,I", EShLangAll },
{ "SampleLevel", /*!O A*/ "V4", nullptr, "@V,S,V,S", "FIU,S,F,F", EShLangAll },
{ "SampleLevel", /* O A*/ "V4", nullptr, "@V,S,V,S,V", "FIU,S,F,F,I", EShLangAll },
{ "SampleLevel", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,S,F,", EShLangAll },
{ "SampleLevel", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,S,F,,I", EShLangAll },
{ "Load", /*!O !A*/ "V4", nullptr, "%V,V", "FIU,I", EShLangAll },
{ "Load", /*!O A*/ "V4", nullptr, "@V,V", "FIU,I", EShLangAll },
{ "Load", /* O !A*/ "V4", nullptr, "%V,V,V", "FIU,I,I", EShLangAll },
{ "Load", /* O A*/ "V4", nullptr, "@V,V,V", "FIU,I,I", EShLangAll },
{ "Load", /*!O*/ "V4", nullptr, "%@,V", "FIU,I", EShLangAll },
{ "Load", /* O*/ "V4", nullptr, "%@,V,V", "FIU,I,I", EShLangAll },
// TODO: MS variants of Load
// { "Load", /* +sampleidex*/ "V4", nullptr, "$V,V,S", "FIU,I,I", EShLangAll },
// { "Load", /* +samplindex, offset*/ "V4", nullptr, "$V,V,S,V", "FIU,I,I,I", EShLangAll },
// { "Load", /* +sampleidex*/ "V4", nullptr, "$V,V,S", "FIU,I,I", EShLangAll },
// { "Load", /* +samplindex, offset*/ "V4", nullptr, "$V,V,S,V", "FIU,I,I,I", EShLangAll },
{ "Gather", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangVSPSGS },
{ "Gather", /* O*/ "V4", nullptr, "%@,S,V,V", "FIU,S,F,I", EShLangVSPSGS },
// table of overloads from: https://msdn.microsoft.com/en-us/library/windows/desktop/bb509693(v=vs.85).aspx
//
// UINT Width
// UINT MipLevel, UINT Width, UINT NumberOfLevels
{ "GetDimensions", /* 1D */ "-", "-", "%V1,>S", "FUI,U", EShLangAll },
{ "GetDimensions", /* 1D */ "-", "-", "%V1,>S", "FUI,F", EShLangAll },
{ "GetDimensions", /* 1D */ "-", "-", "%V1,S,>S,>S", "FUI,U,U,U", EShLangAll },
{ "GetDimensions", /* 1D */ "-", "-", "%V1,S,>S,>S", "FUI,U,F,F", EShLangAll },
{ "GetDimensions", /* 1D */ "-", "-", "%1,>S", "FUI,U", EShLangAll },
{ "GetDimensions", /* 1D */ "-", "-", "%1,>S", "FUI,F", EShLangAll },
{ "GetDimensions", /* 1D */ "-", "-", "%1,S,>S,", "FUI,U,,", EShLangAll },
{ "GetDimensions", /* 1D */ "-", "-", "%1,S,>S,", "FUI,U,F,", EShLangAll },
// UINT Width, UINT Elements
// UINT MipLevel, UINT Width, UINT Elements, UINT NumberOfLevels
{ "GetDimensions", /* 1DArray */ "-", "-", "@V1,>S,>S", "FUI,U,U", EShLangAll },
{ "GetDimensions", /* 1DArray */ "-", "-", "@V1,>S,>S", "FUI,F,F", EShLangAll },
{ "GetDimensions", /* 1DArray */ "-", "-", "@V1,S,>S,>S,>S", "FUI,U,U,U,U", EShLangAll },
{ "GetDimensions", /* 1DArray */ "-", "-", "@V1,S,>S,>S,>S", "FUI,U,F,F,F", EShLangAll },
{ "GetDimensions", /* 1DArray */ "-", "-", "@1,>S,", "FUI,U,", EShLangAll },
{ "GetDimensions", /* 1DArray */ "-", "-", "@1,>S,", "FUI,F,", EShLangAll },
{ "GetDimensions", /* 1DArray */ "-", "-", "@1,S,>S,,", "FUI,U,,,", EShLangAll },
{ "GetDimensions", /* 1DArray */ "-", "-", "@1,S,>S,,", "FUI,U,F,,", EShLangAll },
// UINT Width, UINT Height
// UINT MipLevel, UINT Width, UINT Height, UINT NumberOfLevels
{ "GetDimensions", /* 2D */ "-", "-", "%V2,>S,>S", "FUI,U,U", EShLangAll },
{ "GetDimensions", /* 2D */ "-", "-", "%V2,>S,>S", "FUI,F,F", EShLangAll },
{ "GetDimensions", /* 2D */ "-", "-", "%V2,S,>S,>S,>S", "FUI,U,U,U,U", EShLangAll },
{ "GetDimensions", /* 2D */ "-", "-", "%V2,S,>S,>S,>S", "FUI,U,F,F,F", EShLangAll },
{ "GetDimensions", /* 2D */ "-", "-", "%2,>S,", "FUI,U,", EShLangAll },
{ "GetDimensions", /* 2D */ "-", "-", "%2,>S,", "FUI,F,", EShLangAll },
{ "GetDimensions", /* 2D */ "-", "-", "%2,S,>S,,", "FUI,U,,,", EShLangAll },
{ "GetDimensions", /* 2D */ "-", "-", "%2,S,>S,,", "FUI,U,F,,", EShLangAll },
// UINT Width, UINT Height, UINT Elements
// UINT MipLevel, UINT Width, UINT Height, UINT Elements, UINT NumberOfLevels
{ "GetDimensions", /* 2DArray */ "-", "-", "@V2,>S,>S,>S", "FUI,U,U,U", EShLangAll },
{ "GetDimensions", /* 2DArray */ "-", "-", "@V2,>S,>S,>S", "FUI,F,F,F", EShLangAll },
{ "GetDimensions", /* 2DArray */ "-", "-", "@V2,S,>S,>S,>S,>S", "FUI,U,U,U,U,U", EShLangAll },
{ "GetDimensions", /* 2DArray */ "-", "-", "@V2,S,>S,>S,>S,>S", "FUI,U,F,F,F,F", EShLangAll },
{ "GetDimensions", /* 2DArray */ "-", "-", "@2,>S,,", "FUI,U,,", EShLangAll },
{ "GetDimensions", /* 2DArray */ "-", "-", "@2,>S,,", "FUI,F,F,F", EShLangAll },
{ "GetDimensions", /* 2DArray */ "-", "-", "@2,S,>S,,,", "FUI,U,,,,", EShLangAll },
{ "GetDimensions", /* 2DArray */ "-", "-", "@2,S,>S,,,", "FUI,U,F,,,", EShLangAll },
// UINT Width, UINT Height, UINT Depth
// UINT MipLevel, UINT Width, UINT Height, UINT Depth, UINT NumberOfLevels
{ "GetDimensions", /* 3D */ "-", "-", "%V3,>S,>S,>S", "FUI,U,U,U", EShLangAll },
{ "GetDimensions", /* 3D */ "-", "-", "%V3,>S,>S,>S", "FUI,F,F,F", EShLangAll },
{ "GetDimensions", /* 3D */ "-", "-", "%V3,S,>S,>S,>S,>S", "FUI,U,U,U,U,U", EShLangAll },
{ "GetDimensions", /* 3D */ "-", "-", "%V3,S,>S,>S,>S,>S", "FUI,U,F,F,F,F", EShLangAll },
{ "GetDimensions", /* 3D */ "-", "-", "%3,>S,,", "FUI,U,,", EShLangAll },
{ "GetDimensions", /* 3D */ "-", "-", "%3,>S,,", "FUI,F,,", EShLangAll },
{ "GetDimensions", /* 3D */ "-", "-", "%3,S,>S,,,", "FUI,U,,,,", EShLangAll },
{ "GetDimensions", /* 3D */ "-", "-", "%3,S,>S,,,", "FUI,U,F,,,", EShLangAll },
// UINT Width, UINT Height
// UINT MipLevel, UINT Width, UINT Height, UINT NumberOfLevels
{ "GetDimensions", /* Cube */ "-", "-", "%V4,>S,>S", "FUI,U,U", EShLangAll },
{ "GetDimensions", /* Cube */ "-", "-", "%V4,>S,>S", "FUI,F,F", EShLangAll },
{ "GetDimensions", /* Cube */ "-", "-", "%V4,S,>S,>S,>S", "FUI,U,U,U,U", EShLangAll },
{ "GetDimensions", /* Cube */ "-", "-", "%V4,S,>S,>S,>S", "FUI,U,F,F,F", EShLangAll },
{ "GetDimensions", /* Cube */ "-", "-", "%4,>S,", "FUI,U,", EShLangAll },
{ "GetDimensions", /* Cube */ "-", "-", "%4,>S,", "FUI,F,", EShLangAll },
{ "GetDimensions", /* Cube */ "-", "-", "%4,S,>S,,", "FUI,U,,,", EShLangAll },
{ "GetDimensions", /* Cube */ "-", "-", "%4,S,>S,,", "FUI,U,F,,", EShLangAll },
// UINT Width, UINT Height, UINT Elements
// UINT MipLevel, UINT Width, UINT Height, UINT Elements, UINT NumberOfLevels
{ "GetDimensions", /* CubeArray */ "-", "-", "@V4,>S,>S,>S", "FUI,U,U,U", EShLangAll },
{ "GetDimensions", /* CubeArray */ "-", "-", "@V4,>S,>S,>S", "FUI,F,F,F", EShLangAll },
{ "GetDimensions", /* CubeArray */ "-", "-", "@V4,S,>S,>S,>S,>S", "FUI,U,U,U,U,U", EShLangAll },
{ "GetDimensions", /* CubeArray */ "-", "-", "@V4,S,>S,>S,>S,>S", "FUI,U,F,F,F,F", EShLangAll },
{ "GetDimensions", /* CubeArray */ "-", "-", "@4,>S,,", "FUI,U,,", EShLangAll },
{ "GetDimensions", /* CubeArray */ "-", "-", "@4,>S,,", "FUI,F,,", EShLangAll },
{ "GetDimensions", /* CubeArray */ "-", "-", "@4,S,>S,,,", "FUI,U,,,,", EShLangAll },
{ "GetDimensions", /* CubeArray */ "-", "-", "@4,S,>S,,,", "FUI,U,F,,,", EShLangAll },
// TODO: GetDimensions for Texture2DMS, Texture2DMSArray
// UINT Width, UINT Height, UINT Samples
@ -709,6 +734,9 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
s.append(intrinsic.name); // intrinsic name
s.append("("); // open paren
const char* prevArgOrder = nullptr;
const char* prevArgType = nullptr;
// Append argument types, if any.
for (int arg = 0; ; ++arg) {
const char* nthArgOrder(NthArg(argOrder, arg));
@ -720,6 +748,18 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
// cube textures use vec3 coordinates
int argDim0 = isTexture && arg > 0 ? std::min(dim0, 3) : dim0;
s.append(arg > 0 ? ", ": ""); // comma separator if needed
const char* orderBegin = nthArgOrder;
nthArgOrder = IoParam(s, nthArgOrder);
// Comma means use the previous argument order and type.
HandleRepeatArg(nthArgOrder, prevArgOrder, orderBegin);
HandleRepeatArg(nthArgType, prevArgType, nthArgType);
// In case the repeated arg has its own I/O marker
nthArgOrder = IoParam(s, nthArgOrder);
// arrayed textures have one extra coordinate dimension
if (isArrayed && arg == coordArg)
argDim0++;
@ -732,34 +772,20 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
if (isTexture && argDim0 == 1 && arg > 0 && *nthArgOrder == 'V')
nthArgOrder = "S";
s.append(arg > 0 ? ", ": ""); // comma separator if needed
if (*nthArgOrder == '>') { // output params
++nthArgOrder;
s.append("out ");
} else if (*nthArgOrder == '<') { // input params
++nthArgOrder;
s.append("in ");
}
// Comma means use the 1st argument order and type.
if (*nthArgOrder == ',' || *nthArgOrder == '\0') nthArgOrder = argOrder;
if (*nthArgType == ',' || *nthArgType == '\0') nthArgType = argType;
AppendTypeName(s, nthArgOrder, nthArgType, argDim0, dim1); // Add arguments
}
s.append(");\n"); // close paren and trailing semicolon
}
}
}
} // dim 1 loop
} // dim 0 loop
} // arg type loop
// skip over special characters
if (isTexture)
if (isTexture && isalpha(argOrder[1]))
++argOrder;
if (isdigit(argOrder[1]))
++argOrder;
}
} // arg order loop
if (intrinsic.stage == EShLangAll) // common builtins are only added once.
break;
@ -946,6 +972,7 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int /*version*/, EProfile /*profil
symbolTable.relateToOperator("SampleLevel", EOpMethodSampleLevel);
symbolTable.relateToOperator("Load", EOpMethodLoad);
symbolTable.relateToOperator("GetDimensions", EOpMethodGetDimensions);
symbolTable.relateToOperator("Gather", EOpMethodGather);
}
//