summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomasz Lis <[email protected]>2013-07-17 13:49:21 +0200
committerIan Romanick <[email protected]>2013-07-18 16:03:42 -0700
commitc37c367d389d083b91521e1378942d83122d5329 (patch)
tree7a93d348822cc14d70447ba7b746d79c8625ce1e
parent4473af7aca97d360786954786cbbab8af1424a22 (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.h2
-rw-r--r--src/egl/drivers/dri2/egl_dri2.c2
-rw-r--r--src/glx/dri_common.c8
-rw-r--r--src/mesa/drivers/dri/common/utils.c6
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 *)