diff options
author | Tomasz Lis <[email protected]> | 2013-07-17 13:49:17 +0200 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2013-07-18 16:03:42 -0700 |
commit | 1c748dff6b13ff127c02790fa6078cc68eb42291 (patch) | |
tree | d2b13f91d1027da06a8f0eddaec6adb27397184f /src/glx | |
parent | b8126c7c8a6692d9b08d5816a747835217f8e6b9 (diff) |
glx: Handling RENDER_TYPE in glXCreateContext and init_fbconfig_for_chooser
Set the correct values of renderType in glXCreateContext and
init_fbconfig_for_chooser.
Signed-off-by: Tomasz Lis <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src/glx')
-rw-r--r-- | src/glx/glxcmds.c | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c index 51b2237b698..415e7849742 100644 --- a/src/glx/glxcmds.c +++ b/src/glx/glxcmds.c @@ -373,7 +373,32 @@ glXCreateContext(Display * dpy, XVisualInfo * vis, return None; } - renderType = config->rgbMode ? GLX_RGBA_TYPE : GLX_COLOR_INDEX_TYPE; + /* Choose the context render type based on DRI config values. It is + * unusual to set this type from config, but we have no other choice, as + * this old API does not provide renderType parameter. + */ + if (config->renderType & GLX_RGBA_FLOAT_BIT_ARB) { + renderType = GLX_RGBA_FLOAT_TYPE_ARB; + } else if (config->renderType & GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT) { + renderType = GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT; + } else if (config->renderType & GLX_RGBA_BIT) { + renderType = GLX_RGBA_TYPE; + } else if (config->renderType & GLX_COLOR_INDEX_BIT) { + renderType = GLX_COLOR_INDEX_TYPE; + } else if (config->rgbMode) { + /* If we're here, then renderType is not set correctly. Let's use a + * safeguard - any TrueColor or DirectColor mode is RGB mode. Such + * default value is needed by old DRI drivers, which didn't set + * renderType correctly as the value was just ignored. + */ + renderType = GLX_RGBA_TYPE; + } else { + /* Safeguard - only one option left, all non-RGB modes are indexed + * modes. Again, this allows drivers with invalid renderType to work + * properly. + */ + renderType = GLX_COLOR_INDEX_TYPE; + } #endif return CreateContext(dpy, vis->visualid, config, shareList, allowDirect, @@ -876,9 +901,8 @@ init_fbconfig_for_chooser(struct glx_config * config, config->transparentAlpha = GLX_DONT_CARE; config->transparentIndex = GLX_DONT_CARE; - config->drawableType = GLX_WINDOW_BIT; - config->renderType = - (config->rgbMode) ? GLX_RGBA_BIT : GLX_COLOR_INDEX_BIT; + /* Set GLX_RENDER_TYPE property to not expect any flags by default. */ + config->renderType = 0; config->xRenderable = GLX_DONT_CARE; config->fbconfigID = (GLXFBConfigID) (GLX_DONT_CARE); |