Mesa (main): driconf: Add force_gl_renderer override

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Aug 3 00:25:18 UTC 2021


Module: Mesa
Branch: main
Commit: 7094cc78a442eacabd68b22e9ca8468c1437075e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7094cc78a442eacabd68b22e9ca8468c1437075e

Author: Rob Clark <robdclark at chromium.org>
Date:   Wed Jul 28 18:41:01 2021 -0700

driconf: Add force_gl_renderer override

Allow driconf to also override GL_RENDERER string.

Signed-off-by: Rob Clark <robdclark at chromium.org>
Reviewed-by: Emil Velikov <emil.l.velikov at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12135>

---

 src/gallium/auxiliary/pipe-loader/driinfo_gallium.h | 1 +
 src/gallium/frontends/dri/dri_screen.c              | 5 +++++
 src/gallium/include/frontend/api.h                  | 1 +
 src/mesa/main/getstring.c                           | 4 ++++
 src/mesa/main/mtypes.h                              | 1 +
 src/mesa/state_tracker/st_extensions.c              | 1 +
 src/util/driconf.h                                  | 3 +++
 7 files changed, 16 insertions(+)

diff --git a/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h b/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h
index 95bd3a7c057..2ec793e125a 100644
--- a/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h
+++ b/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h
@@ -37,6 +37,7 @@ DRI_CONF_SECTION_DEBUG
    DRI_CONF_TRANSCODE_ETC(false)
    DRI_CONF_TRANSCODE_ASTC(false)
    DRI_CONF_FORCE_GL_VENDOR()
+   DRI_CONF_FORCE_GL_RENDERER()
    DRI_CONF_OVERRIDE_VRAM_SIZE()
    DRI_CONF_GLX_EXTENSION_OVERRIDE()
    DRI_CONF_INDIRECT_GL_EXTENSION_OVERRIDE()
diff --git a/src/gallium/frontends/dri/dri_screen.c b/src/gallium/frontends/dri/dri_screen.c
index 4810dd4d787..b9e381543ab 100644
--- a/src/gallium/frontends/dri/dri_screen.c
+++ b/src/gallium/frontends/dri/dri_screen.c
@@ -117,6 +117,10 @@ dri_init_options(struct dri_screen *screen)
    if (*vendor_str)
       options->force_gl_vendor = strdup(vendor_str);
 
+   char *renderer_str = driQueryOptionstr(optionCache, "force_gl_renderer");
+   if (*renderer_str)
+      options->force_gl_renderer = strdup(renderer_str);
+
    driComputeOptionsSha1(optionCache, options->config_options_sha1);
 }
 
@@ -548,6 +552,7 @@ dri_destroy_screen(__DRIscreen * sPriv)
    pipe_loader_release(&screen->dev, 1);
 
    free(screen->options.force_gl_vendor);
+   free(screen->options.force_gl_renderer);
 
    /* The caller in dri_util preserves the fd ownership */
    free(screen);
diff --git a/src/gallium/include/frontend/api.h b/src/gallium/include/frontend/api.h
index d0e13d40f4d..16f0ff18189 100644
--- a/src/gallium/include/frontend/api.h
+++ b/src/gallium/include/frontend/api.h
@@ -240,6 +240,7 @@ struct st_config_options
    bool transcode_etc;
    bool transcode_astc;
    char *force_gl_vendor;
+   char *force_gl_renderer;
    unsigned char config_options_sha1[20];
 };
 
diff --git a/src/mesa/main/getstring.c b/src/mesa/main/getstring.c
index 7ad147cbca9..272482391a6 100644
--- a/src/mesa/main/getstring.c
+++ b/src/mesa/main/getstring.c
@@ -128,6 +128,10 @@ _mesa_GetString( GLenum name )
       return (const GLubyte *) ctx->Const.VendorOverride;
    }
 
+   if (ctx->Const.RendererOverride && name == GL_RENDERER) {
+      return (const GLubyte *) ctx->Const.RendererOverride;
+   }
+
    /* this is a required driver function */
    assert(ctx->Driver.GetString);
    {
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index fd3e32af8bc..1646482e5a1 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -4301,6 +4301,7 @@ struct gl_constants
    struct spirv_supported_extensions *SpirVExtensions;
 
    char *VendorOverride;
+   char *RendererOverride;
 
    /** Buffer size used to upload vertices from glBegin/glEnd. */
    unsigned glBeginEndBufferSize;
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index fa6ecfeb86c..c7d5a4bc960 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -1283,6 +1283,7 @@ void st_init_extensions(struct pipe_screen *screen,
    consts->ForceIntegerTexNearest = options->force_integer_tex_nearest;
 
    consts->VendorOverride = options->force_gl_vendor;
+   consts->RendererOverride = options->force_gl_renderer;
 
    consts->UniformBooleanTrue = consts->NativeIntegers ? ~0U : fui(1.0f);
 
diff --git a/src/util/driconf.h b/src/util/driconf.h
index 3a90832faff..0b6434acf85 100644
--- a/src/util/driconf.h
+++ b/src/util/driconf.h
@@ -223,6 +223,9 @@
 #define DRI_CONF_FORCE_GL_VENDOR() \
    DRI_CONF_OPT_S_NODEF(force_gl_vendor, "Override GPU vendor string.")
 
+#define DRI_CONF_FORCE_GL_RENDERER() \
+   DRI_CONF_OPT_S_NODEF(force_gl_renderer, "Override GPU renderer string.")
+
 #define DRI_CONF_FORCE_COMPAT_PROFILE(def) \
    DRI_CONF_OPT_B(force_compat_profile, def, \
                   "Force an OpenGL compatibility context")



More information about the mesa-commit mailing list