
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.
58 lines
2.9 KiB
Plaintext
58 lines
2.9 KiB
Plaintext
spv.viewportArray2.tesc
|
|
Validation failed
|
|
// Module Version 10000
|
|
// Generated by (magic number): 8000a
|
|
// Id's are bound by 25
|
|
|
|
Capability Tessellation
|
|
Capability ShaderViewportIndexLayerNV
|
|
Capability ShaderViewportMaskNV
|
|
Extension "SPV_EXT_shader_viewport_index_layer"
|
|
Extension "SPV_NV_viewport_array2"
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint TessellationControl 4 "main" 14 16 22 24
|
|
ExecutionMode 4 OutputVertices 4
|
|
Source GLSL 450
|
|
SourceExtension "GL_NV_viewport_array2"
|
|
Name 4 "main"
|
|
Name 10 "gl_PerVertex"
|
|
MemberName 10(gl_PerVertex) 0 "gl_ViewportMask"
|
|
Name 14 "gl_out"
|
|
Name 16 "gl_InvocationID"
|
|
Name 22 "gl_ViewportIndex"
|
|
Name 24 "gl_Layer"
|
|
MemberDecorate 10(gl_PerVertex) 0 BuiltIn ViewportMaskNV
|
|
Decorate 10(gl_PerVertex) Block
|
|
Decorate 16(gl_InvocationID) BuiltIn InvocationId
|
|
Decorate 22(gl_ViewportIndex) BuiltIn ViewportIndex
|
|
Decorate 24(gl_Layer) BuiltIn Layer
|
|
Decorate 24(gl_Layer) ViewportRelativeNV
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
6: TypeInt 32 1
|
|
7: TypeInt 32 0
|
|
8: 7(int) Constant 2
|
|
9: TypeArray 6(int) 8
|
|
10(gl_PerVertex): TypeStruct 9
|
|
11: 7(int) Constant 4
|
|
12: TypeArray 10(gl_PerVertex) 11
|
|
13: TypePointer Output 12
|
|
14(gl_out): 13(ptr) Variable Output
|
|
15: TypePointer Input 6(int)
|
|
16(gl_InvocationID): 15(ptr) Variable Input
|
|
18: 6(int) Constant 0
|
|
19: 6(int) Constant 1
|
|
20: TypePointer Output 6(int)
|
|
22(gl_ViewportIndex): 20(ptr) Variable Output
|
|
23: 6(int) Constant 2
|
|
24(gl_Layer): 20(ptr) Variable Output
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
17: 6(int) Load 16(gl_InvocationID)
|
|
21: 20(ptr) AccessChain 14(gl_out) 17 18 18
|
|
Store 21 19
|
|
Store 22(gl_ViewportIndex) 23
|
|
Return
|
|
FunctionEnd
|