From 545e73d72c2a9d97aa5c020e7f16c07414a8a576 Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Tue, 4 Jan 2022 11:34:01 -0800 Subject: [PATCH] mesa/st: Assert that NIR drivers that support tess use tess levels as inputs MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reviewed-by: Mike Blumenkrantz Reviewed-by: Marek Olšák Part-of: --- src/mesa/state_tracker/st_context.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index 9028897..c927822 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -721,6 +721,15 @@ st_create_context_priv(struct gl_context *ctx, struct pipe_context *pipe, PIPE_SHADER_CAP_PREFERRED_IR); ctx->Const.UseNIRGLSLLinker = preferred_ir == PIPE_SHADER_IR_NIR; + /* NIR drivers that support tess shaders and compact arrays need to use + * GLSLTessLevelsAsInputs / PIPE_CAP_GLSL_TESS_LEVELS_AS_INPUTS. The NIR + * linker doesn't support linking these as compat arrays of sysvals. + */ + assert(ctx->Const.GLSLTessLevelsAsInputs || + !ctx->Const.UseNIRGLSLLinker || + !screen->get_param(screen, PIPE_CAP_NIR_COMPACT_ARRAYS) || + !ctx->Extensions.ARB_tessellation_shader); + if (ctx->Const.GLSLVersion < 400) { for (i = 0; i < MESA_SHADER_STAGES; i++) ctx->Const.ShaderCompilerOptions[i].EmitNoIndirectSampler = true; -- 2.7.4