mesa/gallium: add dric option to allow overriding GL vendor string
authorTimothy Arceri <tarceri@itsqueeze.com>
Fri, 2 Aug 2019 05:13:59 +0000 (15:13 +1000)
committerTimothy Arceri <tarceri@itsqueeze.com>
Wed, 7 Aug 2019 00:12:49 +0000 (10:12 +1000)
Will be used in the following patch.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93551

src/gallium/auxiliary/pipe-loader/driinfo_gallium.h
src/gallium/include/state_tracker/st_api.h
src/gallium/state_trackers/dri/dri_screen.c
src/mesa/main/getstring.c
src/mesa/main/mtypes.h
src/mesa/state_tracker/st_extensions.c
src/util/xmlpool/t_options.h

index 9db0dc01117329d2d3acd8cad8e9e3210b2c7283..8ccb6a0b454155a4157cf8b3cdb97ffb011ba17d 100644 (file)
@@ -31,6 +31,7 @@ DRI_CONF_SECTION_DEBUG
    DRI_CONF_GLSL_CORRECT_DERIVATIVES_AFTER_DISCARD("false")
    DRI_CONF_ALLOW_GLSL_LAYOUT_QUALIFIER_ON_FUNCTION_PARAMETERS("false")
    DRI_CONF_FORCE_COMPAT_PROFILE("false")
+   DRI_CONF_FORCE_GL_VENDOR()
 DRI_CONF_SECTION_END
 
 DRI_CONF_SECTION_MISCELLANEOUS
index b2b81b6ebc45ea0fc6aa26f2d2e876bb312130a4..516408c77c7a48c4eeac41e4cea6fe9eea832d20 100644 (file)
@@ -230,6 +230,7 @@ struct st_config_options
    bool force_glsl_abs_sqrt;
    bool allow_glsl_cross_stage_interpolation_mismatch;
    bool allow_glsl_layout_qualifier_on_function_parameters;
+   char *force_gl_vendor;
    unsigned char config_options_sha1[20];
 };
 
index 5a555eacd09790142136f0ed84894fadd56a73bf..67e956e1d2138a6bf2185f09cfdb619b99131e67 100644 (file)
@@ -89,6 +89,11 @@ dri_fill_st_options(struct dri_screen *screen)
    options->allow_glsl_layout_qualifier_on_function_parameters =
       driQueryOptionb(optionCache, "allow_glsl_layout_qualifier_on_function_parameters");
 
+   char *vendor_str = driQueryOptionstr(optionCache, "force_gl_vendor");
+   /* not an empty string */
+   if (*vendor_str)
+      options->force_gl_vendor = strdup(vendor_str);
+
    driComputeOptionsSha1(optionCache, options->config_options_sha1);
 }
 
@@ -481,6 +486,8 @@ dri_destroy_screen(__DRIscreen * sPriv)
 
    pipe_loader_release(&screen->dev, 1);
 
+   free(screen->options.force_gl_vendor);
+
    /* The caller in dri_util preserves the fd ownership */
    free(screen);
    sPriv->driverPrivate = NULL;
index bd02b9db0b0b0a29bead37fa6fef8f5fd2ee4caf..4db08f15e28c3be8112f26c78e84f16a88bee4e8 100644 (file)
@@ -124,6 +124,10 @@ _mesa_GetString( GLenum name )
 
    ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, NULL);
 
+   if (ctx->Const.VendorOverride && name == GL_VENDOR) {
+      return (const GLubyte *) ctx->Const.VendorOverride;
+   }
+
    /* this is a required driver function */
    assert(ctx->Driver.GetString);
    {
index 30fe50affc0d80014a8e992788e25bea50eda838..569e793ca2740ad36658129219585ae755bd7d79 100644 (file)
@@ -4135,6 +4135,8 @@ struct gl_constants
 
    /** GL_ARB_spirv_extensions */
    struct spirv_supported_extensions *SpirVExtensions;
+
+   char *VendorOverride;
 };
 
 
index abc816ed0d49e4da800faddc81ac381613873230..b31869e059e19eb754f2c430b993851fd4f85535 100644 (file)
@@ -1153,6 +1153,8 @@ void st_init_extensions(struct pipe_screen *screen,
 
    consts->GLSLZeroInit = options->glsl_zero_init;
 
+   consts->VendorOverride = options->force_gl_vendor;
+
    consts->UniformBooleanTrue = consts->NativeIntegers ? ~0U : fui(1.0f);
 
    /* Below are the cases which cannot be moved into tables easily. */
index bfa9cc72bcbc88c593953b71afc231332fc35d6c..86a72e9b39f8e852c58acbfdcb1804f35a08e411 100644 (file)
@@ -140,6 +140,11 @@ DRI_CONF_OPT_BEGIN_B(allow_glsl_layout_qualifier_on_function_parameters, def) \
         DRI_CONF_DESC(en,gettext("Allow layout qualifiers on function parameters.")) \
 DRI_CONF_OPT_END
 
+#define DRI_CONF_FORCE_GL_VENDOR(def) \
+DRI_CONF_OPT_BEGIN(force_gl_vendor, string, def) \
+        DRI_CONF_DESC(en,gettext("Allow GPU vendor to be overridden.")) \
+DRI_CONF_OPT_END
+
 #define DRI_CONF_FORCE_COMPAT_PROFILE(def) \
 DRI_CONF_OPT_BEGIN_B(force_compat_profile, def) \
         DRI_CONF_DESC(en,gettext("Force an OpenGL compatibility context")) \