Mesa (main): zink: always pass shader info to ntv
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Jan 20 16:08:02 UTC 2022
Module: Mesa
Branch: main
Commit: 60d0a0a8ce3effd060fa3cf8058a6330bc0daa39
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=60d0a0a8ce3effd060fa3cf8058a6330bc0daa39
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Fri Jan 14 10:58:29 2022 -0500
zink: always pass shader info to ntv
Acked-by: Dave Airlie <airlied at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14381>
---
src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 4 ++--
src/gallium/drivers/zink/zink_compiler.c | 4 ++--
src/gallium/drivers/zink/zink_compiler.h | 1 +
3 files changed, 5 insertions(+), 4 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 7f5df8cc165..82da39359af 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
@@ -3781,7 +3781,7 @@ nir_to_spirv(struct nir_shader *s, const struct zink_shader_info *sinfo, uint32_
}
- if (sinfo)
+ if (sinfo->last_vertex)
emit_so_info(&ctx, sinfo, max_output + 1);
/* we have to reverse iterate to match what's done in zink_compiler.c */
@@ -3941,7 +3941,7 @@ nir_to_spirv(struct nir_shader *s, const struct zink_shader_info *sinfo, uint32_
emit_cf_list(&ctx, &entry->body);
/* vertex/tess shader emits copied xfb outputs at the end of the shader */
- if (sinfo && (ctx.stage == MESA_SHADER_VERTEX || ctx.stage == MESA_SHADER_TESS_EVAL))
+ if (sinfo->last_vertex && (ctx.stage == MESA_SHADER_VERTEX || ctx.stage == MESA_SHADER_TESS_EVAL))
emit_so_outputs(&ctx, sinfo);
spirv_builder_return(&ctx.builder); // doesn't belong here, but whatevz
diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c
index 906c8eee507..2f28c450888 100644
--- a/src/gallium/drivers/zink/zink_compiler.c
+++ b/src/gallium/drivers/zink/zink_compiler.c
@@ -1086,7 +1086,7 @@ VkShaderModule
zink_shader_compile(struct zink_screen *screen, struct zink_shader *zs, nir_shader *base_nir, const struct zink_shader_key *key)
{
VkShaderModule mod = VK_NULL_HANDLE;
- void *sinfo = NULL;
+ struct zink_shader_info *sinfo = &zs->sinfo;
nir_shader *nir = nir_shader_clone(NULL, base_nir);
bool need_optimize = false;
bool inlined_uniforms = false;
@@ -1129,7 +1129,7 @@ zink_shader_compile(struct zink_screen *screen, struct zink_shader *zs, nir_shad
case MESA_SHADER_GEOMETRY:
if (zink_vs_key_base(key)->last_vertex_stage) {
if (zs->sinfo.have_xfb)
- sinfo = &zs->sinfo;
+ sinfo->last_vertex = true;
if (!zink_vs_key_base(key)->clip_halfz) {
NIR_PASS_V(nir, nir_lower_clip_halfz);
diff --git a/src/gallium/drivers/zink/zink_compiler.h b/src/gallium/drivers/zink/zink_compiler.h
index 9f859e13ffe..62a831ead78 100644
--- a/src/gallium/drivers/zink/zink_compiler.h
+++ b/src/gallium/drivers/zink/zink_compiler.h
@@ -54,6 +54,7 @@ struct tgsi_token;
struct zink_shader_info {
struct pipe_stream_output_info so_info;
unsigned so_info_slots[PIPE_MAX_SO_OUTPUTS];
+ bool last_vertex;
bool have_xfb;
};
More information about the mesa-commit
mailing list