HLSL: Implement missing GatherCmp

This commit is contained in:
steve-lunarg 2017-05-01 21:59:34 -06:00
parent 22be5788ea
commit 6817f81e02
6 changed files with 270 additions and 127 deletions

View File

@ -119,25 +119,73 @@ gl_FragCoord origin is upper left
0:51 1 (const int) 0:51 1 (const int)
0:51 1 (const int) 0:51 1 (const int)
0:51 1 (const int) 0:51 1 (const int)
0:114 move second child to first child ( temp 4-component vector of float) 0:53 Sequence
0:114 Color: direct index for structure ( temp 4-component vector of float) 0:53 move second child to first child ( temp 4-component vector of float)
0:114 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 'txval401' ( temp 4-component vector of float)
0:114 Constant: 0:53 textureGatherOffset ( temp 4-component vector of float)
0:114 0 (const int) 0:53 Construct combined texture-sampler ( temp sampler2DShadow)
0:114 Constant: 0:53 'g_tTex2df4' ( uniform texture2D)
0:114 1.000000 0:53 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:114 1.000000 0:53 c2: direct index for structure ( uniform 2-component vector of float)
0:114 1.000000 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
0:114 1.000000 0:53 Constant:
0:115 move second child to first child ( temp float) 0:53 1 (const uint)
0:115 Depth: direct index for structure ( temp float) 0:53 Constant:
0:115 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 0.750000
0:115 Constant: 0:? Constant:
0:115 1 (const int) 0:? 1 (const int)
0:115 Constant: 0:? 0 (const int)
0:115 1.000000 0:54 Sequence
0:117 Branch: Return with expression 0:54 move second child to first child ( temp 4-component vector of int)
0:117 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:54 'txval411' ( temp 4-component vector of int)
0:54 textureGatherOffset ( temp 4-component vector of int)
0:54 Construct combined texture-sampler ( temp isampler2DShadow)
0:54 'g_tTex2di4' ( uniform itexture2D)
0:54 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:54 c2: direct index for structure ( uniform 2-component vector of float)
0:54 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
0:54 Constant:
0:54 1 (const uint)
0:54 Constant:
0:54 0.750000
0:? Constant:
0:? 1 (const int)
0:? -1 (const int)
0:55 Sequence
0:55 move second child to first child ( temp 4-component vector of uint)
0:55 'txval421' ( temp 4-component vector of uint)
0:55 textureGatherOffset ( temp 4-component vector of uint)
0:55 Construct combined texture-sampler ( temp usampler2DShadow)
0:55 'g_tTex2du4' ( uniform utexture2D)
0:55 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:55 c2: direct index for structure ( uniform 2-component vector of float)
0:55 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
0:55 Constant:
0:55 1 (const uint)
0:55 Constant:
0:55 0.750000
0:? Constant:
0:? 1 (const int)
0:? 1 (const int)
0:110 move second child to first child ( temp 4-component vector of float)
0:110 Color: direct index for structure ( temp 4-component vector of float)
0:110 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:110 Constant:
0:110 0 (const int)
0:110 Constant:
0:110 1.000000
0:110 1.000000
0:110 1.000000
0:110 1.000000
0:111 move second child to first child ( temp float)
0:111 Depth: direct index for structure ( temp float)
0:111 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:111 Constant:
0:111 1 (const int)
0:111 Constant:
0:111 1.000000
0:113 Branch: Return with expression
0:113 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Definition: main( ( temp void) 0:38 Function Definition: main( ( temp void)
0:38 Function Parameters: 0:38 Function Parameters:
0:? Sequence 0:? Sequence
@ -300,25 +348,73 @@ gl_FragCoord origin is upper left
0:51 1 (const int) 0:51 1 (const int)
0:51 1 (const int) 0:51 1 (const int)
0:51 1 (const int) 0:51 1 (const int)
0:114 move second child to first child ( temp 4-component vector of float) 0:53 Sequence
0:114 Color: direct index for structure ( temp 4-component vector of float) 0:53 move second child to first child ( temp 4-component vector of float)
0:114 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 'txval401' ( temp 4-component vector of float)
0:114 Constant: 0:53 textureGatherOffset ( temp 4-component vector of float)
0:114 0 (const int) 0:53 Construct combined texture-sampler ( temp sampler2DShadow)
0:114 Constant: 0:53 'g_tTex2df4' ( uniform texture2D)
0:114 1.000000 0:53 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:114 1.000000 0:53 c2: direct index for structure ( uniform 2-component vector of float)
0:114 1.000000 0:53 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
0:114 1.000000 0:53 Constant:
0:115 move second child to first child ( temp float) 0:53 1 (const uint)
0:115 Depth: direct index for structure ( temp float) 0:53 Constant:
0:115 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:53 0.750000
0:115 Constant: 0:? Constant:
0:115 1 (const int) 0:? 1 (const int)
0:115 Constant: 0:? 0 (const int)
0:115 1.000000 0:54 Sequence
0:117 Branch: Return with expression 0:54 move second child to first child ( temp 4-component vector of int)
0:117 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) 0:54 'txval411' ( temp 4-component vector of int)
0:54 textureGatherOffset ( temp 4-component vector of int)
0:54 Construct combined texture-sampler ( temp isampler2DShadow)
0:54 'g_tTex2di4' ( uniform itexture2D)
0:54 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:54 c2: direct index for structure ( uniform 2-component vector of float)
0:54 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
0:54 Constant:
0:54 1 (const uint)
0:54 Constant:
0:54 0.750000
0:? Constant:
0:? 1 (const int)
0:? -1 (const int)
0:55 Sequence
0:55 move second child to first child ( temp 4-component vector of uint)
0:55 'txval421' ( temp 4-component vector of uint)
0:55 textureGatherOffset ( temp 4-component vector of uint)
0:55 Construct combined texture-sampler ( temp usampler2DShadow)
0:55 'g_tTex2du4' ( uniform utexture2D)
0:55 'g_sSampCmp' (layout( binding=0) uniform sampler)
0:55 c2: direct index for structure ( uniform 2-component vector of float)
0:55 'anon@0' (layout( row_major std140) uniform block{ uniform float c1, uniform 2-component vector of float c2, uniform 3-component vector of float c3, uniform 4-component vector of float c4})
0:55 Constant:
0:55 1 (const uint)
0:55 Constant:
0:55 0.750000
0:? Constant:
0:? 1 (const int)
0:? 1 (const int)
0:110 move second child to first child ( temp 4-component vector of float)
0:110 Color: direct index for structure ( temp 4-component vector of float)
0:110 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:110 Constant:
0:110 0 (const int)
0:110 Constant:
0:110 1.000000
0:110 1.000000
0:110 1.000000
0:110 1.000000
0:111 move second child to first child ( temp float)
0:111 Depth: direct index for structure ( temp float)
0:111 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:111 Constant:
0:111 1 (const int)
0:111 Constant:
0:111 1.000000
0:113 Branch: Return with expression
0:113 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:38 Function Definition: main( ( temp void) 0:38 Function Definition: main( ( temp void)
0:38 Function Parameters: 0:38 Function Parameters:
0:? Sequence 0:? Sequence
@ -359,13 +455,13 @@ gl_FragCoord origin is upper left
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 146 // Id's are bound by 167
Capability Shader Capability Shader
Capability Sampled1D Capability Sampled1D
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 111 115 EntryPoint Fragment 4 "main" 132 136
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source HLSL 500 Source HLSL 500
Name 4 "main" Name 4 "main"
@ -389,20 +485,23 @@ gl_FragCoord origin is upper left
Name 72 "txval004" Name 72 "txval004"
Name 82 "txval014" Name 82 "txval014"
Name 90 "txval024" Name 90 "txval024"
Name 99 "psout" Name 98 "txval401"
Name 108 "flattenTemp" Name 105 "txval411"
Name 111 "Color" Name 112 "txval421"
Name 115 "Depth" Name 120 "psout"
Name 120 "g_tTex1df4a" Name 129 "flattenTemp"
Name 121 "g_tTex1df4" Name 132 "Color"
Name 124 "g_tTex1di4" Name 136 "Depth"
Name 127 "g_tTex1du4" Name 141 "g_tTex1df4a"
Name 130 "g_tTex3df4" Name 142 "g_tTex1df4"
Name 133 "g_tTex3di4" Name 145 "g_tTex1di4"
Name 136 "g_tTex3du4" Name 148 "g_tTex1du4"
Name 139 "g_tTexcdf4" Name 151 "g_tTex3df4"
Name 142 "g_tTexcdi4" Name 154 "g_tTex3di4"
Name 145 "g_tTexcdu4" Name 157 "g_tTex3du4"
Name 160 "g_tTexcdf4"
Name 163 "g_tTexcdi4"
Name 166 "g_tTexcdu4"
Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 16(g_tTex2df4) DescriptorSet 0
Decorate 20(g_sSampCmp) DescriptorSet 0 Decorate 20(g_sSampCmp) DescriptorSet 0
Decorate 20(g_sSampCmp) Binding 0 Decorate 20(g_sSampCmp) Binding 0
@ -414,20 +513,20 @@ gl_FragCoord origin is upper left
Decorate 29 DescriptorSet 0 Decorate 29 DescriptorSet 0
Decorate 45(g_tTex2di4) DescriptorSet 0 Decorate 45(g_tTex2di4) DescriptorSet 0
Decorate 62(g_tTex2du4) DescriptorSet 0 Decorate 62(g_tTex2du4) DescriptorSet 0
Decorate 111(Color) Location 0 Decorate 132(Color) Location 0
Decorate 115(Depth) BuiltIn FragDepth Decorate 136(Depth) BuiltIn FragDepth
Decorate 120(g_tTex1df4a) DescriptorSet 0 Decorate 141(g_tTex1df4a) DescriptorSet 0
Decorate 120(g_tTex1df4a) Binding 1 Decorate 141(g_tTex1df4a) Binding 1
Decorate 121(g_tTex1df4) DescriptorSet 0 Decorate 142(g_tTex1df4) DescriptorSet 0
Decorate 121(g_tTex1df4) Binding 0 Decorate 142(g_tTex1df4) Binding 0
Decorate 124(g_tTex1di4) DescriptorSet 0 Decorate 145(g_tTex1di4) DescriptorSet 0
Decorate 127(g_tTex1du4) DescriptorSet 0 Decorate 148(g_tTex1du4) DescriptorSet 0
Decorate 130(g_tTex3df4) DescriptorSet 0 Decorate 151(g_tTex3df4) DescriptorSet 0
Decorate 133(g_tTex3di4) DescriptorSet 0 Decorate 154(g_tTex3di4) DescriptorSet 0
Decorate 136(g_tTex3du4) DescriptorSet 0 Decorate 157(g_tTex3du4) DescriptorSet 0
Decorate 139(g_tTexcdf4) DescriptorSet 0 Decorate 160(g_tTexcdf4) DescriptorSet 0
Decorate 142(g_tTexcdi4) DescriptorSet 0 Decorate 163(g_tTexcdi4) DescriptorSet 0
Decorate 145(g_tTexcdu4) DescriptorSet 0 Decorate 166(g_tTexcdu4) DescriptorSet 0
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -478,53 +577,53 @@ gl_FragCoord origin is upper left
80: 79 ConstantComposite 38 38 38 38 80: 79 ConstantComposite 38 38 38 38
88: 79 ConstantComposite 54 54 54 54 88: 79 ConstantComposite 54 54 54 54
96: 79 ConstantComposite 70 70 70 70 96: 79 ConstantComposite 70 70 70 70
98: TypePointer Function 8(PS_OUTPUT) 119: TypePointer Function 8(PS_OUTPUT)
100: 6(float) Constant 1065353216 121: 6(float) Constant 1065353216
101: 7(fvec4) ConstantComposite 100 100 100 100 122: 7(fvec4) ConstantComposite 121 121 121 121
103: TypePointer Function 6(float) 124: TypePointer Function 6(float)
110: TypePointer Output 7(fvec4) 131: TypePointer Output 7(fvec4)
111(Color): 110(ptr) Variable Output 132(Color): 131(ptr) Variable Output
114: TypePointer Output 6(float) 135: TypePointer Output 6(float)
115(Depth): 114(ptr) Variable Output 136(Depth): 135(ptr) Variable Output
118: TypeImage 6(float) 1D sampled format:Unknown 139: TypeImage 6(float) 1D sampled format:Unknown
119: TypePointer UniformConstant 118 140: TypePointer UniformConstant 139
120(g_tTex1df4a): 119(ptr) Variable UniformConstant 141(g_tTex1df4a): 140(ptr) Variable UniformConstant
121(g_tTex1df4): 119(ptr) Variable UniformConstant 142(g_tTex1df4): 140(ptr) Variable UniformConstant
122: TypeImage 30(int) 1D sampled format:Unknown 143: TypeImage 30(int) 1D sampled format:Unknown
123: TypePointer UniformConstant 122
124(g_tTex1di4): 123(ptr) Variable UniformConstant
125: TypeImage 56(int) 1D sampled format:Unknown
126: TypePointer UniformConstant 125
127(g_tTex1du4): 126(ptr) Variable UniformConstant
128: TypeImage 6(float) 3D sampled format:Unknown
129: TypePointer UniformConstant 128
130(g_tTex3df4): 129(ptr) Variable UniformConstant
131: TypeImage 30(int) 3D sampled format:Unknown
132: TypePointer UniformConstant 131
133(g_tTex3di4): 132(ptr) Variable UniformConstant
134: TypeImage 56(int) 3D sampled format:Unknown
135: TypePointer UniformConstant 134
136(g_tTex3du4): 135(ptr) Variable UniformConstant
137: TypeImage 6(float) Cube sampled format:Unknown
138: TypePointer UniformConstant 137
139(g_tTexcdf4): 138(ptr) Variable UniformConstant
140: TypeImage 30(int) Cube sampled format:Unknown
141: TypePointer UniformConstant 140
142(g_tTexcdi4): 141(ptr) Variable UniformConstant
143: TypeImage 56(int) Cube sampled format:Unknown
144: TypePointer UniformConstant 143 144: TypePointer UniformConstant 143
145(g_tTexcdu4): 144(ptr) Variable UniformConstant 145(g_tTex1di4): 144(ptr) Variable UniformConstant
146: TypeImage 56(int) 1D sampled format:Unknown
147: TypePointer UniformConstant 146
148(g_tTex1du4): 147(ptr) Variable UniformConstant
149: TypeImage 6(float) 3D sampled format:Unknown
150: TypePointer UniformConstant 149
151(g_tTex3df4): 150(ptr) Variable UniformConstant
152: TypeImage 30(int) 3D sampled format:Unknown
153: TypePointer UniformConstant 152
154(g_tTex3di4): 153(ptr) Variable UniformConstant
155: TypeImage 56(int) 3D sampled format:Unknown
156: TypePointer UniformConstant 155
157(g_tTex3du4): 156(ptr) Variable UniformConstant
158: TypeImage 6(float) Cube sampled format:Unknown
159: TypePointer UniformConstant 158
160(g_tTexcdf4): 159(ptr) Variable UniformConstant
161: TypeImage 30(int) Cube sampled format:Unknown
162: TypePointer UniformConstant 161
163(g_tTexcdi4): 162(ptr) Variable UniformConstant
164: TypeImage 56(int) Cube sampled format:Unknown
165: TypePointer UniformConstant 164
166(g_tTexcdu4): 165(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
108(flattenTemp): 98(ptr) Variable Function 129(flattenTemp): 119(ptr) Variable Function
109:8(PS_OUTPUT) FunctionCall 10(@main() 130:8(PS_OUTPUT) FunctionCall 10(@main()
Store 108(flattenTemp) 109 Store 129(flattenTemp) 130
112: 12(ptr) AccessChain 108(flattenTemp) 37 133: 12(ptr) AccessChain 129(flattenTemp) 37
113: 7(fvec4) Load 112 134: 7(fvec4) Load 133
Store 111(Color) 113 Store 132(Color) 134
116: 103(ptr) AccessChain 108(flattenTemp) 31 137: 124(ptr) AccessChain 129(flattenTemp) 31
117: 6(float) Load 116 138: 6(float) Load 137
Store 115(Depth) 117 Store 136(Depth) 138
Return Return
FunctionEnd FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9 10(@main():8(PS_OUTPUT) Function None 9
@ -535,7 +634,10 @@ gl_FragCoord origin is upper left
72(txval004): 12(ptr) Variable Function 72(txval004): 12(ptr) Variable Function
82(txval014): 41(ptr) Variable Function 82(txval014): 41(ptr) Variable Function
90(txval024): 58(ptr) Variable Function 90(txval024): 58(ptr) Variable Function
99(psout): 98(ptr) Variable Function 98(txval401): 12(ptr) Variable Function
105(txval411): 41(ptr) Variable Function
112(txval421): 58(ptr) Variable Function
120(psout): 119(ptr) Variable Function
17: 14 Load 16(g_tTex2df4) 17: 14 Load 16(g_tTex2df4)
21: 18 Load 20(g_sSampCmp) 21: 18 Load 20(g_sSampCmp)
24: 23 SampledImage 17 21 24: 23 SampledImage 17 21
@ -578,10 +680,31 @@ gl_FragCoord origin is upper left
95: 25(fvec2) Load 94 95: 25(fvec2) Load 94
97: 57(ivec4) ImageDrefGather 93 95 35 ConstOffsets 96 97: 57(ivec4) ImageDrefGather 93 95 35 ConstOffsets 96
Store 90(txval024) 97 Store 90(txval024) 97
102: 12(ptr) AccessChain 99(psout) 37 99: 14 Load 16(g_tTex2df4)
Store 102 101 100: 18 Load 20(g_sSampCmp)
104: 103(ptr) AccessChain 99(psout) 31 101: 23 SampledImage 99 100
Store 104 100 102: 32(ptr) AccessChain 29 31
105:8(PS_OUTPUT) Load 99(psout) 103: 25(fvec2) Load 102
ReturnValue 105 104: 7(fvec4) ImageDrefGather 101 103 35 ConstOffset 38
Store 98(txval401) 104
106: 43 Load 45(g_tTex2di4)
107: 18 Load 20(g_sSampCmp)
108: 49 SampledImage 106 107
109: 32(ptr) AccessChain 29 31
110: 25(fvec2) Load 109
111: 40(ivec4) ImageDrefGather 108 110 35 ConstOffset 54
Store 105(txval411) 111
113: 60 Load 62(g_tTex2du4)
114: 18 Load 20(g_sSampCmp)
115: 66 SampledImage 113 114
116: 32(ptr) AccessChain 29 31
117: 25(fvec2) Load 116
118: 57(ivec4) ImageDrefGather 115 117 35 ConstOffset 70
Store 112(txval421) 118
123: 12(ptr) AccessChain 120(psout) 37
Store 123 122
125: 124(ptr) AccessChain 120(psout) 31
Store 125 121
126:8(PS_OUTPUT) Load 120(psout)
ReturnValue 126
FunctionEnd FunctionEnd

View File

@ -29,6 +29,10 @@ PS_OUTPUT main()
// no 1D gathers // no 1D gathers
float4 txval80 = g_tTex2df4a . GatherCmp(g_sSampCmp, c3, .75);
int4 txval81 = g_tTex2di4a . GatherCmp(g_sSampCmp, c3, .75);
uint4 txval82 = g_tTex2du4a . GatherCmp(g_sSampCmp, c3, .75);
float4 txval00 = g_tTex2df4a . GatherCmpRed(g_sSampCmp, c3, .75); float4 txval00 = g_tTex2df4a . GatherCmpRed(g_sSampCmp, c3, .75);
int4 txval01 = g_tTex2di4a . GatherCmpRed(g_sSampCmp, c3, .75); int4 txval01 = g_tTex2di4a . GatherCmpRed(g_sSampCmp, c3, .75);
uint4 txval02 = g_tTex2du4a . GatherCmpRed(g_sSampCmp, c3, .75); uint4 txval02 = g_tTex2du4a . GatherCmpRed(g_sSampCmp, c3, .75);

View File

@ -51,6 +51,10 @@ PS_OUTPUT main()
int4 txval31 = g_tTex2di4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75); int4 txval31 = g_tTex2di4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75);
uint4 txval32 = g_tTex2du4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75); uint4 txval32 = g_tTex2du4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75);
float4 txval80 = g_tTex2df4 . GatherCmp(g_sSampCmp, c2, 0.75);
int4 txval81 = g_tTex2di4 . GatherCmp(g_sSampCmp, c2, 0.75);
uint4 txval82 = g_tTex2du4 . GatherCmp(g_sSampCmp, c2, 0.75);
// no 3D gathers // no 3D gathers
float4 txval40 = g_tTexcdf4 . GatherCmpRed(g_sSampCmp, c3, 0.75); float4 txval40 = g_tTexcdf4 . GatherCmpRed(g_sSampCmp, c3, 0.75);
@ -69,6 +73,10 @@ PS_OUTPUT main()
int4 txval71 = g_tTexcdi4 . GatherCmpAlpha(g_sSampCmp, c3, 0.75); int4 txval71 = g_tTexcdi4 . GatherCmpAlpha(g_sSampCmp, c3, 0.75);
uint4 txval72 = g_tTexcdu4 . GatherCmpAlpha(g_sSampCmp, c3, 0.75); uint4 txval72 = g_tTexcdu4 . GatherCmpAlpha(g_sSampCmp, c3, 0.75);
float4 txval90 = g_tTexcdf4 . GatherCmp(g_sSampCmp, c3, 0.75);
int4 txval91 = g_tTexcdi4 . GatherCmp(g_sSampCmp, c3, 0.75);
uint4 txval92 = g_tTexcdu4 . GatherCmp(g_sSampCmp, c3, 0.75);
psout.Color = 1.0; psout.Color = 1.0;
psout.Depth = 1.0; psout.Depth = 1.0;

View File

@ -50,13 +50,9 @@ PS_OUTPUT main()
int4 txval014 = g_tTex2di4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,-1), int2(1,-1), int2(1,-1), int2(1,-1)); int4 txval014 = g_tTex2di4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,-1), int2(1,-1), int2(1,-1), int2(1,-1));
uint4 txval024 = g_tTex2du4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,1), int2(1,1), int2(1,1), int2(1,1)); uint4 txval024 = g_tTex2du4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,1), int2(1,1), int2(1,1), int2(1,1));
// float4 txval00s = g_tTex2df4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,0), status); float4 txval401 = g_tTex2df4 . GatherCmp(g_sSampCmp, c2, 0.75, int2(1,0));
// int4 txval01s = g_tTex2di4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,0), status); int4 txval411 = g_tTex2di4 . GatherCmp(g_sSampCmp, c2, 0.75, int2(1,-1));
// uint4 txval02s = g_tTex2du4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,0), status); uint4 txval421 = g_tTex2du4 . GatherCmp(g_sSampCmp, c2, 0.75, int2(1,1));
// float4 txval004s = g_tTex2df4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0), status);
// int4 txval014s = g_tTex2di4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0), status);
// uint4 txval024s = g_tTex2du4 . GatherCmpRed(g_sSampCmp, c2, 0.75, int2(1,0), int2(1,0), int2(1,0), int2(1,0), status);
// GatherCmpGreen not implemented pending OpImageDrefGather component input // GatherCmpGreen not implemented pending OpImageDrefGather component input
// float4 txval101 = g_tTex2df4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, int2(1,0)); // float4 txval101 = g_tTex2df4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, int2(1,0));

View File

@ -36,6 +36,10 @@ PS_OUTPUT main()
// no 1D gathers // no 1D gathers
float4 txval401 = g_tTex2df4a . GatherCmp(g_sSampCmp, c3, 0.75, o2);
int4 txval411 = g_tTex2di4a . GatherCmp(g_sSampCmp, c3, 0.75, o2);
uint4 txval421 = g_tTex2du4a . GatherCmp(g_sSampCmp, c3, 0.75, o2);
float4 txval001 = g_tTex2df4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2); float4 txval001 = g_tTex2df4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2);
int4 txval011 = g_tTex2di4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2); int4 txval011 = g_tTex2di4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2);
uint4 txval021 = g_tTex2du4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2); uint4 txval021 = g_tTex2du4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2);

View File

@ -111,7 +111,8 @@ bool IsIllegalSample(const glslang::TString& name, const char* argOrder, int dim
name == "GatherAlpha"); name == "GatherAlpha");
const bool isGatherCmp = const bool isGatherCmp =
(name == "GatherCmpRed" || (name == "GatherCmp" ||
name == "GatherCmpRed" ||
name == "GatherCmpGreen" || name == "GatherCmpGreen" ||
name == "GatherCmpBlue" || name == "GatherCmpBlue" ||
name == "GatherCmpAlpha"); name == "GatherCmpAlpha");
@ -824,6 +825,12 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
{ "GatherAlpha", /* O-4 */ "V4", nullptr, "%@,S,V,,,,", "FIU,S,F,I,,,", EShLangAll, true }, { "GatherAlpha", /* O-4 */ "V4", nullptr, "%@,S,V,,,,", "FIU,S,F,I,,,", EShLangAll, true },
{ "GatherAlpha", /* O-4, status */"V4", nullptr, "%@,S,V,,,,,S", "FIU,S,F,I,,,,U", EShLangAll, true }, { "GatherAlpha", /* O-4, status */"V4", nullptr, "%@,S,V,,,,,S", "FIU,S,F,I,,,,U", EShLangAll, true },
{ "GatherCmp", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,s,F,", EShLangAll, true },
{ "GatherCmp", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,s,F,,I", EShLangAll, true },
{ "GatherCmp", /* O, status*/ "V4", nullptr, "%@,S,V,S,V,>S", "FIU,s,F,,I,U", EShLangAll, true },
{ "GatherCmp", /* O-4 */ "V4", nullptr, "%@,S,V,S,V,,,", "FIU,s,F,,I,,,", EShLangAll, true },
{ "GatherCmp", /* O-4, status */"V4", nullptr, "%@,S,V,S,V,,V,S","FIU,s,F,,I,,,,U",EShLangAll, true },
{ "GatherCmpRed", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,s,F,", EShLangAll, true }, { "GatherCmpRed", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,s,F,", EShLangAll, true },
{ "GatherCmpRed", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,s,F,,I", EShLangAll, true }, { "GatherCmpRed", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,s,F,,I", EShLangAll, true },
{ "GatherCmpRed", /* O, status*/ "V4", nullptr, "%@,S,V,S,V,>S", "FIU,s,F,,I,U", EShLangAll, true }, { "GatherCmpRed", /* O, status*/ "V4", nullptr, "%@,S,V,S,V,>S", "FIU,s,F,,I,U", EShLangAll, true },
@ -1203,6 +1210,7 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int /*version*/, EProfile /*profil
symbolTable.relateToOperator(BUILTIN_PREFIX "GatherGreen", EOpMethodGatherGreen); symbolTable.relateToOperator(BUILTIN_PREFIX "GatherGreen", EOpMethodGatherGreen);
symbolTable.relateToOperator(BUILTIN_PREFIX "GatherBlue", EOpMethodGatherBlue); symbolTable.relateToOperator(BUILTIN_PREFIX "GatherBlue", EOpMethodGatherBlue);
symbolTable.relateToOperator(BUILTIN_PREFIX "GatherAlpha", EOpMethodGatherAlpha); symbolTable.relateToOperator(BUILTIN_PREFIX "GatherAlpha", EOpMethodGatherAlpha);
symbolTable.relateToOperator(BUILTIN_PREFIX "GatherCmp", EOpMethodGatherCmpRed); // alias
symbolTable.relateToOperator(BUILTIN_PREFIX "GatherCmpRed", EOpMethodGatherCmpRed); symbolTable.relateToOperator(BUILTIN_PREFIX "GatherCmpRed", EOpMethodGatherCmpRed);
symbolTable.relateToOperator(BUILTIN_PREFIX "GatherCmpGreen", EOpMethodGatherCmpGreen); symbolTable.relateToOperator(BUILTIN_PREFIX "GatherCmpGreen", EOpMethodGatherCmpGreen);
symbolTable.relateToOperator(BUILTIN_PREFIX "GatherCmpBlue", EOpMethodGatherCmpBlue); symbolTable.relateToOperator(BUILTIN_PREFIX "GatherCmpBlue", EOpMethodGatherCmpBlue);