#include <drm/drm_syncobj.h>
#include "v3d_drv.h"
#include "v3d_regs.h"
#include "v3d_trace.h"
static int
v3d_lock_bo_reservations(struct v3d_job *job,
struct ww_acquire_ctx *acquire_ctx)
{ … }
static int
v3d_lookup_bos(struct drm_device *dev,
struct drm_file *file_priv,
struct v3d_job *job,
u64 bo_handles,
u32 bo_count)
{ … }
static void
v3d_job_free(struct kref *ref)
{ … }
static void
v3d_render_job_free(struct kref *ref)
{ … }
void v3d_job_cleanup(struct v3d_job *job)
{ … }
void v3d_job_put(struct v3d_job *job)
{ … }
static int
v3d_job_allocate(void **container, size_t size)
{ … }
static void
v3d_job_deallocate(void **container)
{ … }
static int
v3d_job_init(struct v3d_dev *v3d, struct drm_file *file_priv,
struct v3d_job *job, void (*free)(struct kref *ref),
u32 in_sync, struct v3d_submit_ext *se, enum v3d_queue queue)
{ … }
static void
v3d_push_job(struct v3d_job *job)
{ … }
static void
v3d_attach_fences_and_unlock_reservation(struct drm_file *file_priv,
struct v3d_job *job,
struct ww_acquire_ctx *acquire_ctx,
u32 out_sync,
struct v3d_submit_ext *se,
struct dma_fence *done_fence)
{ … }
static int
v3d_setup_csd_jobs_and_bos(struct drm_file *file_priv,
struct v3d_dev *v3d,
struct drm_v3d_submit_csd *args,
struct v3d_csd_job **job,
struct v3d_job **clean_job,
struct v3d_submit_ext *se,
struct ww_acquire_ctx *acquire_ctx)
{ … }
static void
v3d_put_multisync_post_deps(struct v3d_submit_ext *se)
{ … }
static int
v3d_get_multisync_post_deps(struct drm_file *file_priv,
struct v3d_submit_ext *se,
u32 count, u64 handles)
{ … }
static int
v3d_get_multisync_submit_deps(struct drm_file *file_priv,
struct drm_v3d_extension __user *ext,
struct v3d_submit_ext *se)
{ … }
static int
v3d_get_cpu_indirect_csd_params(struct drm_file *file_priv,
struct drm_v3d_extension __user *ext,
struct v3d_cpu_job *job)
{ … }
static int
v3d_get_cpu_timestamp_query_params(struct drm_file *file_priv,
struct drm_v3d_extension __user *ext,
struct v3d_cpu_job *job)
{ … }
static int
v3d_get_cpu_reset_timestamp_params(struct drm_file *file_priv,
struct drm_v3d_extension __user *ext,
struct v3d_cpu_job *job)
{ … }
static int
v3d_get_cpu_copy_query_results_params(struct drm_file *file_priv,
struct drm_v3d_extension __user *ext,
struct v3d_cpu_job *job)
{ … }
static int
v3d_get_cpu_reset_performance_params(struct drm_file *file_priv,
struct drm_v3d_extension __user *ext,
struct v3d_cpu_job *job)
{ … }
static int
v3d_get_cpu_copy_performance_query_params(struct drm_file *file_priv,
struct drm_v3d_extension __user *ext,
struct v3d_cpu_job *job)
{ … }
static int
v3d_get_extensions(struct drm_file *file_priv,
u64 ext_handles,
struct v3d_submit_ext *se,
struct v3d_cpu_job *job)
{ … }
int
v3d_submit_cl_ioctl(struct drm_device *dev, void *data,
struct drm_file *file_priv)
{ … }
int
v3d_submit_tfu_ioctl(struct drm_device *dev, void *data,
struct drm_file *file_priv)
{ … }
int
v3d_submit_csd_ioctl(struct drm_device *dev, void *data,
struct drm_file *file_priv)
{ … }
static const unsigned int cpu_job_bo_handle_count[] = …;
int
v3d_submit_cpu_ioctl(struct drm_device *dev, void *data,
struct drm_file *file_priv)
{ … }