#include <linux/dma-fence-unwrap.h>
#include <linux/file.h>
#include <linux/sync_file.h>
#include <linux/uaccess.h>
#include <drm/drm_file.h>
#include <drm/drm_syncobj.h>
#include <drm/virtgpu_drm.h>
#include "virtgpu_drv.h"
struct virtio_gpu_submit_post_dep { … };
struct virtio_gpu_submit { … };
static int virtio_gpu_do_fence_wait(struct virtio_gpu_submit *submit,
struct dma_fence *in_fence)
{ … }
static int virtio_gpu_dma_fence_wait(struct virtio_gpu_submit *submit,
struct dma_fence *fence)
{ … }
static void virtio_gpu_free_syncobjs(struct drm_syncobj **syncobjs,
u32 nr_syncobjs)
{ … }
static int
virtio_gpu_parse_deps(struct virtio_gpu_submit *submit)
{ … }
static void virtio_gpu_reset_syncobjs(struct drm_syncobj **syncobjs,
u32 nr_syncobjs)
{ … }
static void
virtio_gpu_free_post_deps(struct virtio_gpu_submit_post_dep *post_deps,
u32 nr_syncobjs)
{ … }
static int virtio_gpu_parse_post_deps(struct virtio_gpu_submit *submit)
{ … }
static void
virtio_gpu_process_post_deps(struct virtio_gpu_submit *submit)
{ … }
static int virtio_gpu_fence_event_create(struct drm_device *dev,
struct drm_file *file,
struct virtio_gpu_fence *fence,
u32 ring_idx)
{ … }
static int virtio_gpu_init_submit_buflist(struct virtio_gpu_submit *submit)
{ … }
static void virtio_gpu_cleanup_submit(struct virtio_gpu_submit *submit)
{ … }
static void virtio_gpu_submit(struct virtio_gpu_submit *submit)
{ … }
static void virtio_gpu_complete_submit(struct virtio_gpu_submit *submit)
{ … }
static int virtio_gpu_init_submit(struct virtio_gpu_submit *submit,
struct drm_virtgpu_execbuffer *exbuf,
struct drm_device *dev,
struct drm_file *file,
u64 fence_ctx, u32 ring_idx)
{ … }
static int virtio_gpu_wait_in_fence(struct virtio_gpu_submit *submit)
{ … }
static void virtio_gpu_install_out_fence_fd(struct virtio_gpu_submit *submit)
{ … }
static int virtio_gpu_lock_buflist(struct virtio_gpu_submit *submit)
{ … }
int virtio_gpu_execbuffer_ioctl(struct drm_device *dev, void *data,
struct drm_file *file)
{ … }