From e624fba3b418aea719d64396087f60f379272471 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Thu, 15 Apr 2021 10:17:55 +0200 Subject: [PATCH] zink: fix stencil-export cap emission This cap should only ever be emitted for fragment-shaders, but we accidentally emit it for all shaders. Let's tighten the check to avoid a validator warning when emitting non-fragment shaders without support for VK_EXT_shader_stencil_export. Fixes: 8724d4fb361 ("zink: check shader stencil output") Reviewed-By: Mike Blumenkrantz Part-of: (cherry picked from commit d09442461f66955cd1ddc7367a0060db03d0fd0c) --- .pick_status.json | 2 +- src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 0dd01a879fe..c5a14ab2171 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -958,7 +958,7 @@ "description": "zink: fix stencil-export cap emission", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "8724d4fb361795be68eeced4947758e30feffc1b" }, diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index 38c6d15f245..a162eaa704e 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -3531,7 +3531,8 @@ nir_to_spirv(struct nir_shader *s, const struct zink_so_info *so_info) spirv_builder_emit_mem_model(&ctx.builder, SpvAddressingModelLogical, SpvMemoryModelGLSL450); - if (s->info.outputs_written & BITFIELD64_BIT(FRAG_RESULT_STENCIL)) { + if (s->info.stage == MESA_SHADER_FRAGMENT && + s->info.outputs_written & BITFIELD64_BIT(FRAG_RESULT_STENCIL)) { spirv_builder_emit_extension(&ctx.builder, "SPV_EXT_shader_stencil_export"); spirv_builder_emit_cap(&ctx.builder, SpvCapabilityStencilExportEXT); }