[Mesa-dev] [PATCH 1/6] glsl: finish up ARB_conservative_depth

Marek Olšák maraeo at gmail.com
Fri Nov 18 11:27:47 PST 2011


---
 src/glsl/ast_to_hir.cpp |    7 +++++--
 src/glsl/glsl_lexer.ll  |    1 +
 src/glsl/glsl_parser.yy |    9 ++++++++-
 src/glsl/ir_clone.cpp   |    1 +
 4 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
index ac090c3..51fec19 100644
--- a/src/glsl/ast_to_hir.cpp
+++ b/src/glsl/ast_to_hir.cpp
@@ -2090,6 +2090,7 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
     * The following extension do not allow the deprecated keywords:
     *
     *    GL_AMD_conservative_depth
+    *    GL_ARB_conservative_depth
     *    GL_ARB_gpu_shader5
     *    GL_ARB_separate_shader_objects
     *    GL_ARB_tesselation_shader
@@ -2122,7 +2123,8 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
       + qual->flags.q.depth_less
       + qual->flags.q.depth_unchanged;
    if (depth_layout_count > 0
-       && !state->AMD_conservative_depth_enable) {
+       && !state->AMD_conservative_depth_enable
+       && !state->ARB_conservative_depth_enable) {
        _mesa_glsl_error(loc, state,
                         "extension GL_AMD_conservative_depth must be enabled "
 			"to use depth layout qualifiers");
@@ -2237,7 +2239,8 @@ get_variable_being_redeclared(ir_variable *var, ast_declaration *decl,
       earlier->interpolation = var->interpolation;
 
       /* Layout qualifiers for gl_FragDepth. */
-   } else if (state->AMD_conservative_depth_enable
+   } else if ((state->AMD_conservative_depth_enable ||
+               state->ARB_conservative_depth_enable)
 	      && strcmp(var->name, "gl_FragDepth") == 0
 	      && earlier->type == var->type
 	      && earlier->mode == var->mode) {
diff --git a/src/glsl/glsl_lexer.ll b/src/glsl/glsl_lexer.ll
index 49f3bc8..c7cfedd 100644
--- a/src/glsl/glsl_lexer.ll
+++ b/src/glsl/glsl_lexer.ll
@@ -310,6 +310,7 @@ void		return VOID_TOK;
 layout		{
 		  if ((yyextra->language_version >= 140)
 		      || yyextra->AMD_conservative_depth_enable
+		      || yyextra->ARB_conservative_depth_enable
 		      || yyextra->ARB_explicit_attrib_location_enable
 		      || yyextra->ARB_fragment_coord_conventions_enable) {
 		      return LAYOUT_TOK;
diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy
index 8363904..71ab039 100644
--- a/src/glsl/glsl_parser.yy
+++ b/src/glsl/glsl_parser.yy
@@ -1124,7 +1124,9 @@ layout_qualifier_id:
 	   }
 
 	   /* Layout qualifiers for AMD/ARB_conservative_depth. */
-	   if (!got_one && state->AMD_conservative_depth_enable) {
+	   if (!got_one &&
+	       (state->AMD_conservative_depth_enable ||
+	        state->ARB_conservative_depth_enable)) {
 	      if (strcmp($1, "depth_any") == 0) {
 	         got_one = true;
 	         $$.flags.q.depth_any = 1;
@@ -1141,6 +1143,11 @@ layout_qualifier_id:
 	
 	      if (got_one && state->AMD_conservative_depth_warn) {
 	         _mesa_glsl_warning(& @1, state,
+	                            "GL_AMD_conservative_depth "
+	                            "layout qualifier `%s' is used\n", $1);
+	      }
+	      if (got_one && state->ARB_conservative_depth_warn) {
+	         _mesa_glsl_warning(& @1, state,
 	                            "GL_ARB_conservative_depth "
 	                            "layout qualifier `%s' is used\n", $1);
 	      }
diff --git a/src/glsl/ir_clone.cpp b/src/glsl/ir_clone.cpp
index e8ac9fb..c63615c 100644
--- a/src/glsl/ir_clone.cpp
+++ b/src/glsl/ir_clone.cpp
@@ -51,6 +51,7 @@ ir_variable::clone(void *mem_ctx, struct hash_table *ht) const
    var->pixel_center_integer = this->pixel_center_integer;
    var->explicit_location = this->explicit_location;
    var->has_initializer = this->has_initializer;
+   var->depth_layout = this->depth_layout;
 
    var->num_state_slots = this->num_state_slots;
    if (this->state_slots) {
-- 
1.7.5.4



More information about the mesa-dev mailing list