Sfoglia il codice sorgente

glsl: relax stage restrictions on layout defaults for outputs

The new xfb_buffer and xfb_stride global qualifiers are allowed in
geom, tess and vertex stages.

Reviewed-by: Dave Airlie <airlied@redhat.com>
tags/12.0-branchpoint
Timothy Arceri 9 anni fa
parent
commit
7b407fecec

+ 3
- 2
src/compiler/glsl/ast_type.cpp Vedi File

@@ -381,9 +381,10 @@ ast_type_qualifier::merge_out_qualifier(YYLTYPE *loc,
if (create_node) {
node = new(mem_ctx) ast_tcs_output_layout(*loc);
}
} else {
} else if (!(state->stage == MESA_SHADER_TESS_EVAL ||
state->stage == MESA_SHADER_VERTEX)) {
_mesa_glsl_error(loc, state, "out layout qualifiers only valid in "
"tessellation control or geometry shaders");
"geometry, tessellation and vertex shaders");
}

/* Allow future assigments of global out's */

+ 4
- 5
src/compiler/glsl/glsl_parser_extras.cpp Vedi File

@@ -1595,13 +1595,12 @@ set_shader_inout_layout(struct gl_shader *shader,
struct _mesa_glsl_parse_state *state)
{
/* Should have been prevented by the parser. */
if (shader->Stage == MESA_SHADER_TESS_CTRL) {
if (shader->Stage == MESA_SHADER_TESS_CTRL ||
shader->Stage == MESA_SHADER_VERTEX) {
assert(!state->in_qualifier->flags.i);
} else if (shader->Stage == MESA_SHADER_TESS_EVAL) {
assert(!state->out_qualifier->flags.i);
} else if (shader->Stage != MESA_SHADER_GEOMETRY) {
} else if (shader->Stage != MESA_SHADER_GEOMETRY &&
shader->Stage != MESA_SHADER_TESS_EVAL) {
assert(!state->in_qualifier->flags.i);
assert(!state->out_qualifier->flags.i);
}

if (shader->Stage != MESA_SHADER_COMPUTE) {

Loading…
Annulla
Salva