From 06af083b9301216f0d764e1753406e8fb66b3277 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: --- src/compiler/glsl/glsl_parser.yy | 3 ++- src/compiler/glsl/glsl_parser_extras.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) 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 c5435f9f296..082fd1802f3 100644 --- a/src/compiler/glsl/glsl_parser_extras.cpp +++ b/src/compiler/glsl/glsl_parser_extras.cpp @@ -1200,7 +1200,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;