mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-07 21:40:20 +01:00
glsl/parser: Handle the early_fragment_tests input layout qualifier.
v2: Only allow the early_fragment_tests qualifier in fragment shaders. Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
parent
b0b26faa25
commit
fcd869ed56
3 changed files with 20 additions and 1 deletions
|
|
@ -1231,6 +1231,15 @@ layout_qualifier_id:
|
|||
}
|
||||
}
|
||||
|
||||
/* Layout qualifiers for ARB_shader_image_load_store. */
|
||||
if (state->ARB_shader_image_load_store_enable ||
|
||||
state->is_version(420, 0)) {
|
||||
if (!$$.flags.i &&
|
||||
match_layout_qualifier($1, "early_fragment_tests", state) == 0) {
|
||||
$$.flags.q.early_fragment_tests = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$$.flags.i) {
|
||||
_mesa_glsl_error(& @1, state, "unrecognized layout identifier "
|
||||
"`%s'", $1);
|
||||
|
|
@ -2388,6 +2397,13 @@ layout_defaults:
|
|||
}
|
||||
}
|
||||
break;
|
||||
case MESA_SHADER_FRAGMENT:
|
||||
if ($1.flags.q.early_fragment_tests) {
|
||||
state->early_fragment_tests = true;
|
||||
} else {
|
||||
_mesa_glsl_error(& @1, state, "invalid input layout qualifier");
|
||||
}
|
||||
break;
|
||||
case MESA_SHADER_COMPUTE: {
|
||||
if ($1.flags.q.local_size == 0) {
|
||||
_mesa_glsl_error(& @1, state,
|
||||
|
|
@ -2409,7 +2425,7 @@ layout_defaults:
|
|||
default:
|
||||
_mesa_glsl_error(& @1, state,
|
||||
"input layout qualifiers only valid in "
|
||||
"geometry and compute shaders");
|
||||
"geometry, fragment and compute shaders");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -197,6 +197,7 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx,
|
|||
this->gs_input_prim_type = GL_POINTS;
|
||||
this->gs_input_size = 0;
|
||||
this->out_qualifier = new(this) ast_type_qualifier();
|
||||
this->early_fragment_tests = false;
|
||||
memset(this->atomic_counter_offsets, 0,
|
||||
sizeof(this->atomic_counter_offsets));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -395,6 +395,8 @@ struct _mesa_glsl_parse_state {
|
|||
*/
|
||||
unsigned gs_input_size;
|
||||
|
||||
bool early_fragment_tests;
|
||||
|
||||
/** Atomic counter offsets by binding */
|
||||
unsigned atomic_counter_offsets[MAX_COMBINED_ATOMIC_BUFFERS];
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue