glsl: finish up ARB_conservative_depth (v2)

v2: updated an error message

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
Marek Olšák
2011-11-19 16:41:08 +01:00
parent bbcb648bc2
commit 6b43d6fdda
3 changed files with 16 additions and 4 deletions

View File

@@ -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,9 +2123,11 @@ 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 "
"extension GL_AMD_conservative_depth or "
"GL_ARB_conservative_depth must be enabled "
"to use depth layout qualifiers");
} else if (depth_layout_count > 0
&& strcmp(var->name, "gl_FragDepth") != 0) {
@@ -2237,7 +2240,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) {

View File

@@ -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;

View File

@@ -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;
@@ -1140,6 +1142,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);