diff options
author | Tomasz Lis <[email protected]> | 2013-07-17 13:49:16 +0200 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2013-07-18 16:03:42 -0700 |
commit | b8126c7c8a6692d9b08d5816a747835217f8e6b9 (patch) | |
tree | ab2dd02e74a164518553801251a84d10797ceebf /src/mesa | |
parent | a92cd5b2454c984d56f2f7d03fe64baf6d39be4c (diff) |
glx: Changes to visual configs initialization.
Correctly handle the value of renderType and drawableType in
fbconfig. Modify glXInitializeVisualConfigFromTags to read the parameter
value, or detect it if it's not there.
v2 (idr): If there was no GLX_RENDER_TYPE property, set the type based
purely on the rgbMode as the previous code did. It is impossible for
floatMode to be set at this point, so we can't have a float config. The
previous code regressed a large number of piglit GLX tests because those
tests don't set GLX_RENDER_TYPE in the glXChooseConfig call. Restoring
the old behavior for that case fixes those regressions.
Also fix handling of GLX_DONT_CARE for GLX_RENDER_TYPE. Fixes a
regression in glx-dont-care-mask.
Signed-off-by: Tomasz Lis <[email protected]>
Signed-off-by: Ian Romanick <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/drivers/x11/fakeglx.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/mesa/drivers/x11/fakeglx.c b/src/mesa/drivers/x11/fakeglx.c index 969ee7d2998..7a2cfbeda7c 100644 --- a/src/mesa/drivers/x11/fakeglx.c +++ b/src/mesa/drivers/x11/fakeglx.c @@ -1090,6 +1090,9 @@ choose_visual( Display *dpy, int screen, const int *list, GLboolean fbConfig ) else if (*parselist & GLX_COLOR_INDEX_BIT) { rgb_flag = GL_FALSE; } + else if (*parselist & (GLX_RGBA_FLOAT_BIT_ARB|GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT)) { + rgb_flag = GL_TRUE; + } else if (*parselist == 0) { rgb_flag = GL_TRUE; } @@ -1761,7 +1764,9 @@ get_config( XMesaVisual xmvis, int attrib, int *value, GLboolean fbconfig ) case GLX_RENDER_TYPE_SGIX: if (!fbconfig) return GLX_BAD_ATTRIBUTE; - if (xmvis->mesa_visual.rgbMode) + if (xmvis->mesa_visual.floatMode) + *value = GLX_RGBA_FLOAT_BIT_ARB; + else if (xmvis->mesa_visual.rgbMode) *value = GLX_RGBA_BIT; else *value = GLX_COLOR_INDEX_BIT; |