spv.functionNestedOpaque.vert error: SPIRV-Tools Validation Errors error: UniformConstant OpVariable '36[si] 'has illegal type. From Vulkan spec, section 14.5.2: Variables identified with the UniformConstant storage class are used only as handles to refer to opaque resources. Such variables must be typed as OpTypeImage, OpTypeSampler, OpTypeSampledImage, OpTypeAccelerationStructureNV, or an array of one of these types. %si = OpVariable %_ptr_UniformConstant_S UniformConstant // Module Version 10000 // Generated by (magic number): 80007 // 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