summaryrefslogtreecommitdiff
path: root/src/glx/x11
diff options
context:
space:
mode:
Diffstat (limited to 'src/glx/x11')
-rw-r--r--src/glx/x11/dri_glx.c2
-rw-r--r--src/glx/x11/glxclient.h2
-rw-r--r--src/glx/x11/glxcmds.c33
-rw-r--r--src/glx/x11/glxext.c37
4 files changed, 44 insertions, 30 deletions
diff --git a/src/glx/x11/dri_glx.c b/src/glx/x11/dri_glx.c
index 8cc0b62b02..91ca875ff1 100644
--- a/src/glx/x11/dri_glx.c
+++ b/src/glx/x11/dri_glx.c
@@ -166,7 +166,7 @@ ExtractDir(int index, const char *paths, int dirLen, char *dir)
* \todo
* Create a macro or something so that this is automatically updated.
*/
-static const char createNewScreenName[] = "__driCreateNewScreen_20050722";
+static const char createNewScreenName[] = "__driCreateNewScreen_20050725";
/**
diff --git a/src/glx/x11/glxclient.h b/src/glx/x11/glxclient.h
index 6852fd066a..166673847c 100644
--- a/src/glx/x11/glxclient.h
+++ b/src/glx/x11/glxclient.h
@@ -137,6 +137,8 @@ extern const char *glXGetScreenDriver (Display *dpy, int scrNum);
extern const char *glXGetDriverConfig (const char *driverName);
+extern Bool __glXWindowExists(Display *dpy, GLXDrawable draw);
+
#endif
/************************************************************************/
diff --git a/src/glx/x11/glxcmds.c b/src/glx/x11/glxcmds.c
index 5a16fb964d..77f80e3f98 100644
--- a/src/glx/x11/glxcmds.c
+++ b/src/glx/x11/glxcmds.c
@@ -49,6 +49,7 @@
#ifdef GLX_DIRECT_RENDERING
#include "indirect_init.h"
#include "xf86vmode.h"
+#include "xf86dri.h"
#endif
#include "glxextensions.h"
#include "glcontextmodes.h"
@@ -63,13 +64,6 @@ static const char __glXGLXClientVendorName[] = "SGI";
static const char __glXGLXClientVersion[] = "1.4";
-#if defined(GLX_DIRECT_RENDERING)
-#include "xf86dri.h"
-
-static Bool __glXWindowExists(Display *dpy, GLXDrawable draw);
-#endif
-
-
/****************************************************************************/
/**
* Get the __DRIdrawable for the drawable associated with a GLXContext
@@ -2814,28 +2808,9 @@ static const struct name_address_pair GLX_functions[] = {
GLX_FUNCTION( glXGetSyncValuesOML ),
#ifdef GLX_DIRECT_RENDERING
- /***
- *** Internal functions useful to DRI drivers
- *** With this, the DRI drivers shouldn't need dlopen()/dlsym() to
- *** access internal libGL functions which may or may not exist.
- ***/
- GLX_FUNCTION( __glXInitialize ),
- GLX_FUNCTION( __glXFindDRIScreen ),
- GLX_FUNCTION( __glXGetInternalVersion ),
- GLX_FUNCTION( __glXWindowExists ),
- GLX_FUNCTION2( __glXCreateContextWithConfig, XF86DRICreateContextWithConfig ),
- GLX_FUNCTION2( __glXGetDrawableInfo, XF86DRIGetDrawableInfo ),
-
/*** DRI configuration ***/
GLX_FUNCTION( glXGetScreenDriver ),
GLX_FUNCTION( glXGetDriverConfig ),
-
- GLX_FUNCTION( __glXScrEnableExtension ),
-
- GLX_FUNCTION( __glXGetUST ),
-
- GLX_FUNCTION2( __glXCreateContextModes, _gl_context_modes_create ),
- GLX_FUNCTION2( __glXDestroyContextModes, _gl_context_modes_destroy ),
#endif
{ NULL, NULL } /* end of list */
@@ -2949,10 +2924,10 @@ int __glXGetInternalVersion(void)
* 20040415 - Added support for bindContext3 and unbindContext3.
* 20040602 - Add __glXGetDrawableInfo. I though that was there
* months ago. :(
- * 20050722 - Gut all the old interfaces. This breaks compatability with
+ * 20050725 - Gut all the old interfaces. This breaks compatability with
* any DRI driver built to any previous version.
*/
- return 20050722;
+ return 20050725;
}
@@ -2986,7 +2961,7 @@ static int windowExistsErrorHandler(Display *dpy, XErrorEvent *xerr)
*
* \since Internal API version 20021128.
*/
-static Bool __glXWindowExists(Display *dpy, GLXDrawable draw)
+Bool __glXWindowExists(Display *dpy, GLXDrawable draw)
{
XWindowAttributes xwa;
int (*oldXErrorHandler)(Display *, XErrorEvent *);
diff --git a/src/glx/x11/glxext.c b/src/glx/x11/glxext.c
index 1754efa0c2..66567b8313 100644
--- a/src/glx/x11/glxext.c
+++ b/src/glx/x11/glxext.c
@@ -667,6 +667,42 @@ filter_modes( __GLcontextModes ** server_modes,
}
+/**
+ * Implement \c __DRIinterfaceMethods::getProcAddress.
+ */
+static __DRIfuncPtr get_proc_address( const char * proc_name )
+{
+ if (strcmp( proc_name, "glxEnableExtension" ) == 0) {
+ return (__DRIfuncPtr) __glXScrEnableExtension;
+ }
+
+ return NULL;
+}
+
+
+/**
+ * Table of functions exported by the loader to the driver.
+ */
+static const __DRIinterfaceMethods interface_methods = {
+ get_proc_address,
+
+ _gl_context_modes_create,
+ _gl_context_modes_destroy,
+
+ __glXFindDRIScreen,
+ __glXWindowExists,
+
+ XF86DRICreateContextWithConfig,
+ XF86DRIDestroyContext,
+
+ XF86DRICreateDrawable,
+ XF86DRIDestroyDrawable,
+ XF86DRIGetDrawableInfo,
+
+ __glXGetUST,
+ glXGetMscRateOML,
+};
+
/**
* Perform the required libGL-side initialization and call the client-side
@@ -819,6 +855,7 @@ CallCreateNewScreen(Display *dpy, int scrn, __DRIscreen *psc,
pSAREA,
fd,
api_ver,
+ & interface_methods,
& driver_modes );
filter_modes( & configs->configs,