#include <linux/delay.h>
#include <trace/events/dma_fence.h>
#include "qxl_drv.h"
#include "qxl_object.h"
#define RELEASE_SIZE …
#define RELEASES_PER_BO …
#define SURFACE_RELEASE_SIZE …
#define SURFACE_RELEASES_PER_BO …
static const int release_size_per_bo[] = …;
static const int releases_per_bo[] = …;
static const char *qxl_get_driver_name(struct dma_fence *fence)
{ … }
static const char *qxl_get_timeline_name(struct dma_fence *fence)
{ … }
static long qxl_fence_wait(struct dma_fence *fence, bool intr,
signed long timeout)
{ … }
static const struct dma_fence_ops qxl_fence_ops = …;
static int
qxl_release_alloc(struct qxl_device *qdev, int type,
struct qxl_release **ret)
{ … }
static void
qxl_release_free_list(struct qxl_release *release)
{ … }
void
qxl_release_free(struct qxl_device *qdev,
struct qxl_release *release)
{ … }
static int qxl_release_bo_alloc(struct qxl_device *qdev,
struct qxl_bo **bo,
u32 priority)
{ … }
int qxl_release_list_add(struct qxl_release *release, struct qxl_bo *bo)
{ … }
static int qxl_release_validate_bo(struct qxl_bo *bo)
{ … }
int qxl_release_reserve_list(struct qxl_release *release, bool no_intr)
{ … }
void qxl_release_backoff_reserve_list(struct qxl_release *release)
{ … }
int qxl_alloc_surface_release_reserved(struct qxl_device *qdev,
enum qxl_surface_cmd_type surface_cmd_type,
struct qxl_release *create_rel,
struct qxl_release **release)
{ … }
int qxl_alloc_release_reserved(struct qxl_device *qdev, unsigned long size,
int type, struct qxl_release **release,
struct qxl_bo **rbo)
{ … }
struct qxl_release *qxl_release_from_id_locked(struct qxl_device *qdev,
uint64_t id)
{ … }
union qxl_release_info *qxl_release_map(struct qxl_device *qdev,
struct qxl_release *release)
{ … }
void qxl_release_unmap(struct qxl_device *qdev,
struct qxl_release *release,
union qxl_release_info *info)
{ … }
void qxl_release_fence_buffer_objects(struct qxl_release *release)
{ … }