mirror of
https://github.com/KhronosGroup/glslang
synced 2024-09-19 20:29:54 +00:00
Fix #790: Don't emit NV-specific interface members unless enabled by extension.
This commit is contained in:
parent
93750bc0a4
commit
0e7378446b
@ -129,6 +129,7 @@ protected:
|
|||||||
void convertSwizzle(const glslang::TIntermAggregate&, std::vector<unsigned>& swizzle);
|
void convertSwizzle(const glslang::TIntermAggregate&, std::vector<unsigned>& swizzle);
|
||||||
spv::Id convertGlslangToSpvType(const glslang::TType& type);
|
spv::Id convertGlslangToSpvType(const glslang::TType& type);
|
||||||
spv::Id convertGlslangToSpvType(const glslang::TType& type, glslang::TLayoutPacking, const glslang::TQualifier&);
|
spv::Id convertGlslangToSpvType(const glslang::TType& type, glslang::TLayoutPacking, const glslang::TQualifier&);
|
||||||
|
bool filterMember(const glslang::TType& member);
|
||||||
spv::Id convertGlslangStructToSpvType(const glslang::TType&, const glslang::TTypeList* glslangStruct,
|
spv::Id convertGlslangStructToSpvType(const glslang::TType&, const glslang::TTypeList* glslangStruct,
|
||||||
glslang::TLayoutPacking, const glslang::TQualifier&);
|
glslang::TLayoutPacking, const glslang::TQualifier&);
|
||||||
void decorateStructType(const glslang::TType&, const glslang::TTypeList* glslangStruct, glslang::TLayoutPacking,
|
void decorateStructType(const glslang::TType&, const glslang::TTypeList* glslangStruct, glslang::TLayoutPacking,
|
||||||
@ -2263,6 +2264,24 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
|
|||||||
return spvType;
|
return spvType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: this functionality should exist at a higher level, in creating the AST
|
||||||
|
//
|
||||||
|
// Identify interface members that don't have their required extension turned on.
|
||||||
|
//
|
||||||
|
bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member)
|
||||||
|
{
|
||||||
|
auto& extensions = glslangIntermediate->getRequestedExtensions();
|
||||||
|
|
||||||
|
if (member.getFieldName() == "gl_SecondaryPositionNV" &&
|
||||||
|
extensions.find("GL_NV_stereo_view_rendering") == extensions.end())
|
||||||
|
return true;
|
||||||
|
if (member.getFieldName() == "gl_PositionPerViewNV" &&
|
||||||
|
extensions.find("GL_NVX_multiview_per_view_attributes") == extensions.end())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
// Do full recursive conversion of a glslang structure (or block) type to a SPIR-V Id.
|
// Do full recursive conversion of a glslang structure (or block) type to a SPIR-V Id.
|
||||||
// explicitLayout can be kept the same throughout the hierarchical recursive walk.
|
// explicitLayout can be kept the same throughout the hierarchical recursive walk.
|
||||||
// Mutually recursive with convertGlslangToSpvType().
|
// Mutually recursive with convertGlslangToSpvType().
|
||||||
@ -2282,8 +2301,11 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy
|
|||||||
if (type.getBasicType() == glslang::EbtBlock)
|
if (type.getBasicType() == glslang::EbtBlock)
|
||||||
memberRemapper[glslangMembers][i] = -1;
|
memberRemapper[glslangMembers][i] = -1;
|
||||||
} else {
|
} else {
|
||||||
if (type.getBasicType() == glslang::EbtBlock)
|
if (type.getBasicType() == glslang::EbtBlock) {
|
||||||
memberRemapper[glslangMembers][i] = i - memberDelta;
|
memberRemapper[glslangMembers][i] = i - memberDelta;
|
||||||
|
if (filterMember(glslangMember))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
// modify just this child's view of the qualifier
|
// modify just this child's view of the qualifier
|
||||||
glslang::TQualifier memberQualifier = glslangMember.getQualifier();
|
glslang::TQualifier memberQualifier = glslangMember.getQualifier();
|
||||||
InheritQualifiers(memberQualifier, qualifier);
|
InheritQualifiers(memberQualifier, qualifier);
|
||||||
@ -2322,8 +2344,11 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
|
|||||||
for (int i = 0; i < (int)glslangMembers->size(); i++) {
|
for (int i = 0; i < (int)glslangMembers->size(); i++) {
|
||||||
glslang::TType& glslangMember = *(*glslangMembers)[i].type;
|
glslang::TType& glslangMember = *(*glslangMembers)[i].type;
|
||||||
int member = i;
|
int member = i;
|
||||||
if (type.getBasicType() == glslang::EbtBlock)
|
if (type.getBasicType() == glslang::EbtBlock) {
|
||||||
member = memberRemapper[glslangMembers][i];
|
member = memberRemapper[glslangMembers][i];
|
||||||
|
if (filterMember(glslangMember))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// modify just this child's view of the qualifier
|
// modify just this child's view of the qualifier
|
||||||
glslang::TQualifier memberQualifier = glslangMember.getQualifier();
|
glslang::TQualifier memberQualifier = glslangMember.getQualifier();
|
||||||
|
54
Test/baseResults/spv.450.geom.out
Executable file
54
Test/baseResults/spv.450.geom.out
Executable file
@ -0,0 +1,54 @@
|
|||||||
|
spv.450.geom
|
||||||
|
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||||
|
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80001
|
||||||
|
// Id's are bound by 24
|
||||||
|
|
||||||
|
Capability Geometry
|
||||||
|
Capability GeometryPointSize
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Geometry 4 "main" 14 23
|
||||||
|
ExecutionMode 4 Triangles
|
||||||
|
ExecutionMode 4 Invocations 4
|
||||||
|
ExecutionMode 4 OutputLineStrip
|
||||||
|
ExecutionMode 4 OutputVertices 127
|
||||||
|
Source GLSL 450
|
||||||
|
Name 4 "main"
|
||||||
|
Name 8 "p"
|
||||||
|
Name 9 "gl_PerVertex"
|
||||||
|
MemberName 9(gl_PerVertex) 0 "gl_PointSize"
|
||||||
|
Name 14 "gl_in"
|
||||||
|
Name 21 "gl_PerVertex"
|
||||||
|
MemberName 21(gl_PerVertex) 0 "gl_PointSize"
|
||||||
|
Name 23 ""
|
||||||
|
MemberDecorate 9(gl_PerVertex) 0 BuiltIn PointSize
|
||||||
|
Decorate 9(gl_PerVertex) Block
|
||||||
|
MemberDecorate 21(gl_PerVertex) 0 BuiltIn PointSize
|
||||||
|
Decorate 21(gl_PerVertex) Block
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeFloat 32
|
||||||
|
7: TypePointer Function 6(float)
|
||||||
|
9(gl_PerVertex): TypeStruct 6(float)
|
||||||
|
10: TypeInt 32 0
|
||||||
|
11: 10(int) Constant 3
|
||||||
|
12: TypeArray 9(gl_PerVertex) 11
|
||||||
|
13: TypePointer Input 12
|
||||||
|
14(gl_in): 13(ptr) Variable Input
|
||||||
|
15: TypeInt 32 1
|
||||||
|
16: 15(int) Constant 1
|
||||||
|
17: 15(int) Constant 0
|
||||||
|
18: TypePointer Input 6(float)
|
||||||
|
21(gl_PerVertex): TypeStruct 6(float)
|
||||||
|
22: TypePointer Output 21(gl_PerVertex)
|
||||||
|
23: 22(ptr) Variable Output
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
8(p): 7(ptr) Variable Function
|
||||||
|
19: 18(ptr) AccessChain 14(gl_in) 16 17
|
||||||
|
20: 6(float) Load 19
|
||||||
|
Store 8(p) 20
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
49
Test/baseResults/spv.450.noRedecl.tesc.out
Executable file
49
Test/baseResults/spv.450.noRedecl.tesc.out
Executable file
@ -0,0 +1,49 @@
|
|||||||
|
spv.450.noRedecl.tesc
|
||||||
|
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||||
|
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80001
|
||||||
|
// Id's are bound by 21
|
||||||
|
|
||||||
|
Capability Tessellation
|
||||||
|
Capability TessellationPointSize
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint TessellationControl 4 "main" 15 20
|
||||||
|
ExecutionMode 4 OutputVertices 4
|
||||||
|
Source GLSL 450
|
||||||
|
Name 4 "main"
|
||||||
|
Name 11 "gl_PerVertex"
|
||||||
|
MemberName 11(gl_PerVertex) 0 "gl_Position"
|
||||||
|
MemberName 11(gl_PerVertex) 1 "gl_PointSize"
|
||||||
|
MemberName 11(gl_PerVertex) 2 "gl_ClipDistance"
|
||||||
|
MemberName 11(gl_PerVertex) 3 "gl_CullDistance"
|
||||||
|
Name 15 "gl_in"
|
||||||
|
Name 20 "patchOut"
|
||||||
|
MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
|
||||||
|
MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
|
||||||
|
MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||||
|
MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance
|
||||||
|
Decorate 11(gl_PerVertex) Block
|
||||||
|
Decorate 20(patchOut) Patch
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeFloat 32
|
||||||
|
7: TypeVector 6(float) 4
|
||||||
|
8: TypeInt 32 0
|
||||||
|
9: 8(int) Constant 1
|
||||||
|
10: TypeArray 6(float) 9
|
||||||
|
11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10
|
||||||
|
12: 8(int) Constant 32
|
||||||
|
13: TypeArray 11(gl_PerVertex) 12
|
||||||
|
14: TypePointer Input 13
|
||||||
|
15(gl_in): 14(ptr) Variable Input
|
||||||
|
16: TypeInt 32 1
|
||||||
|
17: 16(int) Constant 0
|
||||||
|
18: 16(int) Constant 1
|
||||||
|
19: TypePointer Output 7(fvec4)
|
||||||
|
20(patchOut): 19(ptr) Variable Output
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
@ -25,7 +25,6 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||||||
MemberName 27(gl_PerVertex) 1 "gl_PointSize"
|
MemberName 27(gl_PerVertex) 1 "gl_PointSize"
|
||||||
MemberName 27(gl_PerVertex) 2 "gl_ClipDistance"
|
MemberName 27(gl_PerVertex) 2 "gl_ClipDistance"
|
||||||
MemberName 27(gl_PerVertex) 3 "gl_CullDistance"
|
MemberName 27(gl_PerVertex) 3 "gl_CullDistance"
|
||||||
MemberName 27(gl_PerVertex) 4 "gl_SecondaryPositionNV"
|
|
||||||
MemberName 27(gl_PerVertex) 5 "gl_PositionPerViewNV"
|
MemberName 27(gl_PerVertex) 5 "gl_PositionPerViewNV"
|
||||||
Name 31 "gl_in"
|
Name 31 "gl_in"
|
||||||
MemberDecorate 13(gl_PerVertex) 0 BuiltIn PositionPerViewNV
|
MemberDecorate 13(gl_PerVertex) 0 BuiltIn PositionPerViewNV
|
||||||
@ -57,7 +56,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||||||
22: 11(int) Constant 0
|
22: 11(int) Constant 0
|
||||||
23: TypePointer Output 11(int)
|
23: TypePointer Output 11(int)
|
||||||
26: TypeArray 6(float) 9
|
26: TypeArray 6(float) 9
|
||||||
27(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 26 26 7(fvec4) 10
|
27(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 26 26 10
|
||||||
28: 8(int) Constant 32
|
28: 8(int) Constant 32
|
||||||
29: TypeArray 27(gl_PerVertex) 28
|
29: TypeArray 27(gl_PerVertex) 28
|
||||||
30: TypePointer Input 29
|
30: TypePointer Input 29
|
||||||
|
@ -3,7 +3,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80001
|
// Generated by (magic number): 80001
|
||||||
// Id's are bound by 39
|
// Id's are bound by 38
|
||||||
|
|
||||||
Capability Tessellation
|
Capability Tessellation
|
||||||
Capability ShaderViewportMaskNV
|
Capability ShaderViewportMaskNV
|
||||||
@ -12,7 +12,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||||||
Extension "SPV_NV_viewport_array2"
|
Extension "SPV_NV_viewport_array2"
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint TessellationControl 4 "main" 16 18 33
|
EntryPoint TessellationControl 4 "main" 16 18 32
|
||||||
ExecutionMode 4 OutputVertices 4
|
ExecutionMode 4 OutputVertices 4
|
||||||
Source GLSL 450
|
Source GLSL 450
|
||||||
SourceExtension "GL_NV_stereo_view_rendering"
|
SourceExtension "GL_NV_stereo_view_rendering"
|
||||||
@ -24,14 +24,13 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||||||
MemberName 12(gl_PerVertex) 2 "gl_SecondaryViewportMaskNV"
|
MemberName 12(gl_PerVertex) 2 "gl_SecondaryViewportMaskNV"
|
||||||
Name 16 "gl_out"
|
Name 16 "gl_out"
|
||||||
Name 18 "gl_InvocationID"
|
Name 18 "gl_InvocationID"
|
||||||
Name 29 "gl_PerVertex"
|
Name 28 "gl_PerVertex"
|
||||||
MemberName 29(gl_PerVertex) 0 "gl_Position"
|
MemberName 28(gl_PerVertex) 0 "gl_Position"
|
||||||
MemberName 29(gl_PerVertex) 1 "gl_PointSize"
|
MemberName 28(gl_PerVertex) 1 "gl_PointSize"
|
||||||
MemberName 29(gl_PerVertex) 2 "gl_ClipDistance"
|
MemberName 28(gl_PerVertex) 2 "gl_ClipDistance"
|
||||||
MemberName 29(gl_PerVertex) 3 "gl_CullDistance"
|
MemberName 28(gl_PerVertex) 3 "gl_CullDistance"
|
||||||
MemberName 29(gl_PerVertex) 4 "gl_SecondaryPositionNV"
|
MemberName 28(gl_PerVertex) 4 "gl_SecondaryPositionNV"
|
||||||
MemberName 29(gl_PerVertex) 5 "gl_PositionPerViewNV"
|
Name 32 "gl_in"
|
||||||
Name 33 "gl_in"
|
|
||||||
MemberDecorate 12(gl_PerVertex) 0 BuiltIn Layer
|
MemberDecorate 12(gl_PerVertex) 0 BuiltIn Layer
|
||||||
MemberDecorate 12(gl_PerVertex) 0 ViewportRelativeNV
|
MemberDecorate 12(gl_PerVertex) 0 ViewportRelativeNV
|
||||||
MemberDecorate 12(gl_PerVertex) 0 SecondaryViewportRelativeNV 1
|
MemberDecorate 12(gl_PerVertex) 0 SecondaryViewportRelativeNV 1
|
||||||
@ -39,11 +38,11 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||||||
MemberDecorate 12(gl_PerVertex) 2 BuiltIn SecondaryViewportMaskNV
|
MemberDecorate 12(gl_PerVertex) 2 BuiltIn SecondaryViewportMaskNV
|
||||||
Decorate 12(gl_PerVertex) Block
|
Decorate 12(gl_PerVertex) Block
|
||||||
Decorate 18(gl_InvocationID) BuiltIn InvocationId
|
Decorate 18(gl_InvocationID) BuiltIn InvocationId
|
||||||
MemberDecorate 29(gl_PerVertex) 0 BuiltIn Position
|
MemberDecorate 28(gl_PerVertex) 0 BuiltIn Position
|
||||||
MemberDecorate 29(gl_PerVertex) 1 BuiltIn PointSize
|
MemberDecorate 28(gl_PerVertex) 1 BuiltIn PointSize
|
||||||
MemberDecorate 29(gl_PerVertex) 2 BuiltIn ClipDistance
|
MemberDecorate 28(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||||
MemberDecorate 29(gl_PerVertex) 3 BuiltIn CullDistance
|
MemberDecorate 28(gl_PerVertex) 3 BuiltIn CullDistance
|
||||||
Decorate 29(gl_PerVertex) Block
|
Decorate 28(gl_PerVertex) Block
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeInt 32 1
|
6: TypeInt 32 1
|
||||||
@ -65,23 +64,22 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||||||
23: TypePointer Output 6(int)
|
23: TypePointer Output 6(int)
|
||||||
26: 9(int) Constant 1
|
26: 9(int) Constant 1
|
||||||
27: TypeArray 7(float) 26
|
27: TypeArray 7(float) 26
|
||||||
28: TypeArray 8(fvec4) 26
|
28(gl_PerVertex): TypeStruct 8(fvec4) 7(float) 27 27 8(fvec4)
|
||||||
29(gl_PerVertex): TypeStruct 8(fvec4) 7(float) 27 27 8(fvec4) 28
|
29: 9(int) Constant 32
|
||||||
30: 9(int) Constant 32
|
30: TypeArray 28(gl_PerVertex) 29
|
||||||
31: TypeArray 29(gl_PerVertex) 30
|
31: TypePointer Input 30
|
||||||
32: TypePointer Input 31
|
32(gl_in): 31(ptr) Variable Input
|
||||||
33(gl_in): 32(ptr) Variable Input
|
33: TypePointer Input 8(fvec4)
|
||||||
34: TypePointer Input 8(fvec4)
|
36: TypePointer Output 8(fvec4)
|
||||||
37: TypePointer Output 8(fvec4)
|
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
19: 6(int) Load 18(gl_InvocationID)
|
19: 6(int) Load 18(gl_InvocationID)
|
||||||
24: 23(ptr) AccessChain 16(gl_out) 19 20 21
|
24: 23(ptr) AccessChain 16(gl_out) 19 20 21
|
||||||
Store 24 22
|
Store 24 22
|
||||||
25: 6(int) Load 18(gl_InvocationID)
|
25: 6(int) Load 18(gl_InvocationID)
|
||||||
35: 34(ptr) AccessChain 33(gl_in) 22 21
|
34: 33(ptr) AccessChain 32(gl_in) 22 21
|
||||||
36: 8(fvec4) Load 35
|
35: 8(fvec4) Load 34
|
||||||
38: 37(ptr) AccessChain 16(gl_out) 25 22
|
37: 36(ptr) AccessChain 16(gl_out) 25 22
|
||||||
Store 38 36
|
Store 37 35
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
20
Test/spv.450.geom
Normal file
20
Test/spv.450.geom
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#version 450 core
|
||||||
|
|
||||||
|
layout(triangles) in;
|
||||||
|
|
||||||
|
in gl_PerVertex {
|
||||||
|
float gl_PointSize;
|
||||||
|
} gl_in[];
|
||||||
|
|
||||||
|
out gl_PerVertex {
|
||||||
|
float gl_PointSize;
|
||||||
|
};
|
||||||
|
|
||||||
|
layout(line_strip) out;
|
||||||
|
layout(max_vertices = 127) out;
|
||||||
|
layout(invocations = 4) in;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
float p = gl_in[1].gl_PointSize;
|
||||||
|
}
|
10
Test/spv.450.noRedecl.tesc
Normal file
10
Test/spv.450.noRedecl.tesc
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#version 450 core
|
||||||
|
|
||||||
|
layout(vertices = 4) out;
|
||||||
|
|
||||||
|
patch out vec4 patchOut;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
gl_in[0].gl_PointSize;
|
||||||
|
}
|
@ -2,5 +2,5 @@
|
|||||||
// For the version, it uses the latest git tag followed by the number of commits.
|
// For the version, it uses the latest git tag followed by the number of commits.
|
||||||
// For the date, it uses the current date (when then script is run).
|
// For the date, it uses the current date (when then script is run).
|
||||||
|
|
||||||
#define GLSLANG_REVISION "Overload400-PrecQual.1932"
|
#define GLSLANG_REVISION "Overload400-PrecQual.1933"
|
||||||
#define GLSLANG_DATE "23-Mar-2017"
|
#define GLSLANG_DATE "24-Mar-2017"
|
||||||
|
@ -3256,11 +3256,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||||||
stageBuiltins[EShLangVertex].append(
|
stageBuiltins[EShLangVertex].append(
|
||||||
"out int gl_ViewportIndex;"
|
"out int gl_ViewportIndex;"
|
||||||
"out int gl_Layer;"
|
"out int gl_Layer;"
|
||||||
"out int gl_ViewportMask[];"
|
"out int gl_ViewportMask[];" // GL_NV_viewport_array2
|
||||||
"out int gl_SecondaryViewportMaskNV[];"
|
"out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering
|
||||||
"out vec4 gl_SecondaryPositionNV;"
|
"out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
|
||||||
"out vec4 gl_PositionPerViewNV[];"
|
"out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
|
||||||
"out int gl_ViewportMaskPerViewNV[];"
|
"out int gl_ViewportMaskPerViewNV[];" // GL_NVX_multiview_per_view_attributes
|
||||||
);
|
);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -3333,8 +3333,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||||||
stageBuiltins[EShLangGeometry].append(
|
stageBuiltins[EShLangGeometry].append(
|
||||||
"float gl_CullDistance[];"
|
"float gl_CullDistance[];"
|
||||||
#ifdef NV_EXTENSIONS
|
#ifdef NV_EXTENSIONS
|
||||||
"vec4 gl_SecondaryPositionNV;"
|
"vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
|
||||||
"vec4 gl_PositionPerViewNV[];"
|
"vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
stageBuiltins[EShLangGeometry].append(
|
stageBuiltins[EShLangGeometry].append(
|
||||||
@ -3384,11 +3384,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||||||
#ifdef NV_EXTENSIONS
|
#ifdef NV_EXTENSIONS
|
||||||
if (version >= 450)
|
if (version >= 450)
|
||||||
stageBuiltins[EShLangGeometry].append(
|
stageBuiltins[EShLangGeometry].append(
|
||||||
"out int gl_ViewportMask[];"
|
"out int gl_ViewportMask[];" // GL_NV_viewport_array2
|
||||||
"out int gl_SecondaryViewportMaskNV[];"
|
"out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering
|
||||||
"out vec4 gl_SecondaryPositionNV;"
|
"out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
|
||||||
"out vec4 gl_PositionPerViewNV[];"
|
"out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
|
||||||
"out int gl_ViewportMaskPerViewNV[];"
|
"out int gl_ViewportMaskPerViewNV[];" // GL_NVX_multiview_per_view_attributes
|
||||||
);
|
);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -3458,11 +3458,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||||||
#ifdef NV_EXTENSIONS
|
#ifdef NV_EXTENSIONS
|
||||||
"int gl_ViewportIndex;"
|
"int gl_ViewportIndex;"
|
||||||
"int gl_Layer;"
|
"int gl_Layer;"
|
||||||
"int gl_ViewportMask[];"
|
"int gl_ViewportMask[];" // GL_NV_viewport_array2
|
||||||
"vec4 gl_SecondaryPositionNV;"
|
"vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
|
||||||
"int gl_SecondaryViewportMaskNV[];"
|
"int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering
|
||||||
"vec4 gl_PositionPerViewNV[];"
|
"vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
|
||||||
"int gl_ViewportMaskPerViewNV[];"
|
"int gl_ViewportMaskPerViewNV[];" // GL_NVX_multiview_per_view_attributes
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
stageBuiltins[EShLangTessControl].append(
|
stageBuiltins[EShLangTessControl].append(
|
||||||
@ -3547,11 +3547,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||||||
stageBuiltins[EShLangTessEvaluation].append(
|
stageBuiltins[EShLangTessEvaluation].append(
|
||||||
"out int gl_ViewportIndex;"
|
"out int gl_ViewportIndex;"
|
||||||
"out int gl_Layer;"
|
"out int gl_Layer;"
|
||||||
"out int gl_ViewportMask[];"
|
"out int gl_ViewportMask[];" // GL_NV_viewport_array2
|
||||||
"out vec4 gl_SecondaryPositionNV;"
|
"out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
|
||||||
"out int gl_SecondaryViewportMaskNV[];"
|
"out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering
|
||||||
"out vec4 gl_PositionPerViewNV[];"
|
"out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
|
||||||
"out int gl_ViewportMaskPerViewNV[];"
|
"out int gl_ViewportMaskPerViewNV[];" // GL_NVX_multiview_per_view_attributes
|
||||||
);
|
);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -4505,8 +4505,8 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
|
|||||||
"highp vec4 gl_Position;"
|
"highp vec4 gl_Position;"
|
||||||
"highp float gl_PointSize;"
|
"highp float gl_PointSize;"
|
||||||
#ifdef NV_EXTENSIONS
|
#ifdef NV_EXTENSIONS
|
||||||
"highp vec4 gl_SecondaryPositionNV;"
|
"highp vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
|
||||||
"highp vec4 gl_PositionPerViewNV[];"
|
"highp vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
|
||||||
#endif
|
#endif
|
||||||
"} gl_in[gl_MaxPatchVertices];"
|
"} gl_in[gl_MaxPatchVertices];"
|
||||||
"\n");
|
"\n");
|
||||||
@ -4695,8 +4695,8 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
|
|||||||
s.append(
|
s.append(
|
||||||
"float gl_CullDistance[];"
|
"float gl_CullDistance[];"
|
||||||
#ifdef NV_EXTENSIONS
|
#ifdef NV_EXTENSIONS
|
||||||
"vec4 gl_SecondaryPositionNV;"
|
"vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
|
||||||
"vec4 gl_PositionPerViewNV[];"
|
"vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
s.append(
|
s.append(
|
||||||
|
@ -210,6 +210,8 @@ INSTANTIATE_TEST_CASE_P(
|
|||||||
"spv.430.frag",
|
"spv.430.frag",
|
||||||
"spv.430.vert",
|
"spv.430.vert",
|
||||||
"spv.450.tesc",
|
"spv.450.tesc",
|
||||||
|
"spv.450.geom",
|
||||||
|
"spv.450.noRedecl.tesc",
|
||||||
"spv.accessChain.frag",
|
"spv.accessChain.frag",
|
||||||
"spv.aggOps.frag",
|
"spv.aggOps.frag",
|
||||||
"spv.always-discard.frag",
|
"spv.always-discard.frag",
|
||||||
|
Loading…
Reference in New Issue
Block a user