Use of gl_Layer and gl_ViewportIndex in tessellation and vertex shaders should not trigger the addition of the Geometry capability. Fixes #2461 Added tests for use of gl_Layer and gl_ViewportIndex in a tessellation evaluation shader. Several tests for NVIDIA features for tessellation, vertex, or mesh shaders now lose the Geometry or MultiViewport capabilities. This is ok because the functionality is already covered by the ShaderViewportIndexLayerNV capability. The spv.meshShaderPerViewBuiltins.mesh test now fails validation because the validator does not know that PrimitiveId (and possibly other) builtins are enabled by the MeshShadingNV capability. I filed https://github.com/KhronosGroup/SPIRV-Headers/issues/179 to fix the grammar upstream.
68 lines
3.7 KiB
Plaintext
68 lines
3.7 KiB
Plaintext
spv.stereoViewRendering.vert
|
|
// Module Version 10000
|
|
// Generated by (magic number): 8000a
|
|
// Id's are bound by 27
|
|
|
|
Capability Shader
|
|
Capability ShaderViewportIndexLayerNV
|
|
Capability ShaderViewportMaskNV
|
|
Capability ShaderStereoViewNV
|
|
Extension "SPV_EXT_shader_viewport_index_layer"
|
|
Extension "SPV_NV_stereo_view_rendering"
|
|
Extension "SPV_NV_viewport_array2"
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint Vertex 4 "main" 11 19 23 26
|
|
Source GLSL 450
|
|
SourceExtension "GL_NV_stereo_view_rendering"
|
|
SourceExtension "GL_NV_viewport_array2"
|
|
Name 4 "main"
|
|
Name 11 "gl_SecondaryViewportMaskNV"
|
|
Name 19 "gl_SecondaryPositionNV"
|
|
Name 21 "gl_PerVertex"
|
|
MemberName 21(gl_PerVertex) 0 "gl_Position"
|
|
MemberName 21(gl_PerVertex) 1 "gl_PointSize"
|
|
MemberName 21(gl_PerVertex) 2 "gl_ClipDistance"
|
|
MemberName 21(gl_PerVertex) 3 "gl_CullDistance"
|
|
Name 23 ""
|
|
Name 26 "gl_Layer"
|
|
Decorate 11(gl_SecondaryViewportMaskNV) BuiltIn SecondaryViewportMaskNV
|
|
Decorate 19(gl_SecondaryPositionNV) BuiltIn SecondaryPositionNV
|
|
MemberDecorate 21(gl_PerVertex) 0 BuiltIn Position
|
|
MemberDecorate 21(gl_PerVertex) 1 BuiltIn PointSize
|
|
MemberDecorate 21(gl_PerVertex) 2 BuiltIn ClipDistance
|
|
MemberDecorate 21(gl_PerVertex) 3 BuiltIn CullDistance
|
|
Decorate 21(gl_PerVertex) Block
|
|
Decorate 26(gl_Layer) BuiltIn Layer
|
|
Decorate 26(gl_Layer) ViewportRelativeNV
|
|
Decorate 26(gl_Layer) SecondaryViewportRelativeNV 2
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
6: TypeInt 32 1
|
|
7: TypeInt 32 0
|
|
8: 7(int) Constant 1
|
|
9: TypeArray 6(int) 8
|
|
10: TypePointer Output 9
|
|
11(gl_SecondaryViewportMaskNV): 10(ptr) Variable Output
|
|
12: 6(int) Constant 0
|
|
13: 6(int) Constant 1
|
|
14: TypePointer Output 6(int)
|
|
16: TypeFloat 32
|
|
17: TypeVector 16(float) 4
|
|
18: TypePointer Output 17(fvec4)
|
|
19(gl_SecondaryPositionNV): 18(ptr) Variable Output
|
|
20: TypeArray 16(float) 8
|
|
21(gl_PerVertex): TypeStruct 17(fvec4) 16(float) 20 20
|
|
22: TypePointer Output 21(gl_PerVertex)
|
|
23: 22(ptr) Variable Output
|
|
26(gl_Layer): 14(ptr) Variable Output
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
15: 14(ptr) AccessChain 11(gl_SecondaryViewportMaskNV) 12
|
|
Store 15 13
|
|
24: 18(ptr) AccessChain 23 12
|
|
25: 17(fvec4) Load 24
|
|
Store 19(gl_SecondaryPositionNV) 25
|
|
Return
|
|
FunctionEnd
|