mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2024-12-02 12:46:30 +00:00
dri: extend fence extension to support native fd fences
Required to implement EGL_ANDROID_native_fence_sync. Signed-off-by: Rob Clark <robclark@freedesktop.org> Tested-by: Rafael Antognolli <rafael.antognolli@intel.com> Reviewed-by: Chad Versace <chadversary@chromium.org> Tested-by: Chad Versace <chadversary@chromium.org>
This commit is contained in:
parent
2ba4c7e154
commit
21b1acfcfe
@ -340,12 +340,19 @@ struct __DRI2throttleExtensionRec {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define __DRI2_FENCE "DRI2_Fence"
|
#define __DRI2_FENCE "DRI2_Fence"
|
||||||
#define __DRI2_FENCE_VERSION 1
|
#define __DRI2_FENCE_VERSION 2
|
||||||
|
|
||||||
#define __DRI2_FENCE_TIMEOUT_INFINITE 0xffffffffffffffffllu
|
#define __DRI2_FENCE_TIMEOUT_INFINITE 0xffffffffffffffffllu
|
||||||
|
|
||||||
#define __DRI2_FENCE_FLAG_FLUSH_COMMANDS (1 << 0)
|
#define __DRI2_FENCE_FLAG_FLUSH_COMMANDS (1 << 0)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \name Capabilities that might be returned by __DRI2fenceExtensionRec::get_capabilities
|
||||||
|
*/
|
||||||
|
/*@{*/
|
||||||
|
#define __DRI_FENCE_CAP_NATIVE_FD 1
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
struct __DRI2fenceExtensionRec {
|
struct __DRI2fenceExtensionRec {
|
||||||
__DRIextension base;
|
__DRIextension base;
|
||||||
|
|
||||||
@ -390,6 +397,41 @@ struct __DRI2fenceExtensionRec {
|
|||||||
* sense with this function (right now there are none)
|
* sense with this function (right now there are none)
|
||||||
*/
|
*/
|
||||||
void (*server_wait_sync)(__DRIcontext *ctx, void *fence, unsigned flags);
|
void (*server_wait_sync)(__DRIcontext *ctx, void *fence, unsigned flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query for general capabilities of the driver that concern fences.
|
||||||
|
* Returns a bitmask of __DRI_FENCE_CAP_x
|
||||||
|
*
|
||||||
|
* \since 2
|
||||||
|
*/
|
||||||
|
unsigned (*get_capabilities)(__DRIscreen *screen);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create an fd (file descriptor) associated fence. If the fence fd
|
||||||
|
* is -1, this behaves similarly to create_fence() except that when
|
||||||
|
* rendering is flushed the driver creates a fence fd. Otherwise,
|
||||||
|
* the driver wraps an existing fence fd.
|
||||||
|
*
|
||||||
|
* This is used to implement the EGL_ANDROID_native_fence_sync extension.
|
||||||
|
*
|
||||||
|
* \since 2
|
||||||
|
*
|
||||||
|
* \param ctx the context associated with the fence
|
||||||
|
* \param fd the fence fd or -1
|
||||||
|
*/
|
||||||
|
void *(*create_fence_fd)(__DRIcontext *ctx, int fd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For fences created with create_fence_fd(), after rendering is flushed,
|
||||||
|
* this retrieves the native fence fd. Caller takes ownership of the
|
||||||
|
* fd and will close() it when it is no longer needed.
|
||||||
|
*
|
||||||
|
* \since 2
|
||||||
|
*
|
||||||
|
* \param screen the screen associated with the fence
|
||||||
|
* \param fence the fence
|
||||||
|
*/
|
||||||
|
int (*get_fence_fd)(__DRIscreen *screen, void *fence);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user