diff --git a/src/compiler/glsl/ast_type.cpp b/src/compiler/glsl/ast_type.cpp index 02ae08ec377..c7f827ab1fa 100644 --- a/src/compiler/glsl/ast_type.cpp +++ b/src/compiler/glsl/ast_type.cpp @@ -398,7 +398,9 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc, } } - if (state->has_enhanced_layouts()) { + /* Not apply to mesh shader */ + if (state->stage <= MESA_SHADER_GEOMETRY && + state->has_enhanced_layouts()) { if (!this->flags.q.explicit_xfb_buffer) { if (q.flags.q.xfb_buffer) { this->flags.q.xfb_buffer = 1; diff --git a/src/compiler/glsl/glsl_parser_extras.cpp b/src/compiler/glsl/glsl_parser_extras.cpp index 5e7cc39787d..37b2da95b01 100644 --- a/src/compiler/glsl/glsl_parser_extras.cpp +++ b/src/compiler/glsl/glsl_parser_extras.cpp @@ -1241,7 +1241,10 @@ _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 && + /* Not apply to mesh shader. */ + if (state->stage <= MESA_SHADER_GEOMETRY && + 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;