From a59f776b74b0d8fdb735a978f686706aa9ffced3 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 20 Apr 2023 13:21:28 -0400 Subject: [PATCH] zink: don't pin flush queue threads if no threads exist Fixes: 270f9c0b063 ("zink: add ZINK_DEBUG=flushsync") Part-of: (cherry picked from commit e4c4fca16e92b3da4fc8ee4e40d06df5f085a804) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_context.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 9df06633f0c..1eeb20ee6c8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -139,7 +139,7 @@ "description": "zink: don't pin flush queue threads if no threads exist", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "270f9c0b0636bc0c7954f32e2b5920ec76f839e5" }, diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index fd75875f906..09d6126736c 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -271,12 +271,14 @@ zink_set_context_param(struct pipe_context *pctx, enum pipe_context_param param, unsigned value) { struct zink_context *ctx = zink_context(pctx); + struct zink_screen *screen = zink_screen(ctx->base.screen); switch (param) { case PIPE_CONTEXT_PARAM_PIN_THREADS_TO_L3_CACHE: - util_set_thread_affinity(zink_screen(ctx->base.screen)->flush_queue.threads[0], - util_get_cpu_caps()->L3_affinity_mask[value], - NULL, util_get_cpu_caps()->num_cpu_mask_bits); + if (screen->threaded_submit) + util_set_thread_affinity(screen->flush_queue.threads[0], + util_get_cpu_caps()->L3_affinity_mask[value], + NULL, util_get_cpu_caps()->num_cpu_mask_bits); break; default: break;