drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.h

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.h

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.h
Extension
.h
Size
16307 bytes
Lines
449
Domain
Driver Families
Bucket
drivers/gpu
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct gf100_gr_zbc_color {
	u32 format;
	u32 ds[4];
	u32 l2[4];
};

struct gf100_gr_zbc_depth {
	u32 format;
	u32 ds;
	u32 l2;
};

struct gf100_gr_zbc_stencil {
	u32 format;
	u32 ds;
	u32 l2;
};

struct gf100_gr {
	const struct gf100_gr_func *func;
	struct nvkm_gr base;

	struct {
		struct nvkm_falcon falcon;
		struct nvkm_blob inst;
		struct nvkm_blob data;

		struct mutex mutex;
		u32 disable;
	} fecs;

	struct {
		struct nvkm_falcon falcon;
		struct nvkm_blob inst;
		struct nvkm_blob data;
	} gpccs;

	bool firmware;

	/*
	 * Used if the register packs are loaded from NVIDIA fw instead of
	 * using hardcoded arrays. To be allocated with vzalloc().
	 */
	struct gf100_gr_pack *sw_nonctx;
	struct gf100_gr_pack *sw_nonctx1;
	struct gf100_gr_pack *sw_nonctx2;
	struct gf100_gr_pack *sw_nonctx3;
	struct gf100_gr_pack *sw_nonctx4;
	struct gf100_gr_pack *sw_ctx;
	struct gf100_gr_pack *bundle;
	struct gf100_gr_pack *bundle_veid;
	struct gf100_gr_pack *bundle64;
	struct gf100_gr_pack *method;

	struct gf100_gr_zbc_color zbc_color[NVKM_LTC_MAX_ZBC_COLOR_CNT];
	struct gf100_gr_zbc_depth zbc_depth[NVKM_LTC_MAX_ZBC_DEPTH_CNT];
	struct gf100_gr_zbc_stencil zbc_stencil[NVKM_LTC_MAX_ZBC_DEPTH_CNT];

	u8 rop_nr;
	u8 gpc_nr;
	u8 tpc_nr[GPC_MAX];
	u8 tpc_max;
	u8 tpc_total;
	u8 ppc_nr[GPC_MAX];
	u8 ppc_mask[GPC_MAX];
	u8 ppc_tpc_mask[GPC_MAX][4];
	u8 ppc_tpc_nr[GPC_MAX][4];
	u8 ppc_tpc_min;
	u8 ppc_tpc_max;
	u8 ppc_total;

	struct nvkm_memory *pagepool;
	struct nvkm_memory *bundle_cb;
	struct nvkm_memory *attrib_cb;
	struct nvkm_memory *unknown;

	u8 screen_tile_row_offset;
	u8 tile[TPC_MAX];

	struct {
		u8 gpc;
		u8 tpc;
	} sm[TPC_MAX];
	u8 sm_nr;

	u32  size;
	u32 *data;
	u32 size_zcull;
	u32 size_pm;
};

Annotation

Implementation Notes