driconf: add a way to override GLX extensions
authorMartin Peres <martin.peres@mupuf.org>
Thu, 15 Oct 2020 15:29:45 +0000 (18:29 +0300)
committerMartin Peres <martin.peres@mupuf.org>
Thu, 22 Oct 2020 04:47:28 +0000 (07:47 +0300)
Support for DRI1 is not implemented, but who still uses that?

v2:
 - Add the option to the list of new features
 - Drop overriding the Xorg-exposed extensions

Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Martin Peres <martin.peres@mupuf.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7212>

docs/relnotes/new_features.txt
src/gallium/auxiliary/pipe-loader/driinfo_gallium.h
src/glx/dri2_glx.c
src/glx/dri3_glx.c
src/mesa/drivers/dri/common/dri_util.c
src/util/driconf.h

index 0e2d6f6..f4e80eb 100644 (file)
@@ -11,3 +11,4 @@ VK_KHR_copy_commands2 on RADV
 VK_KHR_shader_terminate_invocation on RADV
 NGG GS support in ACO
 VK_KHR_shader_terminate_invocation on ANV
+driconf: add glx_extension_override
index 7147bd4..6691b2f 100644 (file)
@@ -37,6 +37,7 @@ DRI_CONF_SECTION_DEBUG
    DRI_CONF_FORCE_GL_NAMES_REUSE(false)
    DRI_CONF_FORCE_GL_VENDOR()
    DRI_CONF_OVERRIDE_VRAM_SIZE()
+   DRI_CONF_GLX_EXTENSION_OVERRIDE()
 DRI_CONF_SECTION_END
 
 DRI_CONF_SECTION_MISCELLANEOUS
index 6c2e8d2..e449f34 100644 (file)
@@ -1362,6 +1362,11 @@ dri2CreateScreen(int screen, struct glx_display * priv)
                                  &disable) || !disable)
       __glXEnableDirectExtension(&psc->base, "GLX_SGI_video_sync");
 
+   if (psc->config->base.version > 1 &&
+          psc->config->configQuerys(psc->driScreen, "glx_extension_override",
+                                    &tmp) == 0)
+      __glXParseExtensionOverride(&psc->base, tmp);
+
    /* DRI2 supports SubBuffer through DRI2CopyRegion, so it's always
     * available.*/
    psp->copySubBuffer = dri2CopySubBuffer;
index 32d4fb3..9793387 100644 (file)
@@ -998,6 +998,11 @@ dri3_create_screen(int screen, struct glx_display * priv)
                                  &disable) || !disable)
       __glXEnableDirectExtension(&psc->base, "GLX_EXT_buffer_age");
 
+   if (psc->config->base.version > 1 &&
+          psc->config->configQuerys(psc->driScreen, "glx_extension_override",
+                                    &tmp) == 0)
+      __glXParseExtensionOverride(&psc->base, tmp);
+
    free(driverName);
 
    tmp = getenv("LIBGL_SHOW_FPS");
index 430a585..1bea3d1 100644 (file)
 #include "main/macros.h"
 
 driOptionDescription __dri2ConfigOptions[] = {
+      DRI_CONF_SECTION_DEBUG
+         DRI_CONF_GLX_EXTENSION_OVERRIDE()
+      DRI_CONF_SECTION_END
+
       DRI_CONF_SECTION_PERFORMANCE
          DRI_CONF_VBLANK_MODE(DRI_CONF_VBLANK_DEF_INTERVAL_1)
       DRI_CONF_SECTION_END
index e2a5821..326d58c 100644 (file)
 #define DRI_CONF_FORCE_GL_NAMES_REUSE(def) \
    DRI_CONF_OPT_B(force_gl_names_reuse, def, "Force GL names reuse")
 
+#define DRI_CONF_GLX_EXTENSION_OVERRIDE(def) \
+   DRI_CONF_OPT_S(glx_extension_override, def, \
+                  "Allow enabling/disabling a list of GLX extensions")
+
+
+
 /**
  * \brief Image quality-related options
  */