dri: plumb a 'implicit' param through createNewScreen interfaces

Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28139>
This commit is contained in:
Mike Blumenkrantz
2024-03-12 10:00:54 -04:00
committed by Marge Bot
parent 014bbae4bf
commit 14c44aacff
12 changed files with 120 additions and 57 deletions

View File

@@ -915,7 +915,7 @@ struct __DRIframebufferRec {
* extension. Version 1 is required by the X server, and version 3 is used.
*/
#define __DRI_SWRAST "DRI_SWRast"
#define __DRI_SWRAST_VERSION 5
#define __DRI_SWRAST_VERSION 6
struct __DRIswrastExtensionRec {
__DRIextension base;
@@ -967,6 +967,18 @@ struct __DRIswrastExtensionRec {
*/
int (*queryBufferAge)(__DRIdrawable *drawable);
/**
* createNewScreen() with the driver extensions passed in and implicit load flag.
*
* \since version 6
*/
__DRIscreen *(*createNewScreen3)(int screen,
const __DRIextension **loader_extensions,
const __DRIextension **driver_extensions,
const __DRIconfig ***driver_configs,
bool implicit,
void *loaderPrivate);
};
/** Common DRI function definitions, shared among DRI2 and Image extensions
@@ -978,6 +990,13 @@ typedef __DRIscreen *
const __DRIextension **driver_extensions,
const __DRIconfig ***driver_configs,
void *loaderPrivate);
typedef __DRIscreen *
(*__DRIcreateNewScreen3Func)(int screen, int fd,
const __DRIextension **extensions,
const __DRIextension **driver_extensions,
const __DRIconfig ***driver_configs,
bool implicit,
void *loaderPrivate);
typedef __DRIdrawable *
(*__DRIcreateNewDrawableFunc)(__DRIscreen *screen,
@@ -1113,7 +1132,7 @@ struct __DRIdri2LoaderExtensionRec {
* constructors for DRI2. The X server uses up to version 4.
*/
#define __DRI_DRI2 "DRI_DRI2"
#define __DRI_DRI2_VERSION 4
#define __DRI_DRI2_VERSION 5
#define __DRI_API_OPENGL 0 /**< OpenGL compatibility profile */
#define __DRI_API_GLES 1 /**< OpenGL ES 1.x */
@@ -1232,6 +1251,13 @@ struct __DRIdri2ExtensionRec {
* \since version 4
*/
__DRIcreateNewScreen2Func createNewScreen2;
/**
* createNewScreen with the driver's extension list passed in and implicit load flag.
*
* \since version 5
*/
__DRIcreateNewScreen3Func createNewScreen3;
};
@@ -2045,7 +2071,7 @@ struct __DRIimageLoaderExtensionRec {
*/
#define __DRI_IMAGE_DRIVER "DRI_IMAGE_DRIVER"
#define __DRI_IMAGE_DRIVER_VERSION 1
#define __DRI_IMAGE_DRIVER_VERSION 2
struct __DRIimageDriverExtensionRec {
__DRIextension base;
@@ -2055,6 +2081,7 @@ struct __DRIimageDriverExtensionRec {
__DRIcreateNewDrawableFunc createNewDrawable;
__DRIcreateContextAttribsFunc createContextAttribs;
__DRIgetAPIMaskFunc getAPIMask;
__DRIcreateNewScreen3Func createNewScreen3;
};
/**

View File

@@ -33,7 +33,7 @@
typedef struct __DRImesaCoreExtensionRec __DRImesaCoreExtension;
#define __DRI_MESA "DRI_Mesa"
#define __DRI_MESA_VERSION 1
#define __DRI_MESA_VERSION 2
struct dri_screen;
@@ -63,6 +63,9 @@ struct __DRImesaCoreExtensionRec {
const __DRIconfig **(*initScreen)(struct dri_screen *screen);
int (*queryCompatibleRenderOnlyDeviceFd)(int kms_only_fd);
/* version 2 */
__DRIcreateNewScreen3Func createNewScreen3;
};
#endif /* MESA_INTERFACE_H */