mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 20:00:11 +01:00
glsl: Fix inout qualifier handling in GLSL 4.40.
inout variables have q.in and q.out set. We were trying to set xfb_buffer = 1 for shader output variables (and inadvertantly setting it on inout parameters, too). But input_layout_mask doesn't have xfb_buffer set, so it was seen as in invalid input qualifier. This meant that all 'inout' parameters were broken. Caught by running a WebGL conformance test in Chromium: https://www.khronos.org/registry/webgl/sdk/tests/deqp/data/gles3/shaders/qualification_order.html?webglVersion=2 Fixes Piglit's tests/spec/glsl-4.40/compiler/inout-parameter-qualifier. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
This commit is contained in:
parent
17f1c49b9a
commit
dffa371665
1 changed files with 2 additions and 1 deletions
|
|
@ -242,7 +242,8 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc,
|
|||
if (q.flags.q.xfb_buffer) {
|
||||
this->flags.q.xfb_buffer = 1;
|
||||
this->xfb_buffer = q.xfb_buffer;
|
||||
} else if (!this->flags.q.xfb_buffer && this->flags.q.out) {
|
||||
} else if (!this->flags.q.xfb_buffer && this->flags.q.out &&
|
||||
!this->flags.q.in) {
|
||||
/* Assign global xfb_buffer value */
|
||||
this->flags.q.xfb_buffer = 1;
|
||||
this->xfb_buffer = state->out_qualifier->xfb_buffer;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue