drivers/gpu/drm/vc4/vc4_packet.h

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/vc4/vc4_packet.h

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/vc4/vc4_packet.h
Extension
.h
Size
16206 bytes
Lines
400
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

#ifndef VC4_PACKET_H
#define VC4_PACKET_H

#include "vc4_regs.h" /* for VC4_MASK, VC4_GET_FIELD, VC4_SET_FIELD */

enum vc4_packet {
	VC4_PACKET_HALT = 0,
	VC4_PACKET_NOP = 1,

	VC4_PACKET_FLUSH = 4,
	VC4_PACKET_FLUSH_ALL = 5,
	VC4_PACKET_START_TILE_BINNING = 6,
	VC4_PACKET_INCREMENT_SEMAPHORE = 7,
	VC4_PACKET_WAIT_ON_SEMAPHORE = 8,

	VC4_PACKET_BRANCH = 16,
	VC4_PACKET_BRANCH_TO_SUB_LIST = 17,

	VC4_PACKET_STORE_MS_TILE_BUFFER = 24,
	VC4_PACKET_STORE_MS_TILE_BUFFER_AND_EOF = 25,
	VC4_PACKET_STORE_FULL_RES_TILE_BUFFER = 26,
	VC4_PACKET_LOAD_FULL_RES_TILE_BUFFER = 27,
	VC4_PACKET_STORE_TILE_BUFFER_GENERAL = 28,
	VC4_PACKET_LOAD_TILE_BUFFER_GENERAL = 29,

	VC4_PACKET_GL_INDEXED_PRIMITIVE = 32,
	VC4_PACKET_GL_ARRAY_PRIMITIVE = 33,

	VC4_PACKET_COMPRESSED_PRIMITIVE = 48,
	VC4_PACKET_CLIPPED_COMPRESSED_PRIMITIVE = 49,

	VC4_PACKET_PRIMITIVE_LIST_FORMAT = 56,

	VC4_PACKET_GL_SHADER_STATE = 64,
	VC4_PACKET_NV_SHADER_STATE = 65,
	VC4_PACKET_VG_SHADER_STATE = 66,

	VC4_PACKET_CONFIGURATION_BITS = 96,
	VC4_PACKET_FLAT_SHADE_FLAGS = 97,
	VC4_PACKET_POINT_SIZE = 98,
	VC4_PACKET_LINE_WIDTH = 99,
	VC4_PACKET_RHT_X_BOUNDARY = 100,
	VC4_PACKET_DEPTH_OFFSET = 101,
	VC4_PACKET_CLIP_WINDOW = 102,
	VC4_PACKET_VIEWPORT_OFFSET = 103,
	VC4_PACKET_Z_CLIPPING = 104,
	VC4_PACKET_CLIPPER_XY_SCALING = 105,
	VC4_PACKET_CLIPPER_Z_SCALING = 106,

	VC4_PACKET_TILE_BINNING_MODE_CONFIG = 112,
	VC4_PACKET_TILE_RENDERING_MODE_CONFIG = 113,
	VC4_PACKET_CLEAR_COLORS = 114,
	VC4_PACKET_TILE_COORDINATES = 115,

	/* Not an actual hardware packet -- this is what we use to put
	 * references to GEM bos in the command stream, since we need the u32
	 * int the actual address packet in order to store the offset from the
	 * start of the BO.
	 */
	VC4_PACKET_GEM_HANDLES = 254,
} __attribute__ ((__packed__));

#define VC4_PACKET_HALT_SIZE						1
#define VC4_PACKET_NOP_SIZE						1
#define VC4_PACKET_FLUSH_SIZE						1
#define VC4_PACKET_FLUSH_ALL_SIZE					1
#define VC4_PACKET_START_TILE_BINNING_SIZE				1
#define VC4_PACKET_INCREMENT_SEMAPHORE_SIZE				1
#define VC4_PACKET_WAIT_ON_SEMAPHORE_SIZE				1
#define VC4_PACKET_BRANCH_SIZE						5
#define VC4_PACKET_BRANCH_TO_SUB_LIST_SIZE				5
#define VC4_PACKET_STORE_MS_TILE_BUFFER_SIZE				1
#define VC4_PACKET_STORE_MS_TILE_BUFFER_AND_EOF_SIZE			1
#define VC4_PACKET_STORE_FULL_RES_TILE_BUFFER_SIZE			5
#define VC4_PACKET_LOAD_FULL_RES_TILE_BUFFER_SIZE			5
#define VC4_PACKET_STORE_TILE_BUFFER_GENERAL_SIZE			7
#define VC4_PACKET_LOAD_TILE_BUFFER_GENERAL_SIZE			7
#define VC4_PACKET_GL_INDEXED_PRIMITIVE_SIZE				14
#define VC4_PACKET_GL_ARRAY_PRIMITIVE_SIZE				10
#define VC4_PACKET_COMPRESSED_PRIMITIVE_SIZE				1
#define VC4_PACKET_CLIPPED_COMPRESSED_PRIMITIVE_SIZE			1
#define VC4_PACKET_PRIMITIVE_LIST_FORMAT_SIZE				2
#define VC4_PACKET_GL_SHADER_STATE_SIZE					5
#define VC4_PACKET_NV_SHADER_STATE_SIZE					5
#define VC4_PACKET_VG_SHADER_STATE_SIZE					5
#define VC4_PACKET_CONFIGURATION_BITS_SIZE				4
#define VC4_PACKET_FLAT_SHADE_FLAGS_SIZE				5
#define VC4_PACKET_POINT_SIZE_SIZE					5
#define VC4_PACKET_LINE_WIDTH_SIZE					5
#define VC4_PACKET_RHT_X_BOUNDARY_SIZE					3

Annotation

Implementation Notes