GLSL: Make gl_Layer and gl_ViewportIndex always be outside blocks.
There was some ambiguity/contradiction in this behavior, and Khronos decided glslang should always have these outside blocks, rather than have stage/vendor/target variations.
This commit is contained in:
parent
aab3bcffea
commit
ba6a3c290e
7 changed files with 104 additions and 115 deletions
|
|
@ -3462,7 +3462,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
"in int gl_DrawIDARB;"
|
||||
);
|
||||
}
|
||||
if (version >= 450) {
|
||||
if (version >= 410) {
|
||||
stageBuiltins[EShLangVertex].append(
|
||||
"out int gl_ViewportIndex;"
|
||||
"out int gl_Layer;"
|
||||
|
|
@ -3595,6 +3595,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
"out int gl_PrimitiveID;"
|
||||
"out int gl_Layer;");
|
||||
|
||||
if (version >= 150)
|
||||
stageBuiltins[EShLangGeometry].append(
|
||||
"out int gl_ViewportIndex;"
|
||||
);
|
||||
|
||||
if (profile == ECompatibilityProfile && version < 400)
|
||||
stageBuiltins[EShLangGeometry].append(
|
||||
"out vec4 gl_ClipVertex;"
|
||||
|
|
@ -3604,11 +3609,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
stageBuiltins[EShLangGeometry].append(
|
||||
"in int gl_InvocationID;"
|
||||
);
|
||||
// GL_ARB_viewport_array
|
||||
if (version >= 150)
|
||||
stageBuiltins[EShLangGeometry].append(
|
||||
"out int gl_ViewportIndex;"
|
||||
);
|
||||
|
||||
#ifdef NV_EXTENSIONS
|
||||
if (version >= 450)
|
||||
|
|
@ -3685,8 +3685,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
stageBuiltins[EShLangTessControl].append(
|
||||
"float gl_CullDistance[];"
|
||||
#ifdef NV_EXTENSIONS
|
||||
"int gl_ViewportIndex;"
|
||||
"int gl_Layer;"
|
||||
"int gl_ViewportMask[];" // GL_NV_viewport_array2
|
||||
"vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
|
||||
"int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering
|
||||
|
|
@ -3700,6 +3698,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
"patch out float gl_TessLevelOuter[4];"
|
||||
"patch out float gl_TessLevelInner[2];"
|
||||
"\n");
|
||||
|
||||
if (version >= 410)
|
||||
stageBuiltins[EShLangTessControl].append(
|
||||
"out int gl_ViewportIndex;"
|
||||
"out int gl_Layer;"
|
||||
"\n");
|
||||
|
||||
} else {
|
||||
// Note: "in gl_PerVertex {...} gl_in[gl_MaxPatchVertices];" is declared in initialize() below,
|
||||
// as it depends on the resource sizing of gl_MaxPatchVertices.
|
||||
|
|
@ -3771,11 +3776,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
"};"
|
||||
"\n");
|
||||
|
||||
if (version >= 450)
|
||||
if (version >= 410)
|
||||
stageBuiltins[EShLangTessEvaluation].append(
|
||||
"out int gl_ViewportIndex;"
|
||||
"out int gl_Layer;"
|
||||
);
|
||||
"\n");
|
||||
|
||||
#ifdef NV_EXTENSIONS
|
||||
if (version >= 450)
|
||||
|
|
@ -5518,7 +5523,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
|||
symbolTable.setVariableExtensions("gl_ViewportIndex", Num_viewportEXTs, viewportEXTs);
|
||||
}
|
||||
#else
|
||||
if (language == EShLangVertex || language == EShLangTessEvaluation) {
|
||||
if (language != EShLangGeometry && version >= 410) {
|
||||
symbolTable.setVariableExtensions("gl_Layer", 1, &E_GL_ARB_shader_viewport_layer_array);
|
||||
symbolTable.setVariableExtensions("gl_ViewportIndex", 1, &E_GL_ARB_shader_viewport_layer_array);
|
||||
}
|
||||
|
|
@ -5541,8 +5546,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
|||
BuiltInVariable("gl_in", "gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable);
|
||||
BuiltInVariable("gl_in", "gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable);
|
||||
}
|
||||
BuiltInVariable("gl_out", "gl_Layer", EbvLayer, symbolTable);
|
||||
BuiltInVariable("gl_out", "gl_ViewportIndex", EbvViewportIndex, symbolTable);
|
||||
BuiltInVariable("gl_out", "gl_ViewportMask", EbvViewportMaskNV, symbolTable);
|
||||
BuiltInVariable("gl_out", "gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable);
|
||||
BuiltInVariable("gl_out", "gl_SecondaryViewportMaskNV", EbvSecondaryViewportMaskNV, symbolTable);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue