zink: don't pin flush queue threads if no threads exist
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 20 Apr 2023 17:21:28 +0000 (13:21 -0400)
committerMarge Bot <emma+marge@anholt.net>
Mon, 24 Apr 2023 14:10:45 +0000 (14:10 +0000)
Fixes: 270f9c0b063 ("zink: add ZINK_DEBUG=flushsync")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22611>

src/gallium/drivers/zink/zink_context.c

index df65906..6f6b7f7 100644 (file)
@@ -272,12 +272,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;