glx: stop loading driver extensions

this is pointless now

libGL still needs to be dlopen()ed on some systems tho

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30524>
This commit is contained in:
Mike Blumenkrantz 2024-07-30 15:32:29 -04:00 committed by Marge Bot
parent 0b1c0f4193
commit a43eefa718
6 changed files with 19 additions and 62 deletions

View file

@ -846,7 +846,6 @@ struct glx_screen *
dri2CreateScreen(int screen, struct glx_display * priv, bool driver_name_is_inferred)
{
const __DRIconfig **driver_configs;
const __DRIextension **extensions;
struct dri2_screen *psc;
__GLXDRIscreen *psp;
struct glx_config *configs = NULL, *visuals = NULL;
@ -898,10 +897,6 @@ dri2CreateScreen(int screen, struct glx_display * priv, bool driver_name_is_infe
}
psc->base.driverName = driverName;
extensions = driOpenDriver(driverName, driver_name_is_inferred);
if (extensions == NULL)
goto handle_error;
psc->driScreen = driCreateNewScreen3(screen, psc->fd, loader_extensions, DRI_SCREEN_DRI3,
&driver_configs, driver_name_is_inferred, psc);

View file

@ -689,7 +689,6 @@ dri3_create_screen(int screen, struct glx_display * priv, bool driver_name_is_in
{
xcb_connection_t *c = XGetXCBConnection(priv->dpy);
const __DRIconfig **driver_configs;
const __DRIextension **extensions;
struct dri3_screen *psc;
__GLXDRIscreen *psp;
struct glx_config *configs = NULL, *visuals = NULL;
@ -736,10 +735,6 @@ dri3_create_screen(int screen, struct glx_display * priv, bool driver_name_is_in
goto handle_error;
}
extensions = driOpenDriver(driverName, driver_name_is_inferred);
if (extensions == NULL)
goto handle_error;
if (psc->fd_render_gpu != psc->fd_display_gpu) {
driverNameDisplayGPU = loader_get_driver_for_fd(psc->fd_display_gpu);
if (driverNameDisplayGPU) {

View file

@ -46,51 +46,6 @@
#include "dri_util.h"
#include "pipe-loader/pipe_loader.h"
#ifndef RTLD_NOW
#define RTLD_NOW 0
#endif
#ifndef RTLD_GLOBAL
#define RTLD_GLOBAL 0
#endif
#ifndef GL_LIB_NAME
#define GL_LIB_NAME "libGL.so.1"
#endif
const __DRIextension **
dri_loader_get_extensions(const char *driver_name);
/**
* Try to \c dlopen the named driver.
*
* \param driverName - a name like "i965", "radeon", "nouveau", etc.
* \param out_driver_handle - Address to return the resulting dlopen() handle.
*
* \returns
* The __DRIextension entrypoint table for the driver, or \c NULL if driver
* file not found.
*/
_X_HIDDEN const __DRIextension **
driOpenDriver(const char *driverName, bool driver_name_is_inferred)
{
void *glhandle;
/* Attempt to make sure libGL symbols will be visible to the driver */
glhandle = dlopen(GL_LIB_NAME, RTLD_NOW | RTLD_GLOBAL);
const __DRIextension **extensions = dri_loader_get_extensions(driverName);
if (!extensions && driver_name_is_inferred) {
glx_message(_LOADER_WARNING,
"MESA-LOADER: glx: failed to open %s: driver not built!\n", driverName);
}
if (glhandle)
dlclose(glhandle);
return extensions;
}
#define __ATTRIB(attrib, field) \
{ attrib, offsetof(struct glx_config, field) }

View file

@ -62,9 +62,6 @@ driFetchDrawable(struct glx_context *gc, GLXDrawable glxDrawable);
extern void
driReleaseDrawables(struct glx_context *gc);
extern const __DRIextension **driOpenDriver(const char *driverName,
bool driver_name_is_inferred);
struct dri_ctx_attribs {
unsigned major_ver;
unsigned minor_ver;

View file

@ -833,7 +833,6 @@ driswCreateScreen(int screen, struct glx_display *priv, enum glx_driver glx_driv
{
__GLXDRIscreen *psp;
const __DRIconfig **driver_configs;
const __DRIextension **extensions;
struct drisw_screen *psc;
struct glx_config *configs = NULL, *visuals = NULL;
const __DRIextension **loader_extensions_local;
@ -853,9 +852,6 @@ driswCreateScreen(int screen, struct glx_display *priv, enum glx_driver glx_driv
return NULL;
}
extensions = driOpenDriver(driver, driver_name_is_inferred);
if (extensions == NULL)
goto handle_error;
psc->base.driverName = strdup(driver);
if (glx_driver)

View file

@ -41,6 +41,9 @@
#include <xcb/xcb.h>
#include <xcb/glx.h>
#include "dri_util.h"
#if defined(GLX_DIRECT_RENDERING) && (!defined(GLX_USE_APPLEGL) || defined(GLX_USE_APPLE))
#include <dlfcn.h>
#endif
#define __GLX_MIN_CONFIG_PROPS 18
#define __GLX_EXT_CONFIG_PROPS 32
@ -1017,6 +1020,22 @@ __glXInitialize(Display * dpy)
#ifdef GLX_USE_WINDOWSGL
if (glx_direct && glx_accel)
glx_driver |= GLX_DRIVER_WINDOWS;
#else
#ifndef RTLD_NOW
#define RTLD_NOW 0
#endif
#ifndef RTLD_GLOBAL
#define RTLD_GLOBAL 0
#endif
#ifndef GL_LIB_NAME
#define GL_LIB_NAME "libGL.so.1"
#endif
void *glhandle = dlopen(GL_LIB_NAME, RTLD_NOW | RTLD_GLOBAL);
if (glhandle)
dlclose(glhandle);
#endif
#endif /* GLX_DIRECT_RENDERING && !GLX_USE_APPLEGL */