Source GLSL 400
Name 4 "main"
Name 9 "arraySize"
- Name 14 "foo(vf4[s1518];"
+ Name 14 "foo(vf4[s1521];"
Name 13 "p"
Name 17 "builtin_spec_constant("
Name 20 "color"
Store 20(color) 46
48: 10 Load 22(ucol)
Store 47(param) 48
- 49: 2 FunctionCall 14(foo(vf4[s1518];) 47(param)
+ 49: 2 FunctionCall 14(foo(vf4[s1521];) 47(param)
Return
FunctionEnd
-14(foo(vf4[s1518];): 2 Function None 12
+14(foo(vf4[s1521];): 2 Function None 12
13(p): 11(ptr) FunctionParameter
15: Label
54: 24(ptr) AccessChain 53(dupUcol) 23
--- /dev/null
+spv.textureBuffer.vert
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 42
+
+ Capability Shader
+ Capability SampledBuffer
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main"
+ Source GLSL 450
+ Name 4 "main"
+ Name 9 "tBuf"
+ Name 13 "s"
+ Name 23 "sBuf"
+ Name 32 "utBuf"
+ Name 38 "itBuf"
+ Decorate 9(tBuf) DescriptorSet 0
+ Decorate 13(s) DescriptorSet 0
+ Decorate 23(sBuf) DescriptorSet 0
+ Decorate 32(utBuf) DescriptorSet 0
+ Decorate 38(itBuf) DescriptorSet 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeImage 6(float) Buffer sampled format:Unknown
+ 8: TypePointer UniformConstant 7
+ 9(tBuf): 8(ptr) Variable UniformConstant
+ 11: TypeSampler
+ 12: TypePointer UniformConstant 11
+ 13(s): 12(ptr) Variable UniformConstant
+ 15: TypeSampledImage 7
+ 17: TypeInt 32 1
+ 18: 17(int) Constant 13
+ 20: TypeVector 6(float) 4
+ 22: TypePointer UniformConstant 15
+ 23(sBuf): 22(ptr) Variable UniformConstant
+ 29: TypeInt 32 0
+ 30: TypeImage 29(int) Buffer sampled format:Unknown
+ 31: TypePointer UniformConstant 30
+ 32(utBuf): 31(ptr) Variable UniformConstant
+ 34: TypeVector 29(int) 4
+ 36: TypeImage 17(int) Buffer sampled format:Unknown
+ 37: TypePointer UniformConstant 36
+ 38(itBuf): 37(ptr) Variable UniformConstant
+ 40: TypeVector 17(int) 4
+ 4(main): 2 Function None 3
+ 5: Label
+ 10: 7 Load 9(tBuf)
+ 14: 11 Load 13(s)
+ 16: 15 SampledImage 10 14
+ 19: 7 Image 16
+ 21: 20(fvec4) ImageFetch 19 18
+ 24: 15 Load 23(sBuf)
+ 25: 7 Image 24
+ 26: 20(fvec4) ImageFetch 25 18
+ 27: 7 Load 9(tBuf)
+ 28: 20(fvec4) ImageFetch 27 18
+ 33: 30 Load 32(utBuf)
+ 35: 34(ivec4) ImageFetch 33 18
+ 39: 36 Load 38(itBuf)
+ 41: 40(ivec4) ImageFetch 39 18
+ Return
+ FunctionEnd
--- /dev/null
+#version 450\r
+\r
+uniform textureBuffer tBuf;\r
+uniform sampler s;\r
+uniform samplerBuffer sBuf;\r
+\r
+uniform utextureBuffer utBuf;\r
+uniform itextureBuffer itBuf;\r
+\r
+void main()\r
+{\r
+ texelFetch(samplerBuffer(tBuf, s), 13);\r
+ texelFetch(sBuf, 13);\r
+ texelFetch(tBuf, 13);\r
+ texelFetch(utBuf, 13);\r
+ texelFetch(itBuf, 13);\r
+}\r
else {
addSamplingFunctions(sampler, typeName, version, profile);
addGatherFunctions(sampler, typeName, version, profile);
+ if (spvVersion.vulkan > 0 && sampler.dim == EsdBuffer && sampler.isCombined()) {
+ // Vulkan wants a textureBuffer to allow texelFetch() --
+ // a sampled image with no sampler.
+ // So, add sampling functions for both the
+ // samplerBuffer and textureBuffer types.
+ sampler.setTexture(sampler.type, sampler.dim, sampler.arrayed, sampler.shadow,
+ sampler.ms);
+ addSamplingFunctions(sampler, sampler.getString(), version, profile);
+ }
}
}
}