mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-20 22:36:24 +00:00
lib: Add prime_sync_start and prime_sync_end helpers
This patch adds dma-buf mmap synchronization ioctls that can be used by tests for cache coherency management e.g. when CPU and GPU domains are being accessed through dma-buf at the same time. Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
This commit is contained in:
parent
b7856ef953
commit
22dd9f987e
@ -1399,6 +1399,32 @@ off_t prime_get_size(int dma_buf_fd)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* prime_sync_start
|
||||||
|
* @dma_buf_fd: dma-buf fd handle
|
||||||
|
*/
|
||||||
|
void prime_sync_start(int dma_buf_fd)
|
||||||
|
{
|
||||||
|
struct local_dma_buf_sync sync_start;
|
||||||
|
|
||||||
|
memset(&sync_start, 0, sizeof(sync_start));
|
||||||
|
sync_start.flags = LOCAL_DMA_BUF_SYNC_START | LOCAL_DMA_BUF_SYNC_RW;
|
||||||
|
do_ioctl(dma_buf_fd, LOCAL_DMA_BUF_IOCTL_SYNC, &sync_start);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* prime_sync_end
|
||||||
|
* @dma_buf_fd: dma-buf fd handle
|
||||||
|
*/
|
||||||
|
void prime_sync_end(int dma_buf_fd)
|
||||||
|
{
|
||||||
|
struct local_dma_buf_sync sync_end;
|
||||||
|
|
||||||
|
memset(&sync_end, 0, sizeof(sync_end));
|
||||||
|
sync_end.flags = LOCAL_DMA_BUF_SYNC_END | LOCAL_DMA_BUF_SYNC_RW;
|
||||||
|
do_ioctl(dma_buf_fd, LOCAL_DMA_BUF_IOCTL_SYNC, &sync_end);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* igt_require_fb_modifiers:
|
* igt_require_fb_modifiers:
|
||||||
* @fd: Open DRM file descriptor.
|
* @fd: Open DRM file descriptor.
|
||||||
|
@ -148,6 +148,19 @@ void gem_require_caching(int fd);
|
|||||||
void gem_require_ring(int fd, int ring_id);
|
void gem_require_ring(int fd, int ring_id);
|
||||||
|
|
||||||
/* prime */
|
/* prime */
|
||||||
|
struct local_dma_buf_sync {
|
||||||
|
uint64_t flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define LOCAL_DMA_BUF_SYNC_RW (3 << 0)
|
||||||
|
#define LOCAL_DMA_BUF_SYNC_START (0 << 2)
|
||||||
|
#define LOCAL_DMA_BUF_SYNC_END (1 << 2)
|
||||||
|
#define DMA_BUF_SYNC_VALID_FLAGS_MASK \
|
||||||
|
(DMA_BUF_SYNC_RW | DMA_BUF_SYNC_END)
|
||||||
|
|
||||||
|
#define LOCAL_DMA_BUF_BASE 'b'
|
||||||
|
#define LOCAL_DMA_BUF_IOCTL_SYNC _IOW(LOCAL_DMA_BUF_BASE, 0, struct local_dma_buf_sync)
|
||||||
|
|
||||||
int prime_handle_to_fd(int fd, uint32_t handle);
|
int prime_handle_to_fd(int fd, uint32_t handle);
|
||||||
#ifndef DRM_RDWR
|
#ifndef DRM_RDWR
|
||||||
#define DRM_RDWR O_RDWR
|
#define DRM_RDWR O_RDWR
|
||||||
@ -155,6 +168,8 @@ int prime_handle_to_fd(int fd, uint32_t handle);
|
|||||||
int prime_handle_to_fd_for_mmap(int fd, uint32_t handle);
|
int prime_handle_to_fd_for_mmap(int fd, uint32_t handle);
|
||||||
uint32_t prime_fd_to_handle(int fd, int dma_buf_fd);
|
uint32_t prime_fd_to_handle(int fd, int dma_buf_fd);
|
||||||
off_t prime_get_size(int dma_buf_fd);
|
off_t prime_get_size(int dma_buf_fd);
|
||||||
|
void prime_sync_start(int dma_buf_fd);
|
||||||
|
void prime_sync_end(int dma_buf_fd);
|
||||||
|
|
||||||
/* addfb2 fb modifiers */
|
/* addfb2 fb modifiers */
|
||||||
struct local_drm_mode_fb_cmd2 {
|
struct local_drm_mode_fb_cmd2 {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user