xrt: Add image transition inteface

This commit is contained in:
Jakob Bornecrantz 2023-03-23 22:37:32 +00:00
parent 52d76414c0
commit b7362f27e6

View file

@ -378,6 +378,15 @@ enum xrt_swapchain_usage_bits
XRT_SWAPCHAIN_USAGE_INPUT_ATTACHMENT = 0x00000080,
};
/*!
* The direction of a transition.
*/
enum xrt_barrier_direction
{
XRT_BARRIER_TO_APP = 1,
XRT_BARRIER_TO_COMP = 2,
};
/*!
* @interface xrt_swapchain
*
@ -434,6 +443,15 @@ struct xrt_swapchain
*/
xrt_result_t (*wait_image)(struct xrt_swapchain *xsc, uint64_t timeout_ns, uint32_t index);
/*!
* Do any barrier transitions to and from the application.
*
* @param xsc Self pointer
* @param direction Direction of the barrier transition.
* @param index Image index to barrier transition.
*/
xrt_result_t (*barrier_image)(struct xrt_swapchain *xsc, enum xrt_barrier_direction direction, uint32_t index);
/*!
* See xrReleaseSwapchainImage, state tracker needs to track index.
*/
@ -499,6 +517,19 @@ xrt_swapchain_wait_image(struct xrt_swapchain *xsc, uint64_t timeout_ns, uint32_
return xsc->wait_image(xsc, timeout_ns, index);
}
/*!
* @copydoc xrt_swapchain::barrier_image
*
* Helper for calling through the function pointer.
*
* @public @memberof xrt_swapchain
*/
static inline xrt_result_t
xrt_swapchain_barrier_image(struct xrt_swapchain *xsc, enum xrt_barrier_direction direction, uint32_t index)
{
return xsc->barrier_image(xsc, direction, index);
}
/*!
* @copydoc xrt_swapchain::release_image
*