diff options
author | Mike Blumenkrantz <michael.blumenkrantz@gmail.com> | 2022-06-07 14:26:02 -0400 |
---|---|---|
committer | Dylan Baker <dylan.c.baker@intel.com> | 2022-06-15 16:12:59 -0700 |
commit | d8fa501ca42e234a96c5ad6578726b78df1b8b0c (patch) | |
tree | a81d18d182ccb108c737db0cc2f0e8d765a54c89 | |
parent | 96574ecba3b50f10c6ea58c2c00d76e0bb9066b0 (diff) |
zink: unset generated tcs pointer from tes on deletion
otherwise this will free the generated tcs multiple times if the tes
is used by multiple programs
cc: mesa-stable
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17010>
(cherry picked from commit cf34d3fe05004c66145a6faf39c8883b71861c8c)
-rw-r--r-- | .pick_status.json | 2 | ||||
-rw-r--r-- | src/gallium/drivers/zink/zink_compiler.c | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/.pick_status.json b/.pick_status.json index 436455d1c47..4645e029c68 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1192,7 +1192,7 @@ "description": "zink: unset generated tcs pointer from tes on deletion", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 167150efa95..87ca8933df7 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -2239,9 +2239,11 @@ zink_shader_free(struct zink_context *ctx, struct zink_shader *shader) prog->base.removed = true; } prog->shaders[pstage] = NULL; - if (shader->nir->info.stage == MESA_SHADER_TESS_EVAL && shader->generated) + if (shader->nir->info.stage == MESA_SHADER_TESS_EVAL && shader->generated) { /* automatically destroy generated tcs shaders when tes is destroyed */ zink_shader_free(ctx, shader->generated); + shader->generated = NULL; + } zink_gfx_program_reference(ctx, &prog, NULL); } } |