linux/drivers/gpu/drm/nouveau/include/nvkm/subdev/ltc.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: MIT */
   2#ifndef __NVKM_LTC_H__
   3#define __NVKM_LTC_H__
   4#include <core/subdev.h>
   5#include <core/mm.h>
   6
   7#define NVKM_LTC_MAX_ZBC_CNT 16
   8
   9struct nvkm_ltc {
  10        const struct nvkm_ltc_func *func;
  11        struct nvkm_subdev subdev;
  12
  13        u32 ltc_nr;
  14        u32 lts_nr;
  15
  16        u32 num_tags;
  17        u32 tag_base;
  18        struct nvkm_memory *tag_ram;
  19
  20        int zbc_min;
  21        int zbc_max;
  22        u32 zbc_color[NVKM_LTC_MAX_ZBC_CNT][4];
  23        u32 zbc_depth[NVKM_LTC_MAX_ZBC_CNT];
  24        u32 zbc_stencil[NVKM_LTC_MAX_ZBC_CNT];
  25};
  26
  27void nvkm_ltc_tags_clear(struct nvkm_device *, u32 first, u32 count);
  28
  29int nvkm_ltc_zbc_color_get(struct nvkm_ltc *, int index, const u32[4]);
  30int nvkm_ltc_zbc_depth_get(struct nvkm_ltc *, int index, const u32);
  31int nvkm_ltc_zbc_stencil_get(struct nvkm_ltc *, int index, const u32);
  32
  33void nvkm_ltc_invalidate(struct nvkm_ltc *);
  34void nvkm_ltc_flush(struct nvkm_ltc *);
  35
  36int gf100_ltc_new(struct nvkm_device *, int, struct nvkm_ltc **);
  37int gk104_ltc_new(struct nvkm_device *, int, struct nvkm_ltc **);
  38int gk20a_ltc_new(struct nvkm_device *, int, struct nvkm_ltc **);
  39int gm107_ltc_new(struct nvkm_device *, int, struct nvkm_ltc **);
  40int gm200_ltc_new(struct nvkm_device *, int, struct nvkm_ltc **);
  41int gp100_ltc_new(struct nvkm_device *, int, struct nvkm_ltc **);
  42int gp102_ltc_new(struct nvkm_device *, int, struct nvkm_ltc **);
  43int gp10b_ltc_new(struct nvkm_device *, int, struct nvkm_ltc **);
  44#endif
  45