summaryrefslogtreecommitdiffstats
path: root/src/glx/x11
diff options
context:
space:
mode:
authorKristian Høgsberg <[email protected]>2007-05-15 12:31:31 -0400
committerKristian Høgsberg <[email protected]>2007-10-10 18:47:22 -0400
commitf616a263a25eda135800bea7d3a863c569b93e30 (patch)
treef922c411d8d821a675eb32408e11aa1e16f93669 /src/glx/x11
parent295dc2d225ccac1951c0fcc2c08119f31d1b575c (diff)
Implement new screen extension API.
This new API lets the loader examine DRI level extensions provided by the driver in a forward compatible manner. Much of the churn in the DRI interface is adding support for new extensions or removing old, unused extensions. This new extension mechanism lets the loader query the extensions provided by the driver and implement the extensions it knows about. Deprecating extensions is done by not exporting that extension in the list, which doesn't require keeping old function pointers around to preserve ABI.
Diffstat (limited to 'src/glx/x11')
-rw-r--r--src/glx/x11/glxext.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/glx/x11/glxext.c b/src/glx/x11/glxext.c
index ee8e238bec5..cb187717f1e 100644
--- a/src/glx/x11/glxext.c
+++ b/src/glx/x11/glxext.c
@@ -1011,6 +1011,18 @@ CallCreateNewScreen(Display *dpy, int scrn, __GLXscreenConfigs *psc,
return psp;
}
+
+static void queryExtensions(__GLXscreenConfigs *psc)
+{
+ const __DRIextension **extensions;
+ int i;
+
+ extensions = psc->driScreen.getExtensions(&psc->driScreen);
+ for (i = 0; extensions[i]; i++) {
+ /* Unknown extension, just ignore... */
+ }
+}
+
#endif /* GLX_DIRECT_RENDERING */
@@ -1205,6 +1217,8 @@ static Bool AllocAndFetchScreenConfigs(Display *dpy, __GLXdisplayPrivate *priv)
CallCreateNewScreen(dpy, i, psc,
& priv->driDisplay,
priv->driDisplay.createNewScreen[i] );
+ if (psc->driScreen.private != NULL)
+ queryExtensions(psc);
}
}
#endif