1 /* SPDX-License-Identifier: MIT */ 2 #ifndef __NVKM_RM_GR_H__ 3 #define __NVKM_RM_GR_H__ 4 #include "engine.h" 5 6 #include <core/object.h> 7 #include <engine/gr.h> 8 9 #define R515_GR_MAX_CTXBUFS 9 10 11 struct r535_gr_chan { 12 struct nvkm_object object; 13 struct r535_gr *gr; 14 15 struct nvkm_vmm *vmm; 16 struct nvkm_chan *chan; 17 18 struct nvkm_memory *mem[R515_GR_MAX_CTXBUFS]; 19 struct nvkm_vma *vma[R515_GR_MAX_CTXBUFS]; 20 }; 21 22 struct r535_gr { 23 struct nvkm_gr base; 24 25 struct { 26 u16 bufferId; 27 u32 size; 28 u8 page; 29 u8 align; 30 bool global; 31 bool init; 32 bool ro; 33 } ctxbuf[R515_GR_MAX_CTXBUFS]; 34 int ctxbuf_nr; 35 36 struct nvkm_memory *ctxbuf_mem[R515_GR_MAX_CTXBUFS]; 37 38 struct { 39 int chid; 40 struct nvkm_memory *inst; 41 struct nvkm_vmm *vmm; 42 struct nvkm_gsp_object chan; 43 struct nvkm_gsp_object threed; 44 struct { 45 struct nvkm_memory *mem[R515_GR_MAX_CTXBUFS]; 46 struct nvkm_vma *vma[R515_GR_MAX_CTXBUFS]; 47 } ctxbuf; 48 bool enabled; 49 } scrubber; 50 }; 51 52 struct NV2080_CTRL_INTERNAL_ENGINE_CONTEXT_BUFFER_INFO; 53 void r535_gr_get_ctxbuf_info(struct r535_gr *, int i, 54 struct NV2080_CTRL_INTERNAL_ENGINE_CONTEXT_BUFFER_INFO *); 55 #endif 56