mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 19:40:10 +01:00
glsl: Add support for AMD_conservative_depth to parser
When AMD_conservative_depth is enabled: * Let 'layout' be a token. * Extend the production rule of layout_qualifier_id to process the tokens: depth_any depth_greater depth_less depth_unchanged
This commit is contained in:
parent
565a22090c
commit
fb5db0570c
3 changed files with 34 additions and 8 deletions
|
|
@ -252,6 +252,7 @@ void return VOID_TOK;
|
|||
|
||||
layout {
|
||||
if ((yyextra->language_version >= 140)
|
||||
|| yyextra->AMD_conservative_depth_enable
|
||||
|| yyextra->ARB_explicit_attrib_location_enable
|
||||
|| (yyextra->ARB_fragment_coord_conventions_enable)){
|
||||
return LAYOUT_TOK;
|
||||
|
|
|
|||
|
|
@ -1018,7 +1018,8 @@ layout_qualifier_id:
|
|||
|
||||
memset(& $$, 0, sizeof($$));
|
||||
|
||||
if (state->ARB_fragment_coord_conventions_enable) {
|
||||
/* Layout qualifiers for ARB_fragment_coord_conventions. */
|
||||
if (!got_one && state->ARB_fragment_coord_conventions_enable) {
|
||||
if (strcmp($1, "origin_upper_left") == 0) {
|
||||
got_one = true;
|
||||
$$.flags.q.origin_upper_left = 1;
|
||||
|
|
@ -1026,19 +1027,41 @@ layout_qualifier_id:
|
|||
got_one = true;
|
||||
$$.flags.q.pixel_center_integer = 1;
|
||||
}
|
||||
|
||||
if (got_one && state->ARB_fragment_coord_conventions_warn) {
|
||||
_mesa_glsl_warning(& @1, state,
|
||||
"GL_ARB_fragment_coord_conventions layout "
|
||||
"identifier `%s' used\n", $1);
|
||||
}
|
||||
}
|
||||
|
||||
/* Layout qualifiers for AMD_conservative_depth. */
|
||||
if (!got_one && state->AMD_conservative_depth_enable) {
|
||||
if (strcmp($1, "depth_any") == 0) {
|
||||
got_one = true;
|
||||
$$.flags.q.depth_any = 1;
|
||||
} else if (strcmp($1, "depth_greater") == 0) {
|
||||
got_one = true;
|
||||
$$.flags.q.depth_greater = 1;
|
||||
} else if (strcmp($1, "depth_less") == 0) {
|
||||
got_one = true;
|
||||
$$.flags.q.depth_less = 1;
|
||||
} else if (strcmp($1, "depth_unchanged") == 0) {
|
||||
got_one = true;
|
||||
$$.flags.q.depth_unchanged = 1;
|
||||
}
|
||||
|
||||
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 the identifier didn't match any known layout identifiers,
|
||||
* emit an error.
|
||||
*/
|
||||
if (!got_one) {
|
||||
_mesa_glsl_error(& @1, state, "unrecognized layout identifier "
|
||||
"`%s'\n", $1);
|
||||
YYERROR;
|
||||
} else if (state->ARB_fragment_coord_conventions_warn) {
|
||||
_mesa_glsl_warning(& @1, state,
|
||||
"GL_ARB_fragment_coord_conventions layout "
|
||||
"identifier `%s' used\n", $1);
|
||||
}
|
||||
}
|
||||
| IDENTIFIER '=' INTCONSTANT
|
||||
|
|
|
|||
|
|
@ -144,6 +144,8 @@ struct _mesa_glsl_parse_state {
|
|||
unsigned EXT_texture_array_warn:1;
|
||||
unsigned ARB_shader_stencil_export_enable:1;
|
||||
unsigned ARB_shader_stencil_export_warn:1;
|
||||
unsigned AMD_conservative_depth_enable:1;
|
||||
unsigned AMD_conservative_depth_warn:1;
|
||||
/*@}*/
|
||||
|
||||
/** Extensions supported by the OpenGL implementation. */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue