summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Faye-Lund <erik.faye-lund@collabora.com>2021-04-21 12:23:52 +0200
committerErik Faye-Lund <erik.faye-lund@collabora.com>2021-05-05 10:51:02 +0200
commitc87802f658ca1a00fff22e79f93ff349ff9c07c7 (patch)
treeb5ea80b952fc766d154372c9a000004a852ac0f0
parent567699f0487e514ae647870160292ee3977835ff (diff)
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 <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10371>
-rw-r--r--src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c5
1 files 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