spv.functionNestedOpaque.vert
Validation failed
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 39

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main"
                              Source GLSL 450
                              Name 4  "main"
                              Name 12  "foo(s21;"
                              Name 11  "t"
                              Name 14  "S"
                              MemberName 14(S) 0  "s"
                              Name 18  "barc(struct-S-s211;"
                              Name 17  "p"
                              Name 21  "bar(struct-S-s211;"
                              Name 20  "p"
                              Name 36  "si"
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeImage 6(float) 2D sampled format:Unknown
               8:             TypeSampledImage 7
               9:             TypePointer UniformConstant 8
              10:             TypeFunction 2 9(ptr)
           14(S):             TypeStruct 8
              15:             TypePointer UniformConstant 14(S)
              16:             TypeFunction 2 15(ptr)
              24:             TypeVector 6(float) 2
              25:    6(float) Constant 1056964608
              26:   24(fvec2) ConstantComposite 25 25
              27:             TypeVector 6(float) 4
              28:    6(float) Constant 0
              30:             TypeInt 32 1
              31:     30(int) Constant 0
          36(si):     15(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
              37:           2 FunctionCall 18(barc(struct-S-s211;) 36(si)
              38:           2 FunctionCall 21(bar(struct-S-s211;) 36(si)
                              Return
                              FunctionEnd
    12(foo(s21;):           2 Function None 10
           11(t):      9(ptr) FunctionParameter
              13:             Label
              23:           8 Load 11(t)
              29:   27(fvec4) ImageSampleExplicitLod 23 26 Lod 28
                              Return
                              FunctionEnd
18(barc(struct-S-s211;):           2 Function None 16
           17(p):     15(ptr) FunctionParameter
              19:             Label
              32:      9(ptr) AccessChain 17(p) 31
              33:           2 FunctionCall 12(foo(s21;) 32
                              Return
                              FunctionEnd
21(bar(struct-S-s211;):           2 Function None 16
           20(p):     15(ptr) FunctionParameter
              22:             Label
              34:      9(ptr) AccessChain 20(p) 31
              35:           2 FunctionCall 12(foo(s21;) 34
                              Return
                              FunctionEnd
