dri: Fix __DRIconfig reporting of __DRI_ATTRIB_SWAP_METHOD
The attribMap had two entries for this attribute, and driGetConfigAttribIndex didn't return a proper value for this attribute. Fix this, and also make sure we return SWAP_UNDEFINED for single-buffer configs as required by the GLX_OML_swap_method spec. Finally bump the dri core extension version to 2, indicating that we correctly report __DRI_ATTRIB_SWAP_METHOD. Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
This commit is contained in:
@@ -726,9 +726,12 @@ struct __DRIuseInvalidateExtensionRec {
|
||||
|
||||
/**
|
||||
* This extension defines the core DRI functionality.
|
||||
*
|
||||
* Version >= 2 indicates that getConfigAttrib with __DRI_ATTRIB_SWAP_METHOD
|
||||
* returns a reliable value.
|
||||
*/
|
||||
#define __DRI_CORE "DRI_Core"
|
||||
#define __DRI_CORE_VERSION 1
|
||||
#define __DRI_CORE_VERSION 2
|
||||
|
||||
struct __DRIcoreExtensionRec {
|
||||
__DRIextension base;
|
||||
|
@@ -767,7 +767,7 @@ driSwapBuffers(__DRIdrawable *pdp)
|
||||
|
||||
/** Core interface */
|
||||
const __DRIcoreExtension driCoreExtension = {
|
||||
.base = { __DRI_CORE, 1 },
|
||||
.base = { __DRI_CORE, 2 },
|
||||
|
||||
.createNewScreen = NULL,
|
||||
.destroyScreen = driDestroyScreen,
|
||||
|
@@ -286,6 +286,7 @@ driCreateConfigs(mesa_format format,
|
||||
|
||||
if ( db_modes[i] == GLX_NONE ) {
|
||||
modes->doubleBufferMode = GL_FALSE;
|
||||
modes->swapMethod = GLX_SWAP_UNDEFINED_OML;
|
||||
}
|
||||
else {
|
||||
modes->doubleBufferMode = GL_TRUE;
|
||||
@@ -403,7 +404,6 @@ static const struct { unsigned int attrib, offset; } attribMap[] = {
|
||||
* so the iterator includes them though.*/
|
||||
__ATTRIB(__DRI_ATTRIB_RENDER_TYPE, level),
|
||||
__ATTRIB(__DRI_ATTRIB_CONFIG_CAVEAT, level),
|
||||
__ATTRIB(__DRI_ATTRIB_SWAP_METHOD, level)
|
||||
};
|
||||
|
||||
|
||||
@@ -428,10 +428,6 @@ driGetConfigAttribIndex(const __DRIconfig *config,
|
||||
else
|
||||
*value = 0;
|
||||
break;
|
||||
case __DRI_ATTRIB_SWAP_METHOD:
|
||||
/* XXX no return value??? */
|
||||
break;
|
||||
|
||||
default:
|
||||
/* any other int-sized field */
|
||||
*value = *(unsigned int *)
|
||||
|
Reference in New Issue
Block a user