2015-01-14 12:34:00 +10:00
|
|
|
#ifndef __NVKM_SW_NV50_H__
|
|
|
|
|
#define __NVKM_SW_NV50_H__
|
|
|
|
|
#include <engine/sw.h>
|
2015-01-14 14:11:21 +10:00
|
|
|
#include <core/notify.h>
|
2015-01-14 12:34:00 +10:00
|
|
|
|
|
|
|
|
struct nv50_sw_oclass {
|
2015-01-14 15:32:15 +10:00
|
|
|
struct nvkm_oclass base;
|
|
|
|
|
struct nvkm_oclass *cclass;
|
|
|
|
|
struct nvkm_oclass *sclass;
|
2015-01-14 12:34:00 +10:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct nv50_sw_priv {
|
2015-01-14 15:32:15 +10:00
|
|
|
struct nvkm_sw base;
|
2015-01-14 12:34:00 +10:00
|
|
|
};
|
|
|
|
|
|
2015-01-14 15:32:15 +10:00
|
|
|
int nv50_sw_ctor(struct nvkm_object *, struct nvkm_object *,
|
|
|
|
|
struct nvkm_oclass *, void *, u32,
|
|
|
|
|
struct nvkm_object **);
|
2015-01-14 12:34:00 +10:00
|
|
|
|
|
|
|
|
struct nv50_sw_cclass {
|
2015-01-14 15:32:15 +10:00
|
|
|
struct nvkm_oclass base;
|
2015-01-14 12:34:00 +10:00
|
|
|
int (*vblank)(struct nvkm_notify *);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct nv50_sw_chan {
|
2015-01-14 15:32:15 +10:00
|
|
|
struct nvkm_sw_chan base;
|
2015-01-14 12:34:00 +10:00
|
|
|
struct {
|
|
|
|
|
struct nvkm_notify notify[4];
|
|
|
|
|
u32 channel;
|
|
|
|
|
u32 ctxdma;
|
|
|
|
|
u64 offset;
|
|
|
|
|
u32 value;
|
|
|
|
|
} vblank;
|
|
|
|
|
};
|
|
|
|
|
|
2015-01-14 15:32:15 +10:00
|
|
|
int nv50_sw_context_ctor(struct nvkm_object *,
|
|
|
|
|
struct nvkm_object *,
|
|
|
|
|
struct nvkm_oclass *, void *, u32,
|
|
|
|
|
struct nvkm_object **);
|
|
|
|
|
void nv50_sw_context_dtor(struct nvkm_object *);
|
2015-01-14 12:34:00 +10:00
|
|
|
|
2015-01-14 15:32:15 +10:00
|
|
|
int nv50_sw_mthd_vblsem_value(struct nvkm_object *, u32, void *, u32);
|
|
|
|
|
int nv50_sw_mthd_vblsem_release(struct nvkm_object *, u32, void *, u32);
|
|
|
|
|
int nv50_sw_mthd_flip(struct nvkm_object *, u32, void *, u32);
|
2015-01-14 12:34:00 +10:00
|
|
|
#endif
|