From c87802f658ca1a00fff22e79f93ff349ff9c07c7 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Wed, 21 Apr 2021 12:23:52 +0200 Subject: [PATCH] zink: do not check for varying output for fragment shaders This will make us emit these caps needlessly, possibly on implementations not supporting the enabling features. Reviewed-By: Mike Blumenkrantz Part-of: --- src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 6eff7518225..a55adf15d8d 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 @@ -3602,7 +3602,7 @@ nir_to_spirv(struct nir_shader *s, const struct zink_so_info *so_info, bool spir ctx.info = &s->info; - if (s->info.stage != MESA_SHADER_GEOMETRY) { + if (s->info.stage < MESA_SHADER_GEOMETRY) { if (s->info.outputs_written & BITFIELD64_BIT(VARYING_SLOT_LAYER) || s->info.inputs_read & BITFIELD64_BIT(VARYING_SLOT_LAYER)) { spirv_builder_emit_extension(&ctx.builder, "SPV_EXT_shader_viewport_index_layer"); @@ -3614,7 +3614,8 @@ nir_to_spirv(struct nir_shader *s, const struct zink_so_info *so_info, bool spir if (s->info.num_ssbos) spirv_builder_emit_extension(&ctx.builder, "SPV_KHR_storage_buffer_storage_class"); - if (s->info.outputs_written & BITFIELD64_BIT(VARYING_SLOT_VIEWPORT)) { + if (s->info.stage < MESA_SHADER_FRAGMENT && + s->info.outputs_written & BITFIELD64_BIT(VARYING_SLOT_VIEWPORT)) { if (s->info.stage < MESA_SHADER_GEOMETRY) spirv_builder_emit_cap(&ctx.builder, SpvCapabilityShaderViewportIndex); else