[Mesa-dev] [PATCH 4/8] glsl: simplified error checking for duplicated layout-qualifiers
Andres Gomez
agomez at igalia.com
Wed Oct 26 15:30:47 UTC 2016
Tthe GLSL parser has been simplified to check for the needed
GL_ARB_shading_language_420pack extension just when merging the
qualifiers in the proper cases.
Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com>
Signed-off-by: Andres Gomez <agomez at igalia.com>
---
src/compiler/glsl/ast_type.cpp | 6 ++++++
src/compiler/glsl/glsl_parser.yy | 24 ------------------------
2 files changed, 6 insertions(+), 24 deletions(-)
diff --git a/src/compiler/glsl/ast_type.cpp b/src/compiler/glsl/ast_type.cpp
index c4ca30d..48ee27e 100644
--- a/src/compiler/glsl/ast_type.cpp
+++ b/src/compiler/glsl/ast_type.cpp
@@ -201,6 +201,12 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc,
return false;
}
+ if (is_multiple_layouts_merge && !state->has_420pack_or_es31()) {
+ _mesa_glsl_error(loc, state,
+ "duplicate layout(...) qualifiers");
+ return false;
+ }
+
if (q.flags.q.prim_type) {
if (this->flags.q.prim_type && this->prim_type != q.prim_type) {
_mesa_glsl_error(loc, state,
diff --git a/src/compiler/glsl/glsl_parser.yy b/src/compiler/glsl/glsl_parser.yy
index 1c93cb4..cef159a 100644
--- a/src/compiler/glsl/glsl_parser.yy
+++ b/src/compiler/glsl/glsl_parser.yy
@@ -1883,9 +1883,6 @@ type_qualifier:
* precise qualifiers since these are useful in ARB_separate_shader_objects.
* There is no clear spec guidance on this either.
*/
- if (!state->has_420pack_or_es31() && $2.has_layout())
- _mesa_glsl_error(&@1, state, "duplicate layout(...) qualifiers");
-
$$ = $1;
$$.merge_qualifier(& @1, state, $2, false, $2.has_layout());
}
@@ -2709,11 +2706,6 @@ interface_block:
{
ast_interface_block *block = (ast_interface_block *) $2;
- if (!state->has_420pack_or_es31() && block->layout.has_layout()) {
- _mesa_glsl_error(&@1, state, "duplicate layout(...) qualifiers");
- YYERROR;
- }
-
if (!$1.merge_qualifier(& @1, state, block->layout, false,
block->layout.has_layout())) {
YYERROR;
@@ -2851,10 +2843,6 @@ layout_uniform_defaults:
layout_qualifier layout_uniform_defaults
{
$$ = $1;
- if (!state->has_420pack_or_es31()) {
- _mesa_glsl_error(&@1, state, "duplicate layout(...) qualifiers");
- YYERROR;
- }
if (!$$.merge_qualifier(& @1, state, $2, false, true)) {
YYERROR;
}
@@ -2866,10 +2854,6 @@ layout_buffer_defaults:
layout_qualifier layout_buffer_defaults
{
$$ = $1;
- if (!state->has_420pack_or_es31()) {
- _mesa_glsl_error(&@1, state, "duplicate layout(...) qualifiers");
- YYERROR;
- }
if (!$$.merge_qualifier(& @1, state, $2, false, true)) {
YYERROR;
}
@@ -2881,10 +2865,6 @@ layout_in_defaults:
layout_qualifier layout_in_defaults
{
$$ = $1;
- if (!state->has_420pack_or_es31()) {
- _mesa_glsl_error(&@1, state, "duplicate layout(...) qualifiers");
- YYERROR;
- }
if (!$$.merge_qualifier(& @1, state, $2, false, true)) {
YYERROR;
}
@@ -2896,10 +2876,6 @@ layout_out_defaults:
layout_qualifier layout_out_defaults
{
$$ = $1;
- if (!state->has_420pack_or_es31()) {
- _mesa_glsl_error(&@1, state, "duplicate layout(...) qualifiers");
- YYERROR;
- }
if (!$$.merge_qualifier(& @1, state, $2, false, true)) {
YYERROR;
}
--
2.9.3
More information about the mesa-dev
mailing list