Mesa (main): zink: store the spirv_shader to the zink_shader struct for generated tcs
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Feb 11 01:41:37 UTC 2022
Module: Mesa
Branch: main
Commit: a9d2b86c2c80b94281b6f0cfc1f73adde8e0e294
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a9d2b86c2c80b94281b6f0cfc1f73adde8e0e294
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Wed Feb 9 15:45:49 2022 -0500
zink: store the spirv_shader to the zink_shader struct for generated tcs
Reviewed-by: Dave Airlie <airlied at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14976>
---
src/gallium/drivers/zink/zink_compiler.c | 6 +++++-
src/gallium/drivers/zink/zink_compiler.h | 1 +
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c
index f09625e0e4f..1a35bab24a1 100644
--- a/src/gallium/drivers/zink/zink_compiler.c
+++ b/src/gallium/drivers/zink/zink_compiler.c
@@ -1162,7 +1162,10 @@ zink_shader_compile(struct zink_screen *screen, struct zink_shader *zs, nir_shad
ralloc_free(nir);
/* TODO: determine if there's any reason to cache spirv output? */
- ralloc_free(spirv);
+ if (zs->is_generated)
+ zs->spirv = spirv;
+ else
+ ralloc_free(spirv);
return mod;
}
@@ -1961,6 +1964,7 @@ zink_shader_free(struct zink_context *ctx, struct zink_shader *shader)
}
_mesa_set_destroy(shader->programs, NULL);
ralloc_free(shader->nir);
+ ralloc_free(shader->spirv);
FREE(shader);
}
diff --git a/src/gallium/drivers/zink/zink_compiler.h b/src/gallium/drivers/zink/zink_compiler.h
index cb4d349e9c8..71dd2cb7926 100644
--- a/src/gallium/drivers/zink/zink_compiler.h
+++ b/src/gallium/drivers/zink/zink_compiler.h
@@ -88,6 +88,7 @@ struct zink_shader {
uint32_t ubos_used; // bitfield of which ubo indices are used
uint32_t ssbos_used; // bitfield of which ssbo indices are used
bool bindless;
+ struct spirv_shader *spirv;
simple_mtx_t lock;
struct set *programs;
More information about the mesa-commit
mailing list