1 /* SPDX-License-Identifier: MIT */
4 #include <core/subdev.h>
7 #define NVKM_LTC_MAX_ZBC_COLOR_CNT 32
8 #define NVKM_LTC_MAX_ZBC_DEPTH_CNT 16
11 const struct nvkm_ltc_func *func;
12 struct nvkm_subdev subdev;
17 struct mutex mutex; /* serialises CBC operations */
20 struct nvkm_memory *tag_ram;
24 u32 zbc_color[NVKM_LTC_MAX_ZBC_COLOR_CNT][4];
27 u32 zbc_depth[NVKM_LTC_MAX_ZBC_DEPTH_CNT];
28 u32 zbc_stencil[NVKM_LTC_MAX_ZBC_DEPTH_CNT];
31 void nvkm_ltc_tags_clear(struct nvkm_device *, u32 first, u32 count);
33 int nvkm_ltc_zbc_color_get(struct nvkm_ltc *, int index, const u32[4]);
34 int nvkm_ltc_zbc_depth_get(struct nvkm_ltc *, int index, const u32);
35 int nvkm_ltc_zbc_stencil_get(struct nvkm_ltc *, int index, const u32);
37 void nvkm_ltc_invalidate(struct nvkm_ltc *);
38 void nvkm_ltc_flush(struct nvkm_ltc *);
40 int gf100_ltc_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_ltc **);
41 int gk104_ltc_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_ltc **);
42 int gm107_ltc_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_ltc **);
43 int gm200_ltc_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_ltc **);
44 int gp100_ltc_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_ltc **);
45 int gp102_ltc_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_ltc **);
46 int gp10b_ltc_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_ltc **);
47 int ga102_ltc_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_ltc **);