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 <tomasz.lis@intel.com> Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
4473af7aca
commit
c37c367d38
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 *)
|
||||
|
|
Loading…
Reference in New Issue