mirror of
https://github.com/X11Libre/xserver.git
synced 2026-10-04 22:36:10 +00:00
glcore: build from mesa, dlopen from xorg
* The GLcore interface is disposable * GLcore is installed in DRI_DRIVER_INSTALL_DIR which is overloaded for GLX_PROVIDER_INSTALL_DIR
This commit is contained in:
parent
efb723e166
commit
567d389d47
2 changed files with 84 additions and 36 deletions
|
|
@ -72,37 +72,6 @@ static XF86ModuleVersionInfo VersRec =
|
|||
|
||||
_X_EXPORT XF86ModuleData glxModuleData = { &VersRec, glxSetup, NULL };
|
||||
|
||||
/* We do a little proxy dance here, so we can avoid loading GLcore
|
||||
* unless we really need to.*/
|
||||
|
||||
static pointer glxModule;
|
||||
|
||||
static __GLXscreen *
|
||||
__glXMesaProxyScreenProbe(ScreenPtr pScreen)
|
||||
{
|
||||
pointer GLcore;
|
||||
static __GLXprovider *provider;
|
||||
|
||||
if (provider == NULL) {
|
||||
GLcore = LoadSubModule(glxModule, "GLcore", NULL, NULL, NULL, NULL,
|
||||
NULL, NULL);
|
||||
if (GLcore == NULL)
|
||||
return NULL;
|
||||
|
||||
provider = LoaderSymbol("__glXMesaProvider");
|
||||
if (provider == NULL)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return provider->screenProbe(pScreen);
|
||||
}
|
||||
|
||||
static __GLXprovider __glXMesaProxyProvider = {
|
||||
__glXMesaProxyScreenProbe,
|
||||
"MESA-PROXY",
|
||||
NULL
|
||||
};
|
||||
|
||||
static pointer
|
||||
glxSetup(pointer module, pointer opts, int *errmaj, int *errmin)
|
||||
{
|
||||
|
|
@ -116,8 +85,10 @@ glxSetup(pointer module, pointer opts, int *errmaj, int *errmin)
|
|||
|
||||
setupDone = TRUE;
|
||||
|
||||
glxModule = module;
|
||||
GlxPushProvider(&__glXMesaProxyProvider);
|
||||
provider = LoaderSymbol("__glXMesaProvider");
|
||||
if (provider == NULL)
|
||||
return NULL;
|
||||
GlxPushProvider(provider);
|
||||
|
||||
xf86Msg(xf86Info.aiglxFrom, "AIGLX %s\n",
|
||||
xf86Info.aiglx ? "enabled" : "disabled");
|
||||
|
|
|
|||
Loading…
Reference in a new issue