[Mesa-dev] [PATCH 12/22] glsl: Refuse to parse uniform block declarations when UBOs aren't available.

Eric Anholt eric at anholt.net
Tue Jul 31 15:01:41 PDT 2012


Fixes piglit
GL_ARB_uniform_buffer_object/compiler/extension-disabled-block.frag
---
 src/glsl/glsl_parser.yy |   20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy
index 04c64f0..ee6a672 100644
--- a/src/glsl/glsl_parser.yy
+++ b/src/glsl/glsl_parser.yy
@@ -1929,6 +1929,16 @@ uniform_block:
 	   void *ctx = state;
 	   $$ = new(ctx) ast_uniform_block(*state->default_uniform_qualifier,
 					   $2, $4);
+
+	   if (!state->ARB_uniform_buffer_object_enable) {
+	      _mesa_glsl_error(& @1, state,
+			       "#version 140 / GL_ARB_uniform_buffer_object "
+			       "required for defining uniform blocks\n");
+	   } else if (state->ARB_uniform_buffer_object_warn) {
+	      _mesa_glsl_warning(& @1, state,
+				 "#version 140 / GL_ARB_uniform_buffer_object "
+				 "required for defining uniform blocks\n");
+	   }
 	}
 	| layout_qualifier UNIFORM NEW_IDENTIFIER '{' member_list '}' ';'
 	{
@@ -1939,6 +1949,16 @@ uniform_block:
 	      YYERROR;
 	   }
 	   $$ = new(ctx) ast_uniform_block(qual, $3, $5);
+
+	   if (!state->ARB_uniform_buffer_object_enable) {
+	      _mesa_glsl_error(& @1, state,
+			       "#version 140 / GL_ARB_uniform_buffer_object "
+			       "required for defining uniform blocks\n");
+	   } else if (state->ARB_uniform_buffer_object_warn) {
+	      _mesa_glsl_warning(& @1, state,
+				 "#version 140 / GL_ARB_uniform_buffer_object "
+				 "required for defining uniform blocks\n");
+	   }
 	}
 	;
 
-- 
1.7.10.4



More information about the mesa-dev mailing list