summaryrefslogtreecommitdiffstats
path: root/src/glx
diff options
context:
space:
mode:
Diffstat (limited to 'src/glx')
-rw-r--r--src/glx/mini/driver.h5
-rw-r--r--src/glx/mini/miniglx.c68
-rw-r--r--src/glx/mini/miniglxP.h2
3 files changed, 15 insertions, 60 deletions
diff --git a/src/glx/mini/driver.h b/src/glx/mini/driver.h
index 3d3476453ce..7bf4b868126 100644
--- a/src/glx/mini/driver.h
+++ b/src/glx/mini/driver.h
@@ -125,11 +125,6 @@ typedef struct DRIDriverContextRec {
*/
typedef struct DRIDriverRec {
/**
- * \brief Get the list of supported gl context modes.
- */
- int (*initContextModes)( const DRIDriverContext *context,
- int *numModes, const __GLcontextModes **modes );
- /**
* \brief Validate the framebuffer device mode
*/
int (*validateMode)( const DRIDriverContext *context );
diff --git a/src/glx/mini/miniglx.c b/src/glx/mini/miniglx.c
index 1a0acf832f0..6596c107b7d 100644
--- a/src/glx/mini/miniglx.c
+++ b/src/glx/mini/miniglx.c
@@ -1014,10 +1014,6 @@ __miniglx_StartServer( const char *display_name )
return NULL;
}
- /* Ask the driver for a list of supported configs:
- */
- dpy->driver->initContextModes( &dpy->driverContext, &dpy->numModes, &dpy->modes );
-
/* Perform the initialization normally done in the X server
*/
if (!dpy->driver->initFBDev( &dpy->driverContext )) {
@@ -1063,8 +1059,6 @@ CallCreateNewScreen(Display *dpy, int scrn, __DRIscreen *psc)
drm_handle_t hSAREA;
drmAddress pSAREA;
const char *BusID;
- __GLcontextModes *modes;
- __GLcontextModes *temp;
int i;
__DRIversion ddx_version;
__DRIversion dri_version;
@@ -1078,28 +1072,6 @@ CallCreateNewScreen(Display *dpy, int scrn, __DRIscreen *psc)
drm_handle_t hFB;
int junk;
-
- /* Create the linked list of context modes, and populate it with the
- * GLX visual information passed in by libGL.
- */
-
- modes = _gl_context_modes_create( dpy->numModes, sizeof(__GLcontextModes) );
- if ( modes == NULL ) {
- return NULL;
- }
-
- temp = modes;
- for ( i = 0 ; i < dpy->numModes ; i++ ) {
- __GLcontextModes * next;
- assert( temp != NULL );
- next = temp->next;
- *temp = dpy->modes[i];
- temp->next = next;
- temp->screen = scrn;
-
- temp = temp->next;
- }
-
err_msg = "XF86DRIOpenConnection";
err_extra = NULL;
@@ -1194,7 +1166,7 @@ CallCreateNewScreen(Display *dpy, int scrn, __DRIscreen *psc)
err_msg = "InitDriver";
err_extra = NULL;
- psp = dpy->createNewScreen(dpy, scrn, psc, modes,
+ psp = dpy->createNewScreen(dpy, scrn, psc, NULL,
& ddx_version,
& dri_version,
& drm_version,
@@ -1203,13 +1175,6 @@ CallCreateNewScreen(Display *dpy, int scrn, __DRIscreen *psc)
fd,
(get_ver != NULL) ? (*get_ver)() : 20040602,
(__GLcontextModes **) &dpy->driver_modes);
- if (dpy->driver_modes == NULL) {
- dpy->driver_modes = modes;
- }
- else {
- _gl_context_modes_destroy(modes);
- modes = NULL;
- }
}
done:
@@ -1230,10 +1195,6 @@ done:
(void)drmClose(fd);
}
- if ( modes != NULL ) {
- _gl_context_modes_destroy( modes );
- }
-
if ( err_extra != NULL ) {
fprintf(stderr, "libGL error: %s failed (%s)\n", err_msg,
err_extra);
@@ -1306,10 +1267,6 @@ XOpenDisplay( const char *display_name )
return NULL;
}
- /* Ask the driver for a list of supported configs:
- */
- dpy->driver->initContextModes( &dpy->driverContext, &dpy->numModes, &dpy->modes );
-
/* Perform the client-side initialization.
*
* Clearly there is a limit of one on the number of windows in
@@ -1631,6 +1588,7 @@ XFree( void *data )
XVisualInfo *
XGetVisualInfo( Display *dpy, long vinfo_mask, XVisualInfo *vinfo_template, int *nitens_return )
{
+ const __GLcontextModes *mode;
XVisualInfo *results;
Visual *visResults;
int i, n;
@@ -1638,7 +1596,10 @@ XGetVisualInfo( Display *dpy, long vinfo_mask, XVisualInfo *vinfo_template, int
ASSERT(vinfo_mask == VisualScreenMask);
ASSERT(vinfo_template.screen == 0);
- n = dpy->numModes;
+ n = 0;
+ for ( mode = dpy->driver_modes ; mode != NULL ; mode = mode->next )
+ n++;
+
results = (XVisualInfo *)calloc(1, n * sizeof(XVisualInfo));
if (!results) {
*nitens_return = 0;
@@ -1652,8 +1613,8 @@ XGetVisualInfo( Display *dpy, long vinfo_mask, XVisualInfo *vinfo_template, int
return NULL;
}
- for (i = 0; i < n; i++) {
- visResults[i].mode = dpy->modes + i;
+ for ( mode = dpy->driver_modes, i = 0 ; mode != NULL ; mode = mode->next, i++ ) {
+ visResults[i].mode = mode;
visResults[i].visInfo = results + i;
visResults[i].dpy = dpy;
@@ -1669,10 +1630,10 @@ XGetVisualInfo( Display *dpy, long vinfo_mask, XVisualInfo *vinfo_template, int
#else
results[i].class = TrueColor;
#endif
- results[i].depth = dpy->modes[i].redBits +
- dpy->modes[i].redBits +
- dpy->modes[i].redBits +
- dpy->modes[i].redBits;
+ results[i].depth = mode->redBits +
+ mode->redBits +
+ mode->redBits +
+ mode->redBits;
results[i].bits_per_rgb = dpy->driverContext.bpp;
}
*nitens_return = n;
@@ -1734,6 +1695,7 @@ XGetVisualInfo( Display *dpy, long vinfo_mask, XVisualInfo *vinfo_template, int
XVisualInfo*
glXChooseVisual( Display *dpy, int screen, int *attribList )
{
+ const __GLcontextModes *mode;
Visual *vis;
XVisualInfo *visInfo;
const int *attrib;
@@ -1834,8 +1796,7 @@ glXChooseVisual( Display *dpy, int screen, int *attribList )
(void) blueBits;
(void) alphaBits;
(void) stereoFlag;
- for (i = 0; i < dpy->numModes; i++) {
- const __GLcontextModes *mode = dpy->modes + i;
+ for ( mode = dpy->driver_modes ; mode != NULL ; mode = mode->next ) {
if (mode->rgbMode == rgbFlag &&
mode->redBits >= redBits &&
mode->greenBits >= greenBits &&
@@ -2278,6 +2239,7 @@ void (*glXGetProcAddress(const GLubyte *procname))( void )
{ "__glXCreateContextWithConfig", (void *) __glXCreateContextWithConfig },
{ "__glXGetDrawableInfo", (void *) __glXGetDrawableInfo },
{ "__glXWindowExists", (void *) __glXWindowExists },
+ { "__glXCreateContextModes", (void *) _gl_context_modes_create },
{ NULL, NULL }
};
const struct name_address *entry;
diff --git a/src/glx/mini/miniglxP.h b/src/glx/mini/miniglxP.h
index 9169f7ece17..426f4a97084 100644
--- a/src/glx/mini/miniglxP.h
+++ b/src/glx/mini/miniglxP.h
@@ -151,8 +151,6 @@ struct MiniGLXDisplayRec {
* Visuals (configs) in this screen.
*/
/*@{*/
- int numModes; /**< \brief Number of modes. */
- const __GLcontextModes *modes; /**< \brief Modes list pointer. */
const __GLcontextModes *driver_modes; /**< \brief Modes filtered by driver. */
/*@}*/