diff options
Diffstat (limited to 'src/glx/glxext.c')
-rw-r--r-- | src/glx/glxext.c | 27 |
1 files changed, 8 insertions, 19 deletions
diff --git a/src/glx/glxext.c b/src/glx/glxext.c index cef81920356..f6ee0ed661d 100644 --- a/src/glx/glxext.c +++ b/src/glx/glxext.c @@ -367,7 +367,6 @@ __glXInitializeVisualConfigFromTags(struct glx_config * config, int count, Bool fbconfig_style_tags) { int i; - GLint renderType = 0; if (!tagged_only) { /* Copy in the first set of properties */ @@ -375,7 +374,7 @@ __glXInitializeVisualConfigFromTags(struct glx_config * config, int count, config->visualType = convert_from_x_visual_type(*bp++); - config->rgbMode = *bp++; + config->renderType = *bp++ ? GLX_RGBA_BIT : GLX_COLOR_INDEX_BIT; config->redBits = *bp++; config->greenBits = *bp++; @@ -419,7 +418,10 @@ __glXInitializeVisualConfigFromTags(struct glx_config * config, int count, switch (tag) { case GLX_RGBA: - FETCH_OR_SET(rgbMode); + if (fbconfig_style_tags) + config->renderType = *bp++ ? GLX_RGBA_BIT : GLX_COLOR_INDEX_BIT; + else + config->renderType = GLX_RGBA_BIT; break; case GLX_BUFFER_SIZE: config->rgbBits = *bp++; @@ -501,7 +503,7 @@ __glXInitializeVisualConfigFromTags(struct glx_config * config, int count, #endif break; case GLX_RENDER_TYPE: /* fbconfig render type bits */ - renderType = *bp++; + config->renderType = *bp++; break; case GLX_X_RENDERABLE: config->xRenderable = *bp++; @@ -594,26 +596,13 @@ __glXInitializeVisualConfigFromTags(struct glx_config * config, int count, } } - if (renderType != 0 && renderType != GLX_DONT_CARE) { - config->renderType = renderType; - config->floatMode = (renderType & - (GLX_RGBA_FLOAT_BIT_ARB|GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT)) != 0; - } else { - /* If there wasn't GLX_RENDER_TYPE property, set it based on - * config->rgbMode. The only way to communicate that the config is - * floating-point is via GLX_RENDER_TYPE, so this cannot be a float - * config. - */ - config->renderType = - (config->rgbMode) ? GLX_RGBA_BIT : GLX_COLOR_INDEX_BIT; - } - /* The GLX_ARB_fbconfig_float spec says: * * "Note that floating point rendering is only supported for * GLXPbuffer drawables." */ - if (config->floatMode) + if (config->renderType & + (GLX_RGBA_FLOAT_BIT_ARB|GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT)) config->drawableType &= GLX_PBUFFER_BIT; } |