dri2: Add createContextAttribs entry point for DRI2 version 3

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
Ian Romanick 2011-11-30 12:16:19 -08:00
parent d18152028e
commit 1ab545494a
2 changed files with 56 additions and 4 deletions

View File

@ -781,11 +781,45 @@ struct __DRIdri2LoaderExtensionRec {
* constructors for DRI2.
*/
#define __DRI_DRI2 "DRI_DRI2"
#define __DRI_DRI2_VERSION 2
#define __DRI_DRI2_VERSION 3
#define __DRI_API_OPENGL 0
#define __DRI_API_OPENGL 0 /**< OpenGL compatibility profile */
#define __DRI_API_GLES 1
#define __DRI_API_GLES2 2
#define __DRI_API_OPENGL_CORE 3 /**< OpenGL 3.2+ core profile */
#define __DRI_CTX_ATTRIB_MAJOR_VERSION 0
#define __DRI_CTX_ATTRIB_MINOR_VERSION 1
#define __DRI_CTX_ATTRIB_FLAGS 2
#define __DRI_CTX_FLAG_DEBUG 0x00000001
#define __DRI_CTX_FLAG_FORWARD_COMPATIBLE 0x00000002
/**
* \name Reasons that __DRIdri2Extension::createContextAttribs might fail
*/
/*@{*/
/** Success! */
#define __DRI_CTX_ERROR_SUCCESS 0
/** Memory allocation failure */
#define __DRI_CTX_ERROR_NO_MEMORY 1
/** Client requested an API (e.g., OpenGL ES 2.0) that the driver can't do. */
#define __DRI_CTX_ERROR_BAD_API 2
/** Client requested an API version that the driver can't do. */
#define __DRI_CTX_ERROR_BAD_VERSION 3
/** Client requested a flag or combination of flags the driver can't do. */
#define __DRI_CTX_ERROR_BAD_FLAG 4
/** Client requested an attribute the driver doesn't understand. */
#define __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE 5
/** Client requested a flag the driver doesn't understand. */
#define __DRI_CTX_ERROR_UNKNOWN_FLAG 6
/*@}*/
struct __DRIdri2ExtensionRec {
__DRIextension base;
@ -820,6 +854,20 @@ struct __DRIdri2ExtensionRec {
int height);
void (*releaseBuffer)(__DRIscreen *screen,
__DRIbuffer *buffer);
/**
* Create a context for a particular API with a set of attributes
*
* \since version 3
*/
__DRIcontext *(*createContextAttribs)(__DRIscreen *screen,
int api,
const __DRIconfig *config,
__DRIcontext *shared,
unsigned num_attribs,
const uint32_t *attribs,
unsigned *error,
void *loaderPrivate);
};

View File

@ -454,14 +454,18 @@ const __DRIcoreExtension driCoreExtension = {
/** DRI2 interface */
const __DRIdri2Extension driDRI2Extension = {
{ __DRI_DRI2, __DRI_DRI2_VERSION },
/* Force the version to 2 because the underlying drivers don't (can't!)
* support the extra requirements of CreateContextAttribs.
*/
{ __DRI_DRI2, 2 },
dri2CreateNewScreen,
dri2CreateNewDrawable,
dri2CreateNewContext,
dri2GetAPIMask,
dri2CreateNewContextForAPI,
dri2AllocateBuffer,
dri2ReleaseBuffer
dri2ReleaseBuffer,
NULL
};
const __DRI2configQueryExtension dri2ConfigQueryExtension = {