diff options
author | Erik Faye-Lund <erik.faye-lund@collabora.com> | 2022-11-02 10:21:43 +0100 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2022-11-02 15:01:11 +0000 |
commit | 090a111c5dcd2c6764e7b990a55f3bddca771499 (patch) | |
tree | 522d6421a62acc740b82db31b047b63f98c53355 | |
parent | 7d7e94066da4b7f04af98d9c314d080af53c79a8 (diff) |
zink: do not read is_generated unless in tcs shader
It's undefined behavior in C to read a union member if another member
has been written to more recently. Let's be more careful here!
Fixes: a9d2b86c2c8 ("zink: store the spirv_shader to the zink_shader struct for generated tcs")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19457>
-rw-r--r-- | src/gallium/drivers/zink/zink_compiler.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 837a1d0c164..9d1abd3be18 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -2348,7 +2348,7 @@ 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? */ - if (zs->is_generated) + if (zs->nir->info.stage == MESA_SHADER_TESS_CTRL && zs->is_generated) zs->spirv = spirv; else ralloc_free(spirv); |