spv.samplerlessTextureFunctions.frag
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 51

                              Capability Shader
                              Capability SampledBuffer
                              Capability ImageQuery
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main"
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              SourceExtension  "GL_EXT_samplerless_texture_functions"
                              Name 4  "main"
                              Name 9  "tex2DFetch"
                              Name 12  "tex2D"
                              Name 19  "texMSFetch"
                              Name 22  "texMS"
                              Name 25  "bufFetch"
                              Name 28  "buf"
                              Name 31  "tex2DFetchOffset"
                              Name 35  "tex2DSize"
                              Name 38  "texMSSize"
                              Name 42  "bufSize"
                              Name 45  "tex2DLevels"
                              Name 48  "texMSSamples"
                              Decorate 12(tex2D) DescriptorSet 0
                              Decorate 12(tex2D) Binding 1
                              Decorate 22(texMS) DescriptorSet 0
                              Decorate 22(texMS) Binding 1
                              Decorate 28(buf) DescriptorSet 0
                              Decorate 28(buf) Binding 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(tex2D):     11(ptr) Variable UniformConstant
              14:             TypeInt 32 1
              15:             TypeVector 14(int) 2
              16:     14(int) Constant 0
              17:   15(ivec2) ConstantComposite 16 16
              20:             TypeImage 6(float) 2D multi-sampled sampled format:Unknown
              21:             TypePointer UniformConstant 20
       22(texMS):     21(ptr) Variable UniformConstant
              26:             TypeImage 6(float) Buffer sampled format:Unknown
              27:             TypePointer UniformConstant 26
         28(buf):     27(ptr) Variable UniformConstant
              34:             TypePointer Function 15(ivec2)
              41:             TypePointer Function 14(int)
         4(main):           2 Function None 3
               5:             Label
   9(tex2DFetch):      8(ptr) Variable Function
  19(texMSFetch):      8(ptr) Variable Function
    25(bufFetch):      8(ptr) Variable Function
31(tex2DFetchOffset):      8(ptr) Variable Function
   35(tex2DSize):     34(ptr) Variable Function
   38(texMSSize):     34(ptr) Variable Function
     42(bufSize):     41(ptr) Variable Function
 45(tex2DLevels):     41(ptr) Variable Function
48(texMSSamples):     41(ptr) Variable Function
              13:          10 Load 12(tex2D)
              18:    7(fvec4) ImageFetch 13 17 Lod 16
                              Store 9(tex2DFetch) 18
              23:          20 Load 22(texMS)
              24:    7(fvec4) ImageFetch 23 17 Sample 16
                              Store 19(texMSFetch) 24
              29:          26 Load 28(buf)
              30:    7(fvec4) ImageFetch 29 16
                              Store 25(bufFetch) 30
              32:          10 Load 12(tex2D)
              33:    7(fvec4) ImageFetch 32 17 Lod ConstOffset 16 17
                              Store 31(tex2DFetchOffset) 33
              36:          10 Load 12(tex2D)
              37:   15(ivec2) ImageQuerySizeLod 36 16
                              Store 35(tex2DSize) 37
              39:          20 Load 22(texMS)
              40:   15(ivec2) ImageQuerySize 39
                              Store 38(texMSSize) 40
              43:          26 Load 28(buf)
              44:     14(int) ImageQuerySize 43
                              Store 42(bufSize) 44
              46:          10 Load 12(tex2D)
              47:     14(int) ImageQueryLevels 46
                              Store 45(tex2DLevels) 47
              49:          20 Load 22(texMS)
              50:     14(int) ImageQuerySamples 49
                              Store 48(texMSSamples) 50
                              Return
                              FunctionEnd
