summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>2022-06-22 17:32:42 -0400
committerDylan Baker <dylan.c.baker@intel.com>2022-08-11 10:30:37 -0700
commit03ea182f4fd5d9a5c69ea722eb37dfa8d8224747 (patch)
treeccc65ba2cb8df1af4ea1cb83eb4e6466fa542163
parent1e95cc9fbe27a4aeda4a4bdb6c57bf96f5884be7 (diff)
downloadmesa-03ea182f4fd5d9a5c69ea722eb37dfa8d8224747.tar.gz
zink: init cache_put program fence on program creation
re-initializing here might overwrite an existing cache_put job cc: mesa-stable Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17225> (cherry picked from commit 3d58642984cb4df1fff6f4915f8d8fbc5d038d41)
-rw-r--r--.pick_status.json2
-rw-r--r--src/gallium/drivers/zink/zink_program.c2
-rw-r--r--src/gallium/drivers/zink/zink_screen.c1
3 files changed, 3 insertions, 2 deletions
diff --git a/.pick_status.json b/.pick_status.json
index 311b6f3be4b..1c13c90cb80 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -2857,7 +2857,7 @@
"description": "zink: init cache_put program fence on program creation",
"nominated": true,
"nomination_type": 0,
- "resolution": 0,
+ "resolution": 1,
"main_sha": null,
"because_sha": null
},
diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c
index b75c4696418..e1a52aa18b3 100644
--- a/src/gallium/drivers/zink/zink_program.c
+++ b/src/gallium/drivers/zink/zink_program.c
@@ -425,6 +425,7 @@ zink_create_gfx_program(struct zink_context *ctx,
goto fail;
pipe_reference_init(&prog->base.reference, 1);
+ util_queue_fence_init(&prog->base.cache_fence);
for (int i = 0; i < ZINK_SHADER_COUNT; ++i) {
list_inithead(&prog->shader_cache[i][0][0]);
@@ -536,6 +537,7 @@ zink_create_compute_program(struct zink_context *ctx, struct zink_shader *shader
goto fail;
pipe_reference_init(&comp->base.reference, 1);
+ util_queue_fence_init(&comp->base.cache_fence);
comp->base.is_compute = true;
comp->curr = comp->module = CALLOC_STRUCT(zink_shader_module);
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
index fb18980c9c4..12b555ef442 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -207,7 +207,6 @@ cache_put_job(void *data, void *gdata, int thread_index)
void
zink_screen_update_pipeline_cache(struct zink_screen *screen, struct zink_program *pg)
{
- util_queue_fence_init(&pg->cache_fence);
if (!screen->disk_cache)
return;