From 842c91300fd041cf35398d05d2995f16d76870ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Thu, 19 Dec 2024 02:17:13 -0500 Subject: [PATCH] mesa: enable GL name reuse by default for all drivers except virgl v2: detect qemu, crossvm Reviewed-by: Timothy Arceri (v1) Part-of: --- src/mesa/main/shared.c | 18 +++++++++++++++++- src/util/00-mesa-defaults.conf | 9 --------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/mesa/main/shared.c b/src/mesa/main/shared.c index 16eb5dbe083..546b0d629d0 100644 --- a/src/mesa/main/shared.c +++ b/src/mesa/main/shared.c @@ -42,10 +42,12 @@ #include "syncobj.h" #include "texobj.h" #include "texturebindless.h" +#include "pipe/p_screen.h" #include "util/hash_table.h" #include "util/set.h" #include "util/u_memory.h" +#include "util/u_process.h" static void free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared); @@ -71,7 +73,21 @@ _mesa_alloc_shared_state(struct gl_context *ctx, return NULL; simple_mtx_init(&shared->Mutex, mtx_plain); - shared->ReuseGLNames = options->reuse_gl_names == 1; + + const char *driver_name = ctx->screen->get_name(ctx->screen); + bool is_virgl_guest = !strcmp(driver_name, "virgl"); + const char *process_name = util_get_process_name(); + bool is_virgl_host = strstr(process_name, "qemu-system") == process_name || + strstr(process_name, "crosvm") || + strstr(process_name, "virgl_test_server"); + + /* Enable GL name reuse for all drivers by default except virgl, which + * is hopelessly broken. + * + * To disable it, set reuse_gl_names=0 in the environment. + */ + if (!is_virgl_guest && !is_virgl_host) + shared->ReuseGLNames = options->reuse_gl_names != 0; _mesa_InitHashTable(&shared->DisplayList, shared->ReuseGLNames); _mesa_InitHashTable(&shared->TexObjects, shared->ReuseGLNames); diff --git a/src/util/00-mesa-defaults.conf b/src/util/00-mesa-defaults.conf index 4950d8dbee7..6bcb720848a 100644 --- a/src/util/00-mesa-defaults.conf +++ b/src/util/00-mesa-defaults.conf @@ -383,7 +383,6 @@ TODO: document the other workarounds.