summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/gr.h
blob: 24980f23aab91faea28289d47fe80e68f817f18b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/* SPDX-License-Identifier: MIT */
#ifndef __NVKM_RM_GR_H__
#define __NVKM_RM_GR_H__
#include "engine.h"

#include <core/object.h>
#include <engine/gr.h>

#define R515_GR_MAX_CTXBUFS 9

struct r535_gr_chan {
	struct nvkm_object object;
	struct r535_gr *gr;

	struct nvkm_vmm *vmm;
	struct nvkm_chan *chan;

	struct nvkm_memory *mem[R515_GR_MAX_CTXBUFS];
	struct nvkm_vma    *vma[R515_GR_MAX_CTXBUFS];
};

struct r535_gr {
	struct nvkm_gr base;

	struct {
		u16 bufferId;
		u32 size;
		u8  page;
		u8  align;
		bool global;
		bool init;
		bool ro;
	} ctxbuf[R515_GR_MAX_CTXBUFS];
	int ctxbuf_nr;

	struct nvkm_memory *ctxbuf_mem[R515_GR_MAX_CTXBUFS];

	struct {
		int chid;
		struct nvkm_memory *inst;
		struct nvkm_vmm *vmm;
		struct nvkm_gsp_object chan;
		struct nvkm_gsp_object threed;
		struct {
			struct nvkm_memory *mem[R515_GR_MAX_CTXBUFS];
			struct nvkm_vma    *vma[R515_GR_MAX_CTXBUFS];
		} ctxbuf;
		bool enabled;
	} scrubber;
};

struct NV2080_CTRL_INTERNAL_ENGINE_CONTEXT_BUFFER_INFO;
void r535_gr_get_ctxbuf_info(struct r535_gr *, int i,
			     struct NV2080_CTRL_INTERNAL_ENGINE_CONTEXT_BUFFER_INFO *);
#endif