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;