mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-24 09:30:29 +01:00
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:
parent
0b1c0f4193
commit
a43eefa718
6 changed files with 19 additions and 62 deletions
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) }
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue