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.
91 lines
5.0 KiB
Plaintext
91 lines
5.0 KiB
Plaintext
spv.stereoViewRendering.tesc
|
|
// Module Version 10000
|
|
// Generated by (magic number): 8000a
|
|
// Id's are bound by 42
|
|
|
|
Capability Tessellation
|
|
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 TessellationControl 4 "main" 16 18 31 41
|
|
ExecutionMode 4 OutputVertices 4
|
|
Source GLSL 450
|
|
SourceExtension "GL_NV_stereo_view_rendering"
|
|
SourceExtension "GL_NV_viewport_array2"
|
|
Name 4 "main"
|
|
Name 12 "gl_PerVertex"
|
|
MemberName 12(gl_PerVertex) 0 "gl_SecondaryPositionNV"
|
|
MemberName 12(gl_PerVertex) 1 "gl_SecondaryViewportMaskNV"
|
|
Name 16 "gl_out"
|
|
Name 18 "gl_InvocationID"
|
|
Name 27 "gl_PerVertex"
|
|
MemberName 27(gl_PerVertex) 0 "gl_Position"
|
|
MemberName 27(gl_PerVertex) 1 "gl_PointSize"
|
|
MemberName 27(gl_PerVertex) 2 "gl_ClipDistance"
|
|
MemberName 27(gl_PerVertex) 3 "gl_CullDistance"
|
|
MemberName 27(gl_PerVertex) 4 "gl_SecondaryPositionNV"
|
|
Name 31 "gl_in"
|
|
Name 41 "gl_Layer"
|
|
MemberDecorate 12(gl_PerVertex) 0 BuiltIn SecondaryPositionNV
|
|
MemberDecorate 12(gl_PerVertex) 1 BuiltIn SecondaryViewportMaskNV
|
|
Decorate 12(gl_PerVertex) Block
|
|
Decorate 18(gl_InvocationID) BuiltIn InvocationId
|
|
MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position
|
|
MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize
|
|
MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance
|
|
MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance
|
|
MemberDecorate 27(gl_PerVertex) 4 BuiltIn SecondaryPositionNV
|
|
Decorate 27(gl_PerVertex) Block
|
|
Decorate 41(gl_Layer) BuiltIn Layer
|
|
Decorate 41(gl_Layer) ViewportRelativeNV
|
|
Decorate 41(gl_Layer) SecondaryViewportRelativeNV 1
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
6: TypeFloat 32
|
|
7: TypeVector 6(float) 4
|
|
8: TypeInt 32 1
|
|
9: TypeInt 32 0
|
|
10: 9(int) Constant 2
|
|
11: TypeArray 8(int) 10
|
|
12(gl_PerVertex): TypeStruct 7(fvec4) 11
|
|
13: 9(int) Constant 4
|
|
14: TypeArray 12(gl_PerVertex) 13
|
|
15: TypePointer Output 14
|
|
16(gl_out): 15(ptr) Variable Output
|
|
17: TypePointer Input 8(int)
|
|
18(gl_InvocationID): 17(ptr) Variable Input
|
|
20: 8(int) Constant 1
|
|
21: 8(int) Constant 0
|
|
22: TypePointer Output 8(int)
|
|
25: 9(int) Constant 1
|
|
26: TypeArray 6(float) 25
|
|
27(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 26 26 7(fvec4)
|
|
28: 9(int) Constant 32
|
|
29: TypeArray 27(gl_PerVertex) 28
|
|
30: TypePointer Input 29
|
|
31(gl_in): 30(ptr) Variable Input
|
|
32: TypePointer Input 7(fvec4)
|
|
35: 8(int) Constant 4
|
|
39: TypePointer Output 7(fvec4)
|
|
41(gl_Layer): 22(ptr) Variable Output
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
19: 8(int) Load 18(gl_InvocationID)
|
|
23: 22(ptr) AccessChain 16(gl_out) 19 20 21
|
|
Store 23 20
|
|
24: 8(int) Load 18(gl_InvocationID)
|
|
33: 32(ptr) AccessChain 31(gl_in) 20 21
|
|
34: 7(fvec4) Load 33
|
|
36: 32(ptr) AccessChain 31(gl_in) 20 35
|
|
37: 7(fvec4) Load 36
|
|
38: 7(fvec4) FAdd 34 37
|
|
40: 39(ptr) AccessChain 16(gl_out) 24 21
|
|
Store 40 38
|
|
Return
|
|
FunctionEnd
|