2015-01-14 15:06:26 +10:00
|
|
|
#ifndef __NVKM_LTC_H__
|
|
|
|
|
#define __NVKM_LTC_H__
|
2014-08-10 04:10:28 +10:00
|
|
|
#include <core/subdev.h>
|
2015-01-14 15:06:26 +10:00
|
|
|
struct nvkm_mm_node;
|
2014-08-10 04:10:28 +10:00
|
|
|
|
2015-01-14 15:06:26 +10:00
|
|
|
#define NVKM_LTC_MAX_ZBC_CNT 16
|
2014-08-10 04:10:28 +10:00
|
|
|
|
2015-01-14 15:06:26 +10:00
|
|
|
struct nvkm_ltc {
|
|
|
|
|
struct nvkm_subdev base;
|
2014-08-10 04:10:28 +10:00
|
|
|
|
2015-01-14 15:06:26 +10:00
|
|
|
int (*tags_alloc)(struct nvkm_ltc *, u32 count,
|
|
|
|
|
struct nvkm_mm_node **);
|
|
|
|
|
void (*tags_free)(struct nvkm_ltc *, struct nvkm_mm_node **);
|
|
|
|
|
void (*tags_clear)(struct nvkm_ltc *, u32 first, u32 count);
|
2014-08-10 04:10:28 +10:00
|
|
|
|
|
|
|
|
int zbc_min;
|
|
|
|
|
int zbc_max;
|
2015-01-14 15:06:26 +10:00
|
|
|
int (*zbc_color_get)(struct nvkm_ltc *, int index, const u32[4]);
|
|
|
|
|
int (*zbc_depth_get)(struct nvkm_ltc *, int index, const u32);
|
2014-08-10 04:10:28 +10:00
|
|
|
};
|
|
|
|
|
|
2015-01-14 15:06:26 +10:00
|
|
|
static inline struct nvkm_ltc *
|
|
|
|
|
nvkm_ltc(void *obj)
|
2014-08-10 04:10:28 +10:00
|
|
|
{
|
2015-01-14 15:06:26 +10:00
|
|
|
return (void *)nvkm_subdev(obj, NVDEV_SUBDEV_LTC);
|
2014-08-10 04:10:28 +10:00
|
|
|
}
|
|
|
|
|
|
2015-01-14 15:06:26 +10:00
|
|
|
extern struct nvkm_oclass *gf100_ltc_oclass;
|
|
|
|
|
extern struct nvkm_oclass *gk104_ltc_oclass;
|
|
|
|
|
extern struct nvkm_oclass *gm107_ltc_oclass;
|
2014-08-10 04:10:28 +10:00
|
|
|
#endif
|