linux/drivers/gpu/drm/nouveau/nouveau_chan.h
Ben Skeggs 9d24907ccf drm/nouveau/fifo/gv100: return work submission token in channel ctor args
The token will also contain runlist ID on Turing, so instead expose it as
an opaque value from NVKM so the client doesn't need to care.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-12-11 15:37:49 +10:00

61 lines
1.1 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NOUVEAU_CHAN_H__
#define __NOUVEAU_CHAN_H__
#include <nvif/object.h>
#include <nvif/notify.h>
struct nvif_device;
struct nouveau_channel {
struct nvif_device *device;
struct nouveau_drm *drm;
int chid;
u64 inst;
u32 token;
struct nvif_object vram;
struct nvif_object gart;
struct nvif_object nvsw;
struct {
struct nouveau_bo *buffer;
struct nouveau_vma *vma;
struct nvif_object ctxdma;
u64 addr;
} push;
/* TODO: this will be reworked in the near future */
bool accel_done;
void *fence;
struct {
int max;
int free;
int cur;
int put;
int ib_base;
int ib_max;
int ib_free;
int ib_put;
} dma;
u32 user_get_hi;
u32 user_get;
u32 user_put;
struct nvif_object user;
struct nvif_notify kill;
atomic_t killed;
};
int nouveau_channels_init(struct nouveau_drm *);
int nouveau_channel_new(struct nouveau_drm *, struct nvif_device *,
u32 arg0, u32 arg1, bool priv,
struct nouveau_channel **);
void nouveau_channel_del(struct nouveau_channel **);
int nouveau_channel_idle(struct nouveau_channel *);
extern int nouveau_vram_pushbuf;
#endif