1 #ifndef __NVKM_LTC_H__ 2 #define __NVKM_LTC_H__ 3 #include <core/subdev.h> 4 struct nvkm_mm_node; 5 6 #define NVKM_LTC_MAX_ZBC_CNT 16 7 8 struct nvkm_ltc { 9 struct nvkm_subdev base; 10 11 int (*tags_alloc)(struct nvkm_ltc *, u32 count, 12 struct nvkm_mm_node **); 13 void (*tags_free)(struct nvkm_ltc *, struct nvkm_mm_node **); 14 void (*tags_clear)(struct nvkm_ltc *, u32 first, u32 count); 15 16 int zbc_min; 17 int zbc_max; 18 int (*zbc_color_get)(struct nvkm_ltc *, int index, const u32[4]); 19 int (*zbc_depth_get)(struct nvkm_ltc *, int index, const u32); 20 }; 21 22 static inline struct nvkm_ltc * 23 nvkm_ltc(void *obj) 24 { 25 return (void *)nvkm_subdev(obj, NVDEV_SUBDEV_LTC); 26 } 27 28 extern struct nvkm_oclass *gf100_ltc_oclass; 29 extern struct nvkm_oclass *gk104_ltc_oclass; 30 extern struct nvkm_oclass *gm107_ltc_oclass; 31 #endif 32