diff --git a/Test/baseResults/hlsl.intrinsics.promote.frag.out b/Test/baseResults/hlsl.intrinsics.promote.frag.out index a3d061e129ac6ba0fb35a5a3a6f12010c5f5e085..6e3b6dfc276c6fc181d49591c33e45464c8e1a05 100644 --- a/Test/baseResults/hlsl.intrinsics.promote.frag.out +++ b/Test/baseResults/hlsl.intrinsics.promote.frag.out @@ -341,8 +341,8 @@ gl_FragCoord origin is upper left 0:51 move second child to first child ( temp float) 0:51 'r50' ( temp float) 0:51 Construct float ( temp float) -0:? textureFetch ( temp 4-component vector of float) -0:51 'g_tTexbfs' (layout( r32f) uniform samplerBuffer) +0:? imageLoad ( temp 4-component vector of float) +0:51 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer) 0:51 Convert uint to int ( temp int) 0:51 upos: direct index for structure (layout( offset=48) uniform uint) 0:51 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int i, layout( offset=4) uniform uint u, layout( offset=8) uniform float f, layout( offset=12) uniform bool b, layout( offset=16) uniform 2-component vector of int i2, layout( offset=24) uniform 2-component vector of uint u2, layout( offset=32) uniform 2-component vector of float f2, layout( offset=40) uniform 2-component vector of bool b2, layout( offset=48) uniform uint upos, layout( offset=52) uniform float fpos}) @@ -352,8 +352,8 @@ gl_FragCoord origin is upper left 0:52 move second child to first child ( temp float) 0:52 'r51' ( temp float) 0:52 Construct float ( temp float) -0:? textureFetch ( temp 4-component vector of float) -0:52 'g_tTexbfs' (layout( r32f) uniform samplerBuffer) +0:? imageLoad ( temp 4-component vector of float) +0:52 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer) 0:52 Convert float to int ( temp int) 0:52 fpos: direct index for structure (layout( offset=52) uniform float) 0:52 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int i, layout( offset=4) uniform uint u, layout( offset=8) uniform float f, layout( offset=12) uniform bool b, layout( offset=16) uniform 2-component vector of int i2, layout( offset=24) uniform 2-component vector of uint u2, layout( offset=32) uniform 2-component vector of float f2, layout( offset=40) uniform 2-component vector of bool b2, layout( offset=48) uniform uint upos, layout( offset=52) uniform float fpos}) @@ -436,7 +436,7 @@ gl_FragCoord origin is upper left 0:20 Constant: 0:20 0 (const int) 0:? Linker Objects -0:? 'g_tTexbfs' (layout( r32f) uniform samplerBuffer) +0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer) 0:? 'g_tTex1df4' ( uniform texture1D) 0:? 'color' (layout( location=0) out 4-component vector of float) 0:? 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int i, layout( offset=4) uniform uint u, layout( offset=8) uniform float f, layout( offset=12) uniform bool b, layout( offset=16) uniform 2-component vector of int i2, layout( offset=24) uniform 2-component vector of uint u2, layout( offset=32) uniform 2-component vector of float f2, layout( offset=40) uniform 2-component vector of bool b2, layout( offset=48) uniform uint upos, layout( offset=52) uniform float fpos}) @@ -787,8 +787,8 @@ gl_FragCoord origin is upper left 0:51 move second child to first child ( temp float) 0:51 'r50' ( temp float) 0:51 Construct float ( temp float) -0:? textureFetch ( temp 4-component vector of float) -0:51 'g_tTexbfs' (layout( r32f) uniform samplerBuffer) +0:? imageLoad ( temp 4-component vector of float) +0:51 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer) 0:51 Convert uint to int ( temp int) 0:51 upos: direct index for structure (layout( offset=48) uniform uint) 0:51 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int i, layout( offset=4) uniform uint u, layout( offset=8) uniform float f, layout( offset=12) uniform bool b, layout( offset=16) uniform 2-component vector of int i2, layout( offset=24) uniform 2-component vector of uint u2, layout( offset=32) uniform 2-component vector of float f2, layout( offset=40) uniform 2-component vector of bool b2, layout( offset=48) uniform uint upos, layout( offset=52) uniform float fpos}) @@ -798,8 +798,8 @@ gl_FragCoord origin is upper left 0:52 move second child to first child ( temp float) 0:52 'r51' ( temp float) 0:52 Construct float ( temp float) -0:? textureFetch ( temp 4-component vector of float) -0:52 'g_tTexbfs' (layout( r32f) uniform samplerBuffer) +0:? imageLoad ( temp 4-component vector of float) +0:52 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer) 0:52 Convert float to int ( temp int) 0:52 fpos: direct index for structure (layout( offset=52) uniform float) 0:52 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int i, layout( offset=4) uniform uint u, layout( offset=8) uniform float f, layout( offset=12) uniform bool b, layout( offset=16) uniform 2-component vector of int i2, layout( offset=24) uniform 2-component vector of uint u2, layout( offset=32) uniform 2-component vector of float f2, layout( offset=40) uniform 2-component vector of bool b2, layout( offset=48) uniform uint upos, layout( offset=52) uniform float fpos}) @@ -882,14 +882,14 @@ gl_FragCoord origin is upper left 0:20 Constant: 0:20 0 (const int) 0:? Linker Objects -0:? 'g_tTexbfs' (layout( r32f) uniform samplerBuffer) +0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer) 0:? 'g_tTex1df4' ( uniform texture1D) 0:? 'color' (layout( location=0) out 4-component vector of float) 0:? 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int i, layout( offset=4) uniform uint u, layout( offset=8) uniform float f, layout( offset=12) uniform bool b, layout( offset=16) uniform 2-component vector of int i2, layout( offset=24) uniform 2-component vector of uint u2, layout( offset=32) uniform 2-component vector of float f2, layout( offset=40) uniform 2-component vector of bool b2, layout( offset=48) uniform uint upos, layout( offset=52) uniform float fpos}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 325 +// Id's are bound by 322 Capability Shader Capability Sampled1D @@ -897,7 +897,7 @@ gl_FragCoord origin is upper left Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 322 + EntryPoint Fragment 4 "main" 319 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 8 "PS_OUTPUT" @@ -938,19 +938,19 @@ gl_FragCoord origin is upper left Name 229 "r42" Name 243 "r43" Name 255 "r50" - Name 259 "g_tTexbfs" - Name 268 "r51" - Name 277 "sizeQueryTemp" - Name 280 "g_tTex1df4" - Name 283 "WidthI" - Name 286 "sizeQueryTemp" - Name 292 "NumberOfLevelsU" - Name 295 "sizeQueryTemp" - Name 298 "WidthU" - Name 300 "NumberOfLevelsI" - Name 304 "sizeQueryTemp" - Name 313 "ps_output" - Name 322 "color" + Name 258 "g_tTexbfs" + Name 266 "r51" + Name 274 "sizeQueryTemp" + Name 277 "g_tTex1df4" + Name 280 "WidthI" + Name 283 "sizeQueryTemp" + Name 289 "NumberOfLevelsU" + Name 292 "sizeQueryTemp" + Name 295 "WidthU" + Name 297 "NumberOfLevelsI" + Name 301 "sizeQueryTemp" + Name 310 "ps_output" + Name 319 "color" MemberDecorate 19($Global) 0 Offset 0 MemberDecorate 19($Global) 1 Offset 4 MemberDecorate 19($Global) 2 Offset 8 @@ -963,9 +963,10 @@ gl_FragCoord origin is upper left MemberDecorate 19($Global) 9 Offset 52 Decorate 19($Global) Block Decorate 21 DescriptorSet 0 - Decorate 259(g_tTexbfs) DescriptorSet 0 - Decorate 280(g_tTex1df4) DescriptorSet 0 - Decorate 322(color) Location 0 + Decorate 258(g_tTexbfs) DescriptorSet 0 + Decorate 258(g_tTexbfs) NonWritable + Decorate 277(g_tTex1df4) DescriptorSet 0 + Decorate 319(color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -1012,25 +1013,24 @@ gl_FragCoord origin is upper left 107: 16(ivec2) ConstantComposite 44 44 109: 14(int) Constant 4 110: TypePointer Uniform 16(ivec2) - 256: TypeImage 6(float) Buffer sampled format:R32f - 257: TypeSampledImage 256 - 258: TypePointer UniformConstant 257 - 259(g_tTexbfs): 258(ptr) Variable UniformConstant - 261: 14(int) Constant 8 - 270: 14(int) Constant 9 - 278: TypeImage 6(float) 1D sampled format:Unknown - 279: TypePointer UniformConstant 278 - 280(g_tTex1df4): 279(ptr) Variable UniformConstant - 288: 15(int) Constant 6 - 312: TypePointer Function 8(PS_OUTPUT) - 316: TypePointer Function 7(fvec4) - 321: TypePointer Output 7(fvec4) - 322(color): 321(ptr) Variable Output + 256: TypeImage 6(float) Buffer nonsampled format:R32f + 257: TypePointer UniformConstant 256 + 258(g_tTexbfs): 257(ptr) Variable UniformConstant + 260: 14(int) Constant 8 + 268: 14(int) Constant 9 + 275: TypeImage 6(float) 1D sampled format:Unknown + 276: TypePointer UniformConstant 275 + 277(g_tTex1df4): 276(ptr) Variable UniformConstant + 285: 15(int) Constant 6 + 309: TypePointer Function 8(PS_OUTPUT) + 313: TypePointer Function 7(fvec4) + 318: TypePointer Output 7(fvec4) + 319(color): 318(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 323:8(PS_OUTPUT) FunctionCall 10(@main() - 324: 7(fvec4) CompositeExtract 323 0 - Store 322(color) 324 + 320:8(PS_OUTPUT) FunctionCall 10(@main() + 321: 7(fvec4) CompositeExtract 320 0 + Store 319(color) 321 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 @@ -1058,16 +1058,16 @@ gl_FragCoord origin is upper left 229(r42): 73(ptr) Variable Function 243(r43): 101(ptr) Variable Function 255(r50): 12(ptr) Variable Function - 268(r51): 12(ptr) Variable Function -277(sizeQueryTemp): 37(ptr) Variable Function - 283(WidthI): 48(ptr) Variable Function -286(sizeQueryTemp): 37(ptr) Variable Function -292(NumberOfLevelsU): 37(ptr) Variable Function -295(sizeQueryTemp): 37(ptr) Variable Function - 298(WidthU): 37(ptr) Variable Function -300(NumberOfLevelsI): 48(ptr) Variable Function -304(sizeQueryTemp): 37(ptr) Variable Function - 313(ps_output): 312(ptr) Variable Function + 266(r51): 12(ptr) Variable Function +274(sizeQueryTemp): 37(ptr) Variable Function + 280(WidthI): 48(ptr) Variable Function +283(sizeQueryTemp): 37(ptr) Variable Function +289(NumberOfLevelsU): 37(ptr) Variable Function +292(sizeQueryTemp): 37(ptr) Variable Function + 295(WidthU): 37(ptr) Variable Function +297(NumberOfLevelsI): 48(ptr) Variable Function +301(sizeQueryTemp): 37(ptr) Variable Function + 310(ps_output): 309(ptr) Variable Function 24: 23(ptr) AccessChain 21 22 25: 15(int) Load 24 28: 26(bool) INotEqual 25 27 @@ -1271,60 +1271,58 @@ gl_FragCoord origin is upper left 253: 17(ivec2) ExtInst 1(GLSL.std.450) 44(UClamp) 247 250 252 254: 16(ivec2) Bitcast 253 Store 243(r43) 254 - 260: 257 Load 259(g_tTexbfs) - 262: 23(ptr) AccessChain 21 261 - 263: 15(int) Load 262 - 264: 14(int) Bitcast 263 - 265: 256 Image 260 - 266: 7(fvec4) ImageFetch 265 264 - 267: 6(float) CompositeExtract 266 0 - Store 255(r50) 267 - 269: 257 Load 259(g_tTexbfs) - 271: 33(ptr) AccessChain 21 270 - 272: 6(float) Load 271 - 273: 14(int) ConvertFToS 272 - 274: 256 Image 269 - 275: 7(fvec4) ImageFetch 274 273 - 276: 6(float) CompositeExtract 275 0 - Store 268(r51) 276 - 281: 278 Load 280(g_tTex1df4) - 282: 15(int) ImageQuerySizeLod 281 53 - Store 277(sizeQueryTemp) 282 - 284: 15(int) Load 277(sizeQueryTemp) - 285: 14(int) Bitcast 284 - Store 283(WidthI) 285 - 287: 278 Load 280(g_tTex1df4) - 289: 15(int) ImageQuerySizeLod 287 288 - Store 286(sizeQueryTemp) 289 - 290: 15(int) Load 286(sizeQueryTemp) - 291: 14(int) Bitcast 290 - Store 283(WidthI) 291 - 293: 278 Load 280(g_tTex1df4) - 294: 15(int) ImageQueryLevels 293 - Store 292(NumberOfLevelsU) 294 - 296: 278 Load 280(g_tTex1df4) - 297: 15(int) ImageQuerySizeLod 296 288 - Store 295(sizeQueryTemp) 297 - 299: 15(int) Load 295(sizeQueryTemp) - Store 298(WidthU) 299 - 301: 278 Load 280(g_tTex1df4) - 302: 15(int) ImageQueryLevels 301 - 303: 14(int) Bitcast 302 - Store 300(NumberOfLevelsI) 303 - 305: 278 Load 280(g_tTex1df4) - 306: 15(int) ImageQuerySizeLod 305 288 - Store 304(sizeQueryTemp) 306 - 307: 15(int) Load 304(sizeQueryTemp) + 259: 256 Load 258(g_tTexbfs) + 261: 23(ptr) AccessChain 21 260 + 262: 15(int) Load 261 + 263: 14(int) Bitcast 262 + 264: 7(fvec4) ImageRead 259 263 + 265: 6(float) CompositeExtract 264 0 + Store 255(r50) 265 + 267: 256 Load 258(g_tTexbfs) + 269: 33(ptr) AccessChain 21 268 + 270: 6(float) Load 269 + 271: 14(int) ConvertFToS 270 + 272: 7(fvec4) ImageRead 267 271 + 273: 6(float) CompositeExtract 272 0 + Store 266(r51) 273 + 278: 275 Load 277(g_tTex1df4) + 279: 15(int) ImageQuerySizeLod 278 53 + Store 274(sizeQueryTemp) 279 + 281: 15(int) Load 274(sizeQueryTemp) + 282: 14(int) Bitcast 281 + Store 280(WidthI) 282 + 284: 275 Load 277(g_tTex1df4) + 286: 15(int) ImageQuerySizeLod 284 285 + Store 283(sizeQueryTemp) 286 + 287: 15(int) Load 283(sizeQueryTemp) + 288: 14(int) Bitcast 287 + Store 280(WidthI) 288 + 290: 275 Load 277(g_tTex1df4) + 291: 15(int) ImageQueryLevels 290 + Store 289(NumberOfLevelsU) 291 + 293: 275 Load 277(g_tTex1df4) + 294: 15(int) ImageQuerySizeLod 293 285 + Store 292(sizeQueryTemp) 294 + 296: 15(int) Load 292(sizeQueryTemp) + Store 295(WidthU) 296 + 298: 275 Load 277(g_tTex1df4) + 299: 15(int) ImageQueryLevels 298 + 300: 14(int) Bitcast 299 + Store 297(NumberOfLevelsI) 300 + 302: 275 Load 277(g_tTex1df4) + 303: 15(int) ImageQuerySizeLod 302 285 + Store 301(sizeQueryTemp) 303 + 304: 15(int) Load 301(sizeQueryTemp) + 305: 14(int) Bitcast 304 + Store 280(WidthI) 305 + 306: 275 Load 277(g_tTex1df4) + 307: 15(int) ImageQueryLevels 306 308: 14(int) Bitcast 307 - Store 283(WidthI) 308 - 309: 278 Load 280(g_tTex1df4) - 310: 15(int) ImageQueryLevels 309 - 311: 14(int) Bitcast 310 - Store 300(NumberOfLevelsI) 311 - 314: 6(float) Load 13(r00) - 315: 7(fvec4) CompositeConstruct 314 314 314 314 - 317: 316(ptr) AccessChain 313(ps_output) 53 - Store 317 315 - 318:8(PS_OUTPUT) Load 313(ps_output) - ReturnValue 318 + Store 297(NumberOfLevelsI) 308 + 311: 6(float) Load 13(r00) + 312: 7(fvec4) CompositeConstruct 311 311 311 311 + 314: 313(ptr) AccessChain 310(ps_output) 53 + Store 314 312 + 315:8(PS_OUTPUT) Load 310(ps_output) + ReturnValue 315 FunctionEnd diff --git a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out index df1a2a7d864ea452b0e42c764818010584d45973..5a922db5cc79bc8dbc7ec232f1799d552606450b 100644 --- a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out +++ b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out @@ -94,7 +94,7 @@ gl_FragCoord origin is upper left 0:20 Constant: 0:20 0 (const int) 0:? Linker Objects -0:? 'g_tTexbfs' (layout( r32f) uniform samplerBuffer) +0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer) 0:? 'g_tTex1df4' ( uniform texture1D) 0:? 'color' (layout( location=0) out 4-component vector of float) 0:? 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int i, layout( offset=4) uniform uint u, layout( offset=8) uniform float f, layout( offset=12) uniform bool b, layout( offset=16) uniform 2-component vector of int i2, layout( offset=24) uniform 2-component vector of uint u2, layout( offset=32) uniform 2-component vector of float f2, layout( offset=40) uniform 2-component vector of bool b2, layout( offset=48) uniform uint upos, layout( offset=52) uniform float fpos}) @@ -198,14 +198,14 @@ gl_FragCoord origin is upper left 0:20 Constant: 0:20 0 (const int) 0:? Linker Objects -0:? 'g_tTexbfs' (layout( r32f) uniform samplerBuffer) +0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer) 0:? 'g_tTex1df4' ( uniform texture1D) 0:? 'color' (layout( location=0) out 4-component vector of float) 0:? 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int i, layout( offset=4) uniform uint u, layout( offset=8) uniform float f, layout( offset=12) uniform bool b, layout( offset=16) uniform 2-component vector of int i2, layout( offset=24) uniform 2-component vector of uint u2, layout( offset=32) uniform 2-component vector of float f2, layout( offset=40) uniform 2-component vector of bool b2, layout( offset=48) uniform uint upos, layout( offset=52) uniform float fpos}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 81 +// Id's are bound by 80 Capability Shader Capability Sampled1D @@ -242,7 +242,7 @@ gl_FragCoord origin is upper left Name 57 "sizeQueryTemp" Name 66 "ps_output" Name 74 "color" - Name 80 "g_tTexbfs" + Name 79 "g_tTexbfs" MemberDecorate 17($Global) 0 Offset 0 MemberDecorate 17($Global) 1 Offset 4 MemberDecorate 17($Global) 2 Offset 8 @@ -257,7 +257,8 @@ gl_FragCoord origin is upper left Decorate 19 DescriptorSet 0 Decorate 31(g_tTex1df4) DescriptorSet 0 Decorate 74(color) Location 0 - Decorate 80(g_tTexbfs) DescriptorSet 0 + Decorate 79(g_tTexbfs) DescriptorSet 0 + Decorate 79(g_tTexbfs) NonWritable 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -288,10 +289,9 @@ gl_FragCoord origin is upper left 68: TypePointer Function 7(fvec4) 73: TypePointer Output 7(fvec4) 74(color): 73(ptr) Variable Output - 77: TypeImage 6(float) Buffer sampled format:R32f - 78: TypeSampledImage 77 - 79: TypePointer UniformConstant 78 - 80(g_tTexbfs): 79(ptr) Variable UniformConstant + 77: TypeImage 6(float) Buffer nonsampled format:R32f + 78: TypePointer UniformConstant 77 + 79(g_tTexbfs): 78(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 75:8(PS_OUTPUT) FunctionCall 10(@main() diff --git a/Test/baseResults/hlsl.load.buffer.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.dx10.frag.out index e7c0569fef4119317eb5d55f7518f3b4519891f2..298818b9873e8f4047b41fdacff449d4a1e7606c 100644 --- a/Test/baseResults/hlsl.load.buffer.dx10.frag.out +++ b/Test/baseResults/hlsl.load.buffer.dx10.frag.out @@ -8,8 +8,8 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of float) 0:28 'r00' ( temp 4-component vector of float) -0:28 textureFetch ( temp 4-component vector of float) -0:28 'g_tTexbf4' (layout( rgba32f) uniform samplerBuffer) +0:28 imageLoad ( temp 4-component vector of float) +0:28 'g_tTexbf4' (layout( rgba32f) readonly uniform imageBuffer) 0:28 c1: direct index for structure (layout( offset=0) uniform int) 0:28 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int c1, layout( offset=8) uniform 2-component vector of int c2, layout( offset=16) uniform 3-component vector of int c3, layout( offset=32) uniform 4-component vector of int c4, layout( offset=48) uniform int o1, layout( offset=56) uniform 2-component vector of int o2, layout( offset=64) uniform 3-component vector of int o3, layout( offset=80) uniform 4-component vector of int o4}) 0:28 Constant: @@ -17,8 +17,8 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of int) 0:29 'r01' ( temp 4-component vector of int) -0:29 textureFetch ( temp 4-component vector of int) -0:29 'g_tTexbi4' (layout( rgba32i) uniform isamplerBuffer) +0:29 imageLoad ( temp 4-component vector of int) +0:29 'g_tTexbi4' (layout( rgba32i) readonly uniform iimageBuffer) 0:29 c1: direct index for structure (layout( offset=0) uniform int) 0:29 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int c1, layout( offset=8) uniform 2-component vector of int c2, layout( offset=16) uniform 3-component vector of int c3, layout( offset=32) uniform 4-component vector of int c4, layout( offset=48) uniform int o1, layout( offset=56) uniform 2-component vector of int o2, layout( offset=64) uniform 3-component vector of int o3, layout( offset=80) uniform 4-component vector of int o4}) 0:29 Constant: @@ -26,8 +26,8 @@ gl_FragCoord origin is upper left 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of uint) 0:30 'r02' ( temp 4-component vector of uint) -0:30 textureFetch ( temp 4-component vector of uint) -0:30 'g_tTexbu4' (layout( rgba32ui) uniform usamplerBuffer) +0:30 imageLoad ( temp 4-component vector of uint) +0:30 'g_tTexbu4' (layout( rgba32ui) readonly uniform uimageBuffer) 0:30 c1: direct index for structure (layout( offset=0) uniform int) 0:30 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int c1, layout( offset=8) uniform 2-component vector of int c2, layout( offset=16) uniform 3-component vector of int c3, layout( offset=32) uniform 4-component vector of int c4, layout( offset=48) uniform int o1, layout( offset=56) uniform 2-component vector of int o2, layout( offset=64) uniform 3-component vector of int o3, layout( offset=80) uniform 4-component vector of int o4}) 0:30 Constant: @@ -71,10 +71,10 @@ gl_FragCoord origin is upper left 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects -0:? 'g_tTexbf4_test' (layout( binding=0 rgba32f) uniform samplerBuffer) -0:? 'g_tTexbf4' (layout( rgba32f) uniform samplerBuffer) -0:? 'g_tTexbi4' (layout( rgba32i) uniform isamplerBuffer) -0:? 'g_tTexbu4' (layout( rgba32ui) uniform usamplerBuffer) +0:? 'g_tTexbf4_test' (layout( binding=0 rgba32f) readonly uniform imageBuffer) +0:? 'g_tTexbf4' (layout( rgba32f) readonly uniform imageBuffer) +0:? 'g_tTexbi4' (layout( rgba32i) readonly uniform iimageBuffer) +0:? 'g_tTexbu4' (layout( rgba32ui) readonly uniform uimageBuffer) 0:? 'Color' (layout( location=0) out 4-component vector of float) 0:? 'Depth' ( out float FragDepth) 0:? 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int c1, layout( offset=8) uniform 2-component vector of int c2, layout( offset=16) uniform 3-component vector of int c3, layout( offset=32) uniform 4-component vector of int c4, layout( offset=48) uniform int o1, layout( offset=56) uniform 2-component vector of int o2, layout( offset=64) uniform 3-component vector of int o3, layout( offset=80) uniform 4-component vector of int o4}) @@ -92,8 +92,8 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of float) 0:28 'r00' ( temp 4-component vector of float) -0:28 textureFetch ( temp 4-component vector of float) -0:28 'g_tTexbf4' (layout( rgba32f) uniform samplerBuffer) +0:28 imageLoad ( temp 4-component vector of float) +0:28 'g_tTexbf4' (layout( rgba32f) readonly uniform imageBuffer) 0:28 c1: direct index for structure (layout( offset=0) uniform int) 0:28 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int c1, layout( offset=8) uniform 2-component vector of int c2, layout( offset=16) uniform 3-component vector of int c3, layout( offset=32) uniform 4-component vector of int c4, layout( offset=48) uniform int o1, layout( offset=56) uniform 2-component vector of int o2, layout( offset=64) uniform 3-component vector of int o3, layout( offset=80) uniform 4-component vector of int o4}) 0:28 Constant: @@ -101,8 +101,8 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of int) 0:29 'r01' ( temp 4-component vector of int) -0:29 textureFetch ( temp 4-component vector of int) -0:29 'g_tTexbi4' (layout( rgba32i) uniform isamplerBuffer) +0:29 imageLoad ( temp 4-component vector of int) +0:29 'g_tTexbi4' (layout( rgba32i) readonly uniform iimageBuffer) 0:29 c1: direct index for structure (layout( offset=0) uniform int) 0:29 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int c1, layout( offset=8) uniform 2-component vector of int c2, layout( offset=16) uniform 3-component vector of int c3, layout( offset=32) uniform 4-component vector of int c4, layout( offset=48) uniform int o1, layout( offset=56) uniform 2-component vector of int o2, layout( offset=64) uniform 3-component vector of int o3, layout( offset=80) uniform 4-component vector of int o4}) 0:29 Constant: @@ -110,8 +110,8 @@ gl_FragCoord origin is upper left 0:30 Sequence 0:30 move second child to first child ( temp 4-component vector of uint) 0:30 'r02' ( temp 4-component vector of uint) -0:30 textureFetch ( temp 4-component vector of uint) -0:30 'g_tTexbu4' (layout( rgba32ui) uniform usamplerBuffer) +0:30 imageLoad ( temp 4-component vector of uint) +0:30 'g_tTexbu4' (layout( rgba32ui) readonly uniform uimageBuffer) 0:30 c1: direct index for structure (layout( offset=0) uniform int) 0:30 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int c1, layout( offset=8) uniform 2-component vector of int c2, layout( offset=16) uniform 3-component vector of int c3, layout( offset=32) uniform 4-component vector of int c4, layout( offset=48) uniform int o1, layout( offset=56) uniform 2-component vector of int o2, layout( offset=64) uniform 3-component vector of int o3, layout( offset=80) uniform 4-component vector of int o4}) 0:30 Constant: @@ -155,23 +155,23 @@ gl_FragCoord origin is upper left 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects -0:? 'g_tTexbf4_test' (layout( binding=0 rgba32f) uniform samplerBuffer) -0:? 'g_tTexbf4' (layout( rgba32f) uniform samplerBuffer) -0:? 'g_tTexbi4' (layout( rgba32i) uniform isamplerBuffer) -0:? 'g_tTexbu4' (layout( rgba32ui) uniform usamplerBuffer) +0:? 'g_tTexbf4_test' (layout( binding=0 rgba32f) readonly uniform imageBuffer) +0:? 'g_tTexbf4' (layout( rgba32f) readonly uniform imageBuffer) +0:? 'g_tTexbi4' (layout( rgba32i) readonly uniform iimageBuffer) +0:? 'g_tTexbu4' (layout( rgba32ui) readonly uniform uimageBuffer) 0:? 'Color' (layout( location=0) out 4-component vector of float) 0:? 'Depth' ( out float FragDepth) 0:? 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int c1, layout( offset=8) uniform 2-component vector of int c2, layout( offset=16) uniform 3-component vector of int c3, layout( offset=32) uniform 4-component vector of int c4, layout( offset=48) uniform int o1, layout( offset=56) uniform 2-component vector of int o2, layout( offset=64) uniform 3-component vector of int o3, layout( offset=80) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 78 +// Id's are bound by 72 Capability Shader Capability SampledBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 70 74 + EntryPoint Fragment 4 "main" 64 68 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 8 "PS_OUTPUT" @@ -179,43 +179,47 @@ gl_FragCoord origin is upper left MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "r00" - Name 17 "g_tTexbf4" - Name 23 "$Global" - MemberName 23($Global) 0 "c1" - MemberName 23($Global) 1 "c2" - MemberName 23($Global) 2 "c3" - MemberName 23($Global) 3 "c4" - MemberName 23($Global) 4 "o1" - MemberName 23($Global) 5 "o2" - MemberName 23($Global) 6 "o3" - MemberName 23($Global) 7 "o4" - Name 25 "" - Name 33 "r01" - Name 37 "g_tTexbi4" - Name 46 "r02" - Name 50 "g_tTexbu4" - Name 57 "psout" - Name 67 "flattenTemp" - Name 70 "Color" - Name 74 "Depth" - Name 77 "g_tTexbf4_test" - Decorate 17(g_tTexbf4) DescriptorSet 0 - MemberDecorate 23($Global) 0 Offset 0 - MemberDecorate 23($Global) 1 Offset 8 - MemberDecorate 23($Global) 2 Offset 16 - MemberDecorate 23($Global) 3 Offset 32 - MemberDecorate 23($Global) 4 Offset 48 - MemberDecorate 23($Global) 5 Offset 56 - MemberDecorate 23($Global) 6 Offset 64 - MemberDecorate 23($Global) 7 Offset 80 - Decorate 23($Global) Block - Decorate 25 DescriptorSet 0 - Decorate 37(g_tTexbi4) DescriptorSet 0 - Decorate 50(g_tTexbu4) DescriptorSet 0 - Decorate 70(Color) Location 0 - Decorate 74(Depth) BuiltIn FragDepth - Decorate 77(g_tTexbf4_test) DescriptorSet 0 - Decorate 77(g_tTexbf4_test) Binding 0 + Name 16 "g_tTexbf4" + Name 22 "$Global" + MemberName 22($Global) 0 "c1" + MemberName 22($Global) 1 "c2" + MemberName 22($Global) 2 "c3" + MemberName 22($Global) 3 "c4" + MemberName 22($Global) 4 "o1" + MemberName 22($Global) 5 "o2" + MemberName 22($Global) 6 "o3" + MemberName 22($Global) 7 "o4" + Name 24 "" + Name 31 "r01" + Name 34 "g_tTexbi4" + Name 42 "r02" + Name 45 "g_tTexbu4" + Name 51 "psout" + Name 61 "flattenTemp" + Name 64 "Color" + Name 68 "Depth" + Name 71 "g_tTexbf4_test" + Decorate 16(g_tTexbf4) DescriptorSet 0 + Decorate 16(g_tTexbf4) NonWritable + MemberDecorate 22($Global) 0 Offset 0 + MemberDecorate 22($Global) 1 Offset 8 + MemberDecorate 22($Global) 2 Offset 16 + MemberDecorate 22($Global) 3 Offset 32 + MemberDecorate 22($Global) 4 Offset 48 + MemberDecorate 22($Global) 5 Offset 56 + MemberDecorate 22($Global) 6 Offset 64 + MemberDecorate 22($Global) 7 Offset 80 + Decorate 22($Global) Block + Decorate 24 DescriptorSet 0 + Decorate 34(g_tTexbi4) DescriptorSet 0 + Decorate 34(g_tTexbi4) NonWritable + Decorate 45(g_tTexbu4) DescriptorSet 0 + Decorate 45(g_tTexbu4) NonWritable + Decorate 64(Color) Location 0 + Decorate 68(Depth) BuiltIn FragDepth + Decorate 71(g_tTexbf4_test) DescriptorSet 0 + Decorate 71(g_tTexbf4_test) Binding 0 + Decorate 71(g_tTexbf4_test) NonWritable 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -223,82 +227,76 @@ gl_FragCoord origin is upper left 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 7(fvec4) - 14: TypeImage 6(float) Buffer sampled format:Rgba32f - 15: TypeSampledImage 14 - 16: TypePointer UniformConstant 15 - 17(g_tTexbf4): 16(ptr) Variable UniformConstant - 19: TypeInt 32 1 - 20: TypeVector 19(int) 2 - 21: TypeVector 19(int) 3 - 22: TypeVector 19(int) 4 - 23($Global): TypeStruct 19(int) 20(ivec2) 21(ivec3) 22(ivec4) 19(int) 20(ivec2) 21(ivec3) 22(ivec4) - 24: TypePointer Uniform 23($Global) - 25: 24(ptr) Variable Uniform - 26: 19(int) Constant 0 - 27: TypePointer Uniform 19(int) - 32: TypePointer Function 22(ivec4) - 34: TypeImage 19(int) Buffer sampled format:Rgba32i - 35: TypeSampledImage 34 - 36: TypePointer UniformConstant 35 - 37(g_tTexbi4): 36(ptr) Variable UniformConstant - 43: TypeInt 32 0 - 44: TypeVector 43(int) 4 - 45: TypePointer Function 44(ivec4) - 47: TypeImage 43(int) Buffer sampled format:Rgba32ui - 48: TypeSampledImage 47 - 49: TypePointer UniformConstant 48 - 50(g_tTexbu4): 49(ptr) Variable UniformConstant - 56: TypePointer Function 8(PS_OUTPUT) - 58: 6(float) Constant 1065353216 - 59: 7(fvec4) ConstantComposite 58 58 58 58 - 61: 19(int) Constant 1 - 62: TypePointer Function 6(float) - 69: TypePointer Output 7(fvec4) - 70(Color): 69(ptr) Variable Output - 73: TypePointer Output 6(float) - 74(Depth): 73(ptr) Variable Output -77(g_tTexbf4_test): 16(ptr) Variable UniformConstant + 14: TypeImage 6(float) Buffer nonsampled format:Rgba32f + 15: TypePointer UniformConstant 14 + 16(g_tTexbf4): 15(ptr) Variable UniformConstant + 18: TypeInt 32 1 + 19: TypeVector 18(int) 2 + 20: TypeVector 18(int) 3 + 21: TypeVector 18(int) 4 + 22($Global): TypeStruct 18(int) 19(ivec2) 20(ivec3) 21(ivec4) 18(int) 19(ivec2) 20(ivec3) 21(ivec4) + 23: TypePointer Uniform 22($Global) + 24: 23(ptr) Variable Uniform + 25: 18(int) Constant 0 + 26: TypePointer Uniform 18(int) + 30: TypePointer Function 21(ivec4) + 32: TypeImage 18(int) Buffer nonsampled format:Rgba32i + 33: TypePointer UniformConstant 32 + 34(g_tTexbi4): 33(ptr) Variable UniformConstant + 39: TypeInt 32 0 + 40: TypeVector 39(int) 4 + 41: TypePointer Function 40(ivec4) + 43: TypeImage 39(int) Buffer nonsampled format:Rgba32ui + 44: TypePointer UniformConstant 43 + 45(g_tTexbu4): 44(ptr) Variable UniformConstant + 50: TypePointer Function 8(PS_OUTPUT) + 52: 6(float) Constant 1065353216 + 53: 7(fvec4) ConstantComposite 52 52 52 52 + 55: 18(int) Constant 1 + 56: TypePointer Function 6(float) + 63: TypePointer Output 7(fvec4) + 64(Color): 63(ptr) Variable Output + 67: TypePointer Output 6(float) + 68(Depth): 67(ptr) Variable Output +71(g_tTexbf4_test): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 67(flattenTemp): 56(ptr) Variable Function - 68:8(PS_OUTPUT) FunctionCall 10(@main() - Store 67(flattenTemp) 68 - 71: 12(ptr) AccessChain 67(flattenTemp) 26 - 72: 7(fvec4) Load 71 - Store 70(Color) 72 - 75: 62(ptr) AccessChain 67(flattenTemp) 61 - 76: 6(float) Load 75 - Store 74(Depth) 76 + 61(flattenTemp): 50(ptr) Variable Function + 62:8(PS_OUTPUT) FunctionCall 10(@main() + Store 61(flattenTemp) 62 + 65: 12(ptr) AccessChain 61(flattenTemp) 25 + 66: 7(fvec4) Load 65 + Store 64(Color) 66 + 69: 56(ptr) AccessChain 61(flattenTemp) 55 + 70: 6(float) Load 69 + Store 68(Depth) 70 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(r00): 12(ptr) Variable Function - 33(r01): 32(ptr) Variable Function - 46(r02): 45(ptr) Variable Function - 57(psout): 56(ptr) Variable Function - 18: 15 Load 17(g_tTexbf4) - 28: 27(ptr) AccessChain 25 26 - 29: 19(int) Load 28 - 30: 14 Image 18 - 31: 7(fvec4) ImageFetch 30 29 - Store 13(r00) 31 - 38: 35 Load 37(g_tTexbi4) - 39: 27(ptr) AccessChain 25 26 - 40: 19(int) Load 39 - 41: 34 Image 38 - 42: 22(ivec4) ImageFetch 41 40 - Store 33(r01) 42 - 51: 48 Load 50(g_tTexbu4) - 52: 27(ptr) AccessChain 25 26 - 53: 19(int) Load 52 - 54: 47 Image 51 - 55: 44(ivec4) ImageFetch 54 53 - Store 46(r02) 55 - 60: 12(ptr) AccessChain 57(psout) 26 - Store 60 59 - 63: 62(ptr) AccessChain 57(psout) 61 - Store 63 58 - 64:8(PS_OUTPUT) Load 57(psout) - ReturnValue 64 + 31(r01): 30(ptr) Variable Function + 42(r02): 41(ptr) Variable Function + 51(psout): 50(ptr) Variable Function + 17: 14 Load 16(g_tTexbf4) + 27: 26(ptr) AccessChain 24 25 + 28: 18(int) Load 27 + 29: 7(fvec4) ImageRead 17 28 + Store 13(r00) 29 + 35: 32 Load 34(g_tTexbi4) + 36: 26(ptr) AccessChain 24 25 + 37: 18(int) Load 36 + 38: 21(ivec4) ImageRead 35 37 + Store 31(r01) 38 + 46: 43 Load 45(g_tTexbu4) + 47: 26(ptr) AccessChain 24 25 + 48: 18(int) Load 47 + 49: 40(ivec4) ImageRead 46 48 + Store 42(r02) 49 + 54: 12(ptr) AccessChain 51(psout) 25 + Store 54 53 + 57: 56(ptr) AccessChain 51(psout) 55 + Store 57 52 + 58:8(PS_OUTPUT) Load 51(psout) + ReturnValue 58 FunctionEnd diff --git a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out index 0c5668e5497943ce3de372557176a658de658082..77da1b954641638bd96bf398f530cb641ef6e367 100644 --- a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out +++ b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out @@ -9,8 +9,8 @@ gl_FragCoord origin is upper left 0:28 move second child to first child ( temp float) 0:28 'r00' ( temp float) 0:28 Construct float ( temp float) -0:? textureFetch ( temp 4-component vector of float) -0:28 'g_tTexbfs' (layout( r32f) uniform samplerBuffer) +0:? imageLoad ( temp 4-component vector of float) +0:28 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer) 0:28 c1: direct index for structure (layout( offset=0) uniform int) 0:28 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int c1, layout( offset=8) uniform 2-component vector of int c2, layout( offset=16) uniform 3-component vector of int c3, layout( offset=32) uniform 4-component vector of int c4, layout( offset=48) uniform int o1, layout( offset=56) uniform 2-component vector of int o2, layout( offset=64) uniform 3-component vector of int o3, layout( offset=80) uniform 4-component vector of int o4}) 0:28 Constant: @@ -19,8 +19,8 @@ gl_FragCoord origin is upper left 0:29 move second child to first child ( temp int) 0:29 'r01' ( temp int) 0:29 Construct int ( temp int) -0:? textureFetch ( temp 4-component vector of int) -0:29 'g_tTexbis' (layout( r32i) uniform isamplerBuffer) +0:? imageLoad ( temp 4-component vector of int) +0:29 'g_tTexbis' (layout( r32i) readonly uniform iimageBuffer) 0:29 c1: direct index for structure (layout( offset=0) uniform int) 0:29 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int c1, layout( offset=8) uniform 2-component vector of int c2, layout( offset=16) uniform 3-component vector of int c3, layout( offset=32) uniform 4-component vector of int c4, layout( offset=48) uniform int o1, layout( offset=56) uniform 2-component vector of int o2, layout( offset=64) uniform 3-component vector of int o3, layout( offset=80) uniform 4-component vector of int o4}) 0:29 Constant: @@ -29,8 +29,8 @@ gl_FragCoord origin is upper left 0:30 move second child to first child ( temp uint) 0:30 'r02' ( temp uint) 0:30 Construct uint ( temp uint) -0:? textureFetch ( temp 4-component vector of uint) -0:30 'g_tTexbus' (layout( r32ui) uniform usamplerBuffer) +0:? imageLoad ( temp 4-component vector of uint) +0:30 'g_tTexbus' (layout( r32ui) readonly uniform uimageBuffer) 0:30 c1: direct index for structure (layout( offset=0) uniform int) 0:30 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int c1, layout( offset=8) uniform 2-component vector of int c2, layout( offset=16) uniform 3-component vector of int c3, layout( offset=32) uniform 4-component vector of int c4, layout( offset=48) uniform int o1, layout( offset=56) uniform 2-component vector of int o2, layout( offset=64) uniform 3-component vector of int o3, layout( offset=80) uniform 4-component vector of int o4}) 0:30 Constant: @@ -74,10 +74,10 @@ gl_FragCoord origin is upper left 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects -0:? 'g_tTexbfs_test' (layout( binding=0 r32f) uniform samplerBuffer) -0:? 'g_tTexbfs' (layout( r32f) uniform samplerBuffer) -0:? 'g_tTexbis' (layout( r32i) uniform isamplerBuffer) -0:? 'g_tTexbus' (layout( r32ui) uniform usamplerBuffer) +0:? 'g_tTexbfs_test' (layout( binding=0 r32f) readonly uniform imageBuffer) +0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer) +0:? 'g_tTexbis' (layout( r32i) readonly uniform iimageBuffer) +0:? 'g_tTexbus' (layout( r32ui) readonly uniform uimageBuffer) 0:? 'Color' (layout( location=0) out 4-component vector of float) 0:? 'Depth' ( out float FragDepth) 0:? 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int c1, layout( offset=8) uniform 2-component vector of int c2, layout( offset=16) uniform 3-component vector of int c3, layout( offset=32) uniform 4-component vector of int c4, layout( offset=48) uniform int o1, layout( offset=56) uniform 2-component vector of int o2, layout( offset=64) uniform 3-component vector of int o3, layout( offset=80) uniform 4-component vector of int o4}) @@ -96,8 +96,8 @@ gl_FragCoord origin is upper left 0:28 move second child to first child ( temp float) 0:28 'r00' ( temp float) 0:28 Construct float ( temp float) -0:? textureFetch ( temp 4-component vector of float) -0:28 'g_tTexbfs' (layout( r32f) uniform samplerBuffer) +0:? imageLoad ( temp 4-component vector of float) +0:28 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer) 0:28 c1: direct index for structure (layout( offset=0) uniform int) 0:28 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int c1, layout( offset=8) uniform 2-component vector of int c2, layout( offset=16) uniform 3-component vector of int c3, layout( offset=32) uniform 4-component vector of int c4, layout( offset=48) uniform int o1, layout( offset=56) uniform 2-component vector of int o2, layout( offset=64) uniform 3-component vector of int o3, layout( offset=80) uniform 4-component vector of int o4}) 0:28 Constant: @@ -106,8 +106,8 @@ gl_FragCoord origin is upper left 0:29 move second child to first child ( temp int) 0:29 'r01' ( temp int) 0:29 Construct int ( temp int) -0:? textureFetch ( temp 4-component vector of int) -0:29 'g_tTexbis' (layout( r32i) uniform isamplerBuffer) +0:? imageLoad ( temp 4-component vector of int) +0:29 'g_tTexbis' (layout( r32i) readonly uniform iimageBuffer) 0:29 c1: direct index for structure (layout( offset=0) uniform int) 0:29 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int c1, layout( offset=8) uniform 2-component vector of int c2, layout( offset=16) uniform 3-component vector of int c3, layout( offset=32) uniform 4-component vector of int c4, layout( offset=48) uniform int o1, layout( offset=56) uniform 2-component vector of int o2, layout( offset=64) uniform 3-component vector of int o3, layout( offset=80) uniform 4-component vector of int o4}) 0:29 Constant: @@ -116,8 +116,8 @@ gl_FragCoord origin is upper left 0:30 move second child to first child ( temp uint) 0:30 'r02' ( temp uint) 0:30 Construct uint ( temp uint) -0:? textureFetch ( temp 4-component vector of uint) -0:30 'g_tTexbus' (layout( r32ui) uniform usamplerBuffer) +0:? imageLoad ( temp 4-component vector of uint) +0:30 'g_tTexbus' (layout( r32ui) readonly uniform uimageBuffer) 0:30 c1: direct index for structure (layout( offset=0) uniform int) 0:30 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int c1, layout( offset=8) uniform 2-component vector of int c2, layout( offset=16) uniform 3-component vector of int c3, layout( offset=32) uniform 4-component vector of int c4, layout( offset=48) uniform int o1, layout( offset=56) uniform 2-component vector of int o2, layout( offset=64) uniform 3-component vector of int o3, layout( offset=80) uniform 4-component vector of int o4}) 0:30 Constant: @@ -161,23 +161,23 @@ gl_FragCoord origin is upper left 0:24 Constant: 0:24 1 (const int) 0:? Linker Objects -0:? 'g_tTexbfs_test' (layout( binding=0 r32f) uniform samplerBuffer) -0:? 'g_tTexbfs' (layout( r32f) uniform samplerBuffer) -0:? 'g_tTexbis' (layout( r32i) uniform isamplerBuffer) -0:? 'g_tTexbus' (layout( r32ui) uniform usamplerBuffer) +0:? 'g_tTexbfs_test' (layout( binding=0 r32f) readonly uniform imageBuffer) +0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer) +0:? 'g_tTexbis' (layout( r32i) readonly uniform iimageBuffer) +0:? 'g_tTexbus' (layout( r32ui) readonly uniform uimageBuffer) 0:? 'Color' (layout( location=0) out 4-component vector of float) 0:? 'Depth' ( out float FragDepth) 0:? 'anon@0' (layout( row_major std140) uniform block{layout( offset=0) uniform int c1, layout( offset=8) uniform 2-component vector of int c2, layout( offset=16) uniform 3-component vector of int c3, layout( offset=32) uniform 4-component vector of int c4, layout( offset=48) uniform int o1, layout( offset=56) uniform 2-component vector of int o2, layout( offset=64) uniform 3-component vector of int o3, layout( offset=80) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 81 +// Id's are bound by 75 Capability Shader Capability SampledBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 73 77 + EntryPoint Fragment 4 "main" 67 71 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 8 "PS_OUTPUT" @@ -185,43 +185,47 @@ gl_FragCoord origin is upper left MemberName 8(PS_OUTPUT) 1 "Depth" Name 10 "@main(" Name 13 "r00" - Name 17 "g_tTexbfs" - Name 23 "$Global" - MemberName 23($Global) 0 "c1" - MemberName 23($Global) 1 "c2" - MemberName 23($Global) 2 "c3" - MemberName 23($Global) 3 "c4" - MemberName 23($Global) 4 "o1" - MemberName 23($Global) 5 "o2" - MemberName 23($Global) 6 "o3" - MemberName 23($Global) 7 "o4" - Name 25 "" - Name 34 "r01" - Name 38 "g_tTexbis" - Name 47 "r02" - Name 51 "g_tTexbus" - Name 60 "psout" - Name 70 "flattenTemp" - Name 73 "Color" - Name 77 "Depth" - Name 80 "g_tTexbfs_test" - Decorate 17(g_tTexbfs) DescriptorSet 0 - MemberDecorate 23($Global) 0 Offset 0 - MemberDecorate 23($Global) 1 Offset 8 - MemberDecorate 23($Global) 2 Offset 16 - MemberDecorate 23($Global) 3 Offset 32 - MemberDecorate 23($Global) 4 Offset 48 - MemberDecorate 23($Global) 5 Offset 56 - MemberDecorate 23($Global) 6 Offset 64 - MemberDecorate 23($Global) 7 Offset 80 - Decorate 23($Global) Block - Decorate 25 DescriptorSet 0 - Decorate 38(g_tTexbis) DescriptorSet 0 - Decorate 51(g_tTexbus) DescriptorSet 0 - Decorate 73(Color) Location 0 - Decorate 77(Depth) BuiltIn FragDepth - Decorate 80(g_tTexbfs_test) DescriptorSet 0 - Decorate 80(g_tTexbfs_test) Binding 0 + Name 16 "g_tTexbfs" + Name 22 "$Global" + MemberName 22($Global) 0 "c1" + MemberName 22($Global) 1 "c2" + MemberName 22($Global) 2 "c3" + MemberName 22($Global) 3 "c4" + MemberName 22($Global) 4 "o1" + MemberName 22($Global) 5 "o2" + MemberName 22($Global) 6 "o3" + MemberName 22($Global) 7 "o4" + Name 24 "" + Name 32 "r01" + Name 35 "g_tTexbis" + Name 43 "r02" + Name 46 "g_tTexbus" + Name 54 "psout" + Name 64 "flattenTemp" + Name 67 "Color" + Name 71 "Depth" + Name 74 "g_tTexbfs_test" + Decorate 16(g_tTexbfs) DescriptorSet 0 + Decorate 16(g_tTexbfs) NonWritable + MemberDecorate 22($Global) 0 Offset 0 + MemberDecorate 22($Global) 1 Offset 8 + MemberDecorate 22($Global) 2 Offset 16 + MemberDecorate 22($Global) 3 Offset 32 + MemberDecorate 22($Global) 4 Offset 48 + MemberDecorate 22($Global) 5 Offset 56 + MemberDecorate 22($Global) 6 Offset 64 + MemberDecorate 22($Global) 7 Offset 80 + Decorate 22($Global) Block + Decorate 24 DescriptorSet 0 + Decorate 35(g_tTexbis) DescriptorSet 0 + Decorate 35(g_tTexbis) NonWritable + Decorate 46(g_tTexbus) DescriptorSet 0 + Decorate 46(g_tTexbus) NonWritable + Decorate 67(Color) Location 0 + Decorate 71(Depth) BuiltIn FragDepth + Decorate 74(g_tTexbfs_test) DescriptorSet 0 + Decorate 74(g_tTexbfs_test) Binding 0 + Decorate 74(g_tTexbfs_test) NonWritable 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -229,85 +233,79 @@ gl_FragCoord origin is upper left 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 9: TypeFunction 8(PS_OUTPUT) 12: TypePointer Function 6(float) - 14: TypeImage 6(float) Buffer sampled format:R32f - 15: TypeSampledImage 14 - 16: TypePointer UniformConstant 15 - 17(g_tTexbfs): 16(ptr) Variable UniformConstant - 19: TypeInt 32 1 - 20: TypeVector 19(int) 2 - 21: TypeVector 19(int) 3 - 22: TypeVector 19(int) 4 - 23($Global): TypeStruct 19(int) 20(ivec2) 21(ivec3) 22(ivec4) 19(int) 20(ivec2) 21(ivec3) 22(ivec4) - 24: TypePointer Uniform 23($Global) - 25: 24(ptr) Variable Uniform - 26: 19(int) Constant 0 - 27: TypePointer Uniform 19(int) - 33: TypePointer Function 19(int) - 35: TypeImage 19(int) Buffer sampled format:R32i - 36: TypeSampledImage 35 - 37: TypePointer UniformConstant 36 - 38(g_tTexbis): 37(ptr) Variable UniformConstant - 45: TypeInt 32 0 - 46: TypePointer Function 45(int) - 48: TypeImage 45(int) Buffer sampled format:R32ui - 49: TypeSampledImage 48 - 50: TypePointer UniformConstant 49 - 51(g_tTexbus): 50(ptr) Variable UniformConstant - 56: TypeVector 45(int) 4 - 59: TypePointer Function 8(PS_OUTPUT) - 61: 6(float) Constant 1065353216 - 62: 7(fvec4) ConstantComposite 61 61 61 61 - 63: TypePointer Function 7(fvec4) - 65: 19(int) Constant 1 - 72: TypePointer Output 7(fvec4) - 73(Color): 72(ptr) Variable Output - 76: TypePointer Output 6(float) - 77(Depth): 76(ptr) Variable Output -80(g_tTexbfs_test): 16(ptr) Variable UniformConstant + 14: TypeImage 6(float) Buffer nonsampled format:R32f + 15: TypePointer UniformConstant 14 + 16(g_tTexbfs): 15(ptr) Variable UniformConstant + 18: TypeInt 32 1 + 19: TypeVector 18(int) 2 + 20: TypeVector 18(int) 3 + 21: TypeVector 18(int) 4 + 22($Global): TypeStruct 18(int) 19(ivec2) 20(ivec3) 21(ivec4) 18(int) 19(ivec2) 20(ivec3) 21(ivec4) + 23: TypePointer Uniform 22($Global) + 24: 23(ptr) Variable Uniform + 25: 18(int) Constant 0 + 26: TypePointer Uniform 18(int) + 31: TypePointer Function 18(int) + 33: TypeImage 18(int) Buffer nonsampled format:R32i + 34: TypePointer UniformConstant 33 + 35(g_tTexbis): 34(ptr) Variable UniformConstant + 41: TypeInt 32 0 + 42: TypePointer Function 41(int) + 44: TypeImage 41(int) Buffer nonsampled format:R32ui + 45: TypePointer UniformConstant 44 + 46(g_tTexbus): 45(ptr) Variable UniformConstant + 50: TypeVector 41(int) 4 + 53: TypePointer Function 8(PS_OUTPUT) + 55: 6(float) Constant 1065353216 + 56: 7(fvec4) ConstantComposite 55 55 55 55 + 57: TypePointer Function 7(fvec4) + 59: 18(int) Constant 1 + 66: TypePointer Output 7(fvec4) + 67(Color): 66(ptr) Variable Output + 70: TypePointer Output 6(float) + 71(Depth): 70(ptr) Variable Output +74(g_tTexbfs_test): 15(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 70(flattenTemp): 59(ptr) Variable Function - 71:8(PS_OUTPUT) FunctionCall 10(@main() - Store 70(flattenTemp) 71 - 74: 63(ptr) AccessChain 70(flattenTemp) 26 - 75: 7(fvec4) Load 74 - Store 73(Color) 75 - 78: 12(ptr) AccessChain 70(flattenTemp) 65 - 79: 6(float) Load 78 - Store 77(Depth) 79 + 64(flattenTemp): 53(ptr) Variable Function + 65:8(PS_OUTPUT) FunctionCall 10(@main() + Store 64(flattenTemp) 65 + 68: 57(ptr) AccessChain 64(flattenTemp) 25 + 69: 7(fvec4) Load 68 + Store 67(Color) 69 + 72: 12(ptr) AccessChain 64(flattenTemp) 59 + 73: 6(float) Load 72 + Store 71(Depth) 73 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 11: Label 13(r00): 12(ptr) Variable Function - 34(r01): 33(ptr) Variable Function - 47(r02): 46(ptr) Variable Function - 60(psout): 59(ptr) Variable Function - 18: 15 Load 17(g_tTexbfs) - 28: 27(ptr) AccessChain 25 26 - 29: 19(int) Load 28 - 30: 14 Image 18 - 31: 7(fvec4) ImageFetch 30 29 - 32: 6(float) CompositeExtract 31 0 - Store 13(r00) 32 - 39: 36 Load 38(g_tTexbis) - 40: 27(ptr) AccessChain 25 26 - 41: 19(int) Load 40 - 42: 35 Image 39 - 43: 22(ivec4) ImageFetch 42 41 - 44: 19(int) CompositeExtract 43 0 - Store 34(r01) 44 - 52: 49 Load 51(g_tTexbus) - 53: 27(ptr) AccessChain 25 26 - 54: 19(int) Load 53 - 55: 48 Image 52 - 57: 56(ivec4) ImageFetch 55 54 - 58: 45(int) CompositeExtract 57 0 - Store 47(r02) 58 - 64: 63(ptr) AccessChain 60(psout) 26 - Store 64 62 - 66: 12(ptr) AccessChain 60(psout) 65 - Store 66 61 - 67:8(PS_OUTPUT) Load 60(psout) - ReturnValue 67 + 32(r01): 31(ptr) Variable Function + 43(r02): 42(ptr) Variable Function + 54(psout): 53(ptr) Variable Function + 17: 14 Load 16(g_tTexbfs) + 27: 26(ptr) AccessChain 24 25 + 28: 18(int) Load 27 + 29: 7(fvec4) ImageRead 17 28 + 30: 6(float) CompositeExtract 29 0 + Store 13(r00) 30 + 36: 33 Load 35(g_tTexbis) + 37: 26(ptr) AccessChain 24 25 + 38: 18(int) Load 37 + 39: 21(ivec4) ImageRead 36 38 + 40: 18(int) CompositeExtract 39 0 + Store 32(r01) 40 + 47: 44 Load 46(g_tTexbus) + 48: 26(ptr) AccessChain 24 25 + 49: 18(int) Load 48 + 51: 50(ivec4) ImageRead 47 49 + 52: 41(int) CompositeExtract 51 0 + Store 43(r02) 52 + 58: 57(ptr) AccessChain 54(psout) 25 + Store 58 56 + 60: 12(ptr) AccessChain 54(psout) 59 + Store 60 55 + 61:8(PS_OUTPUT) Load 54(psout) + ReturnValue 61 FunctionEnd diff --git a/Test/baseResults/hlsl.multiEntry.vert.out b/Test/baseResults/hlsl.multiEntry.vert.out index cc4924fda8695038cb7cd17e223c41b565ec29da..4873a4588e8fc97aa569680a8a63a56a9ef14964 100755 --- a/Test/baseResults/hlsl.multiEntry.vert.out +++ b/Test/baseResults/hlsl.multiEntry.vert.out @@ -6,8 +6,8 @@ Shader version: 450 0:4 'Index' ( in uint) 0:? Sequence 0:5 Branch: Return with expression -0:5 textureFetch ( temp 4-component vector of float) -0:5 'Position' (layout( rgba32f) uniform samplerBuffer) +0:5 imageLoad ( temp 4-component vector of float) +0:5 'Position' (layout( rgba32f) readonly uniform imageBuffer) 0:5 Convert uint to int ( temp int) 0:5 'Index' ( in uint) 0:9 Function Definition: @RealEntrypoint(u1; ( temp 4-component vector of float) @@ -28,7 +28,7 @@ Shader version: 450 0:9 Function Call: @RealEntrypoint(u1; ( temp 4-component vector of float) 0:? 'Index' ( temp uint) 0:? Linker Objects -0:? 'Position' (layout( rgba32f) uniform samplerBuffer) +0:? 'Position' (layout( rgba32f) readonly uniform imageBuffer) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:? 'Index' ( in uint VertexIndex) @@ -43,8 +43,8 @@ Shader version: 450 0:4 'Index' ( in uint) 0:? Sequence 0:5 Branch: Return with expression -0:5 textureFetch ( temp 4-component vector of float) -0:5 'Position' (layout( rgba32f) uniform samplerBuffer) +0:5 imageLoad ( temp 4-component vector of float) +0:5 'Position' (layout( rgba32f) readonly uniform imageBuffer) 0:5 Convert uint to int ( temp int) 0:5 'Index' ( in uint) 0:9 Function Definition: @RealEntrypoint(u1; ( temp 4-component vector of float) @@ -65,33 +65,34 @@ Shader version: 450 0:9 Function Call: @RealEntrypoint(u1; ( temp 4-component vector of float) 0:? 'Index' ( temp uint) 0:? Linker Objects -0:? 'Position' (layout( rgba32f) uniform samplerBuffer) +0:? 'Position' (layout( rgba32f) readonly uniform imageBuffer) 0:? '@entryPointOutput' ( out 4-component vector of float Position) 0:? 'Index' ( in uint VertexIndex) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 43 +// Id's are bound by 41 Capability Shader Capability SampledBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "RealEntrypoint" 36 39 + EntryPoint Vertex 4 "RealEntrypoint" 34 37 Name 4 "RealEntrypoint" Name 12 "FakeEntrypoint(u1;" Name 11 "Index" Name 15 "@RealEntrypoint(u1;" Name 14 "Index" - Name 20 "Position" - Name 29 "param" + Name 19 "Position" + Name 27 "param" + Name 32 "Index" Name 34 "Index" - Name 36 "Index" - Name 39 "@entryPointOutput" - Name 40 "param" - Decorate 20(Position) DescriptorSet 0 - Decorate 36(Index) BuiltIn VertexIndex - Decorate 39(@entryPointOutput) BuiltIn Position + Name 37 "@entryPointOutput" + Name 38 "param" + Decorate 19(Position) DescriptorSet 0 + Decorate 19(Position) NonWritable + Decorate 34(Index) BuiltIn VertexIndex + Decorate 37(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -99,43 +100,41 @@ Shader version: 450 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeFunction 9(fvec4) 7(ptr) - 17: TypeImage 8(float) Buffer sampled format:Rgba32f - 18: TypeSampledImage 17 - 19: TypePointer UniformConstant 18 - 20(Position): 19(ptr) Variable UniformConstant - 23: TypeInt 32 1 - 35: TypePointer Input 6(int) - 36(Index): 35(ptr) Variable Input - 38: TypePointer Output 9(fvec4) -39(@entryPointOutput): 38(ptr) Variable Output + 17: TypeImage 8(float) Buffer nonsampled format:Rgba32f + 18: TypePointer UniformConstant 17 + 19(Position): 18(ptr) Variable UniformConstant + 22: TypeInt 32 1 + 33: TypePointer Input 6(int) + 34(Index): 33(ptr) Variable Input + 36: TypePointer Output 9(fvec4) +37(@entryPointOutput): 36(ptr) Variable Output 4(RealEntrypoint): 2 Function None 3 5: Label - 34(Index): 7(ptr) Variable Function - 40(param): 7(ptr) Variable Function - 37: 6(int) Load 36(Index) - Store 34(Index) 37 - 41: 6(int) Load 34(Index) - Store 40(param) 41 - 42: 9(fvec4) FunctionCall 15(@RealEntrypoint(u1;) 40(param) - Store 39(@entryPointOutput) 42 + 32(Index): 7(ptr) Variable Function + 38(param): 7(ptr) Variable Function + 35: 6(int) Load 34(Index) + Store 32(Index) 35 + 39: 6(int) Load 32(Index) + Store 38(param) 39 + 40: 9(fvec4) FunctionCall 15(@RealEntrypoint(u1;) 38(param) + Store 37(@entryPointOutput) 40 Return FunctionEnd 12(FakeEntrypoint(u1;): 9(fvec4) Function None 10 11(Index): 7(ptr) FunctionParameter 13: Label - 21: 18 Load 20(Position) - 22: 6(int) Load 11(Index) - 24: 23(int) Bitcast 22 - 25: 17 Image 21 - 26: 9(fvec4) ImageFetch 25 24 - ReturnValue 26 + 20: 17 Load 19(Position) + 21: 6(int) Load 11(Index) + 23: 22(int) Bitcast 21 + 24: 9(fvec4) ImageRead 20 23 + ReturnValue 24 FunctionEnd 15(@RealEntrypoint(u1;): 9(fvec4) Function None 10 14(Index): 7(ptr) FunctionParameter 16: Label - 29(param): 7(ptr) Variable Function - 30: 6(int) Load 14(Index) - Store 29(param) 30 - 31: 9(fvec4) FunctionCall 12(FakeEntrypoint(u1;) 29(param) - ReturnValue 31 + 27(param): 7(ptr) Variable Function + 28: 6(int) Load 14(Index) + Store 27(param) 28 + 29: 9(fvec4) FunctionCall 12(FakeEntrypoint(u1;) 27(param) + ReturnValue 29 FunctionEnd diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index 3891734a430804d65b38ffff3f8810e53dca3be6..a9362a1677fa025eaa284e0b3f2cc242ff5ac1df 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -545,6 +545,10 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type, TIntermNode*& nodeList) qualifier.layoutFormat = type.getQualifier().layoutFormat; qualifier.precision = type.getQualifier().precision; + // Propagate sampler readonly qualifier for buffers + if (type.getBasicType() == EbtSampler) + qualifier.readonly = type.getQualifier().readonly; + if (type.getQualifier().storage == EvqVaryingOut || type.getQualifier().storage == EvqBuffer) { qualifier.storage = type.getQualifier().storage; @@ -1079,24 +1083,25 @@ bool HlslGrammar::acceptTextureType(TType& type) bool array = false; bool ms = false; bool image = false; + bool readonly = false; switch (textureType) { - case EHTokBuffer: dim = EsdBuffer; break; - case EHTokTexture1d: dim = Esd1D; break; - case EHTokTexture1darray: dim = Esd1D; array = true; break; - case EHTokTexture2d: dim = Esd2D; break; - case EHTokTexture2darray: dim = Esd2D; array = true; break; - case EHTokTexture3d: dim = Esd3D; break; - case EHTokTextureCube: dim = EsdCube; break; - case EHTokTextureCubearray: dim = EsdCube; array = true; break; - case EHTokTexture2DMS: dim = Esd2D; ms = true; break; - case EHTokTexture2DMSarray: dim = Esd2D; array = true; ms = true; break; - case EHTokRWBuffer: dim = EsdBuffer; image=true; break; - case EHTokRWTexture1d: dim = Esd1D; array=false; image=true; break; - case EHTokRWTexture1darray: dim = Esd1D; array=true; image=true; break; - case EHTokRWTexture2d: dim = Esd2D; array=false; image=true; break; - case EHTokRWTexture2darray: dim = Esd2D; array=true; image=true; break; - case EHTokRWTexture3d: dim = Esd3D; array=false; image=true; break; + case EHTokTexture1d: dim = Esd1D; break; + case EHTokTexture1darray: dim = Esd1D; array = true; break; + case EHTokTexture2d: dim = Esd2D; break; + case EHTokTexture2darray: dim = Esd2D; array = true; break; + case EHTokTexture3d: dim = Esd3D; break; + case EHTokTextureCube: dim = EsdCube; break; + case EHTokTextureCubearray: dim = EsdCube; array = true; break; + case EHTokTexture2DMS: dim = Esd2D; ms = true; break; + case EHTokTexture2DMSarray: dim = Esd2D; array = true; ms = true; break; + case EHTokBuffer: dim = EsdBuffer; readonly=true; image=true; break; + case EHTokRWBuffer: dim = EsdBuffer; image=true; break; + case EHTokRWTexture1d: dim = Esd1D; array=false; image=true; break; + case EHTokRWTexture1darray: dim = Esd1D; array=true; image=true; break; + case EHTokRWTexture2d: dim = Esd2D; array=false; image=true; break; + case EHTokRWTexture2darray: dim = Esd2D; array=true; image=true; break; + case EHTokRWTexture3d: dim = Esd3D; array=false; image=true; break; default: return false; // not a texture declaration } @@ -1156,7 +1161,7 @@ bool HlslGrammar::acceptTextureType(TType& type) } else if (ms) { expected("texture type for multisample"); return false; - } else if (image) { + } else if (image && !readonly) { expected("type for RWTexture/RWBuffer"); return false; } @@ -1187,7 +1192,9 @@ bool HlslGrammar::acceptTextureType(TType& type) sampler.vectorSize = txType.getVectorSize(); type.shallowCopy(TType(sampler, EvqUniform, arraySizes)); + type.getQualifier().layoutFormat = format; + type.getQualifier().readonly = readonly; return true; }