diff options
author | Tomasz Lis <[email protected]> | 2013-07-17 13:49:21 +0200 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2013-07-18 16:03:42 -0700 |
commit | c37c367d389d083b91521e1378942d83122d5329 (patch) | |
tree | 7a93d348822cc14d70447ba7b746d79c8625ce1e | |
parent | 4473af7aca97d360786954786cbbab8af1424a22 (diff) |
dri: Introduce new flags in __DRI_ATTRIB_RENDER_TYPE
Mark __DRI_ATTRIB_FLOAT_MODE as deprecated, and introduce new flags to
__DRI_ATTRIB_RENDER_TYPE for float modes. Both signed float
(fbconfig_float) and unsigned (packed_float) are introduced. The old
attribute should be set for both float modes.
v2 (idr): Require that the render mode from the DRI attributes matches the
render mode of the config exactly. This is the behavior of the old code.
Signed-off-by: Tomasz Lis <[email protected]>
Signed-off-by: Ian Romanick <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
-rw-r--r-- | include/GL/internal/dri_interface.h | 2 | ||||
-rw-r--r-- | src/egl/drivers/dri2/egl_dri2.c | 2 | ||||
-rw-r--r-- | src/glx/dri_common.c | 8 | ||||
-rw-r--r-- | src/mesa/drivers/dri/common/utils.c | 6 |
4 files changed, 10 insertions, 8 deletions
diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h index 30ce175e6f0..5c99d5596df 100644 --- a/include/GL/internal/dri_interface.h +++ b/include/GL/internal/dri_interface.h @@ -552,6 +552,8 @@ struct __DRIuseInvalidateExtensionRec { #define __DRI_ATTRIB_RGBA_BIT 0x01 #define __DRI_ATTRIB_COLOR_INDEX_BIT 0x02 #define __DRI_ATTRIB_LUMINANCE_BIT 0x04 +#define __DRI_ATTRIB_FLOAT_BIT 0x08 +#define __DRI_ATTRIB_UNSIGNED_FLOAT_BIT 0x10 /* __DRI_ATTRIB_CONFIG_CAVEAT */ #define __DRI_ATTRIB_SLOW_BIT 0x01 diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 1bce314fa99..eb5aa3144fa 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -75,7 +75,7 @@ EGLint dri2_to_egl_attribute_map[] = { 0, /* __DRI_ATTRIB_TRANSPARENT_GREEN_VALUE */ 0, /* __DRI_ATTRIB_TRANSPARENT_BLUE_VALUE */ 0, /* __DRI_ATTRIB_TRANSPARENT_ALPHA_VALUE */ - 0, /* __DRI_ATTRIB_FLOAT_MODE */ + 0, /* __DRI_ATTRIB_FLOAT_MODE (deprecated) */ 0, /* __DRI_ATTRIB_RED_MASK */ 0, /* __DRI_ATTRIB_GREEN_MASK */ 0, /* __DRI_ATTRIB_BLUE_MASK */ diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c index 32625e83d25..b2a3117c5ac 100644 --- a/src/glx/dri_common.c +++ b/src/glx/dri_common.c @@ -285,9 +285,15 @@ driConfigEqual(const __DRIcoreExtension *core, if (value & __DRI_ATTRIB_RGBA_BIT) { glxValue |= GLX_RGBA_BIT; } - else if (value & __DRI_ATTRIB_COLOR_INDEX_BIT) { + if (value & __DRI_ATTRIB_COLOR_INDEX_BIT) { glxValue |= GLX_COLOR_INDEX_BIT; } + if (value & __DRI_ATTRIB_FLOAT_BIT) { + glxValue |= GLX_RGBA_FLOAT_BIT_ARB; + } + if (value & __DRI_ATTRIB_UNSIGNED_FLOAT_BIT) { + glxValue |= GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT; + } if (glxValue != config->renderType) return GL_FALSE; break; diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c index ac0773b0d4c..c9fc2189128 100644 --- a/src/mesa/drivers/dri/common/utils.c +++ b/src/mesa/drivers/dri/common/utils.c @@ -366,7 +366,6 @@ static const struct { unsigned int attrib, offset; } attribMap[] = { __ATTRIB(__DRI_ATTRIB_TRANSPARENT_GREEN_VALUE, transparentGreen), __ATTRIB(__DRI_ATTRIB_TRANSPARENT_BLUE_VALUE, transparentBlue), __ATTRIB(__DRI_ATTRIB_TRANSPARENT_ALPHA_VALUE, transparentAlpha), - __ATTRIB(__DRI_ATTRIB_FLOAT_MODE, floatMode), __ATTRIB(__DRI_ATTRIB_RED_MASK, redMask), __ATTRIB(__DRI_ATTRIB_GREEN_MASK, greenMask), __ATTRIB(__DRI_ATTRIB_BLUE_MASK, blueMask), @@ -418,11 +417,6 @@ driGetConfigAttribIndex(const __DRIconfig *config, /* XXX no return value??? */ break; - case __DRI_ATTRIB_FLOAT_MODE: - /* this field is not int-sized */ - *value = config->modes.floatMode; - break; - default: /* any other int-sized field */ *value = *(unsigned int *) |