From eb97b35e460252b2bfa33474f0ef195388ff57fa Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 6 Sep 2023 10:08:35 -0400 Subject: [PATCH] glsl: check for xfb setting xfb info this otherwise hits the default buffer=0 path, which is invalid for drivers which don't support xfb fixes #9763 cc: mesa-stable Reviewed-by: Timothy Arceri Part-of: (cherry picked from commit 06af083b9301216f0d764e1753406e8fb66b3277) --- .pick_status.json | 2 +- src/compiler/glsl/glsl_parser.yy | 3 ++- src/compiler/glsl/glsl_parser_extras.cpp | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 5d178f23bc5..3e60c926269 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2353,7 +2353,7 @@ "description": "glsl: check for xfb setting xfb info", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/compiler/glsl/glsl_parser.yy b/src/compiler/glsl/glsl_parser.yy index 574895b005a..1371ecdc90c 100644 --- a/src/compiler/glsl/glsl_parser.yy +++ b/src/compiler/glsl/glsl_parser.yy @@ -34,6 +34,7 @@ #include "compiler/glsl_types.h" #include "util/u_string.h" #include "util/format/u_format.h" +#include "main/consts_exts.h" #ifdef _MSC_VER #pragma warning( disable : 4065 ) // switch statement contains 'default' but no 'case' labels @@ -2211,7 +2212,7 @@ storage_qualifier: $$.stream = state->out_qualifier->stream; } - if (state->has_enhanced_layouts()) { + if (state->has_enhanced_layouts() && state->exts->ARB_transform_feedback3) { $$.flags.q.xfb_buffer = 1; $$.flags.q.explicit_xfb_buffer = 0; $$.xfb_buffer = state->out_qualifier->xfb_buffer; diff --git a/src/compiler/glsl/glsl_parser_extras.cpp b/src/compiler/glsl/glsl_parser_extras.cpp index 37b5554dffe..fe8946269c3 100644 --- a/src/compiler/glsl/glsl_parser_extras.cpp +++ b/src/compiler/glsl/glsl_parser_extras.cpp @@ -1112,7 +1112,8 @@ _mesa_ast_process_interface_block(YYLTYPE *locp, block->default_layout.stream = state->out_qualifier->stream; } - if (state->has_enhanced_layouts() && block->default_layout.flags.q.out) { + if (state->has_enhanced_layouts() && block->default_layout.flags.q.out && + state->exts->ARB_transform_feedback3) { /* Assign global layout's xfb_buffer value. */ block->default_layout.flags.q.xfb_buffer = 1; block->default_layout.flags.q.explicit_xfb_buffer = 0;