]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blob - drivers/gpu/drm/nouveau/include/nvkm/subdev/ltc.h
drm/nouveau/ltc/gf100-: allocate tagram with nvkm_ram_get()
[mirror_ubuntu-bionic-kernel.git] / drivers / gpu / drm / nouveau / include / nvkm / subdev / ltc.h
1 #ifndef __NVKM_LTC_H__
2 #define __NVKM_LTC_H__
3 #include <core/subdev.h>
4 #include <core/mm.h>
5
6 #define NVKM_LTC_MAX_ZBC_CNT 16
7
8 struct nvkm_ltc {
9 const struct nvkm_ltc_func *func;
10 struct nvkm_subdev subdev;
11
12 u32 ltc_nr;
13 u32 lts_nr;
14
15 u32 num_tags;
16 u32 tag_base;
17 struct nvkm_memory *tag_ram;
18
19 int zbc_min;
20 int zbc_max;
21 u32 zbc_color[NVKM_LTC_MAX_ZBC_CNT][4];
22 u32 zbc_depth[NVKM_LTC_MAX_ZBC_CNT];
23 };
24
25 int nvkm_ltc_tags_alloc(struct nvkm_ltc *, u32 count, struct nvkm_mm_node **);
26 void nvkm_ltc_tags_free(struct nvkm_ltc *, struct nvkm_mm_node **);
27 void nvkm_ltc_tags_clear(struct nvkm_device *, u32 first, u32 count);
28
29 int nvkm_ltc_zbc_color_get(struct nvkm_ltc *, int index, const u32[4]);
30 int nvkm_ltc_zbc_depth_get(struct nvkm_ltc *, int index, const u32);
31
32 void nvkm_ltc_invalidate(struct nvkm_ltc *);
33 void nvkm_ltc_flush(struct nvkm_ltc *);
34
35 int gf100_ltc_new(struct nvkm_device *, int, struct nvkm_ltc **);
36 int gk104_ltc_new(struct nvkm_device *, int, struct nvkm_ltc **);
37 int gk20a_ltc_new(struct nvkm_device *, int, struct nvkm_ltc **);
38 int gm107_ltc_new(struct nvkm_device *, int, struct nvkm_ltc **);
39 int gm200_ltc_new(struct nvkm_device *, int, struct nvkm_ltc **);
40 int gp100_ltc_new(struct nvkm_device *, int, struct nvkm_ltc **);
41 #endif