mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2024-11-30 11:00:40 +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_VERSION 1
|
||||
#define __DRI2_FENCE_VERSION 2
|
||||
|
||||
#define __DRI2_FENCE_TIMEOUT_INFINITE 0xffffffffffffffffllu
|
||||
|
||||
#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 {
|
||||
__DRIextension base;
|
||||
|
||||
@ -390,6 +397,41 @@ struct __DRI2fenceExtensionRec {
|
||||
* sense with this function (right now there are none)
|
||||
*/
|
||||
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