xref: /dflybsd-src/sys/dev/drm/radeon/r100_track.h (revision 57e252bfa9ffec9f583f486376e43c8b2c0b8809)
1*926deccbSFrançois Tigeot 
2*926deccbSFrançois Tigeot #define R100_TRACK_MAX_TEXTURE 3
3*926deccbSFrançois Tigeot #define R200_TRACK_MAX_TEXTURE 6
4*926deccbSFrançois Tigeot #define R300_TRACK_MAX_TEXTURE 16
5*926deccbSFrançois Tigeot 
6*926deccbSFrançois Tigeot #define R100_MAX_CB 1
7*926deccbSFrançois Tigeot #define R300_MAX_CB 4
8*926deccbSFrançois Tigeot 
9*926deccbSFrançois Tigeot /*
10*926deccbSFrançois Tigeot  * CS functions
11*926deccbSFrançois Tigeot  */
12*926deccbSFrançois Tigeot struct r100_cs_track_cb {
13*926deccbSFrançois Tigeot 	struct radeon_bo	*robj;
14*926deccbSFrançois Tigeot 	unsigned		pitch;
15*926deccbSFrançois Tigeot 	unsigned		cpp;
16*926deccbSFrançois Tigeot 	unsigned		offset;
17*926deccbSFrançois Tigeot };
18*926deccbSFrançois Tigeot 
19*926deccbSFrançois Tigeot struct r100_cs_track_array {
20*926deccbSFrançois Tigeot 	struct radeon_bo	*robj;
21*926deccbSFrançois Tigeot 	unsigned		esize;
22*926deccbSFrançois Tigeot };
23*926deccbSFrançois Tigeot 
24*926deccbSFrançois Tigeot struct r100_cs_cube_info {
25*926deccbSFrançois Tigeot 	struct radeon_bo	*robj;
26*926deccbSFrançois Tigeot 	unsigned		offset;
27*926deccbSFrançois Tigeot 	unsigned		width;
28*926deccbSFrançois Tigeot 	unsigned		height;
29*926deccbSFrançois Tigeot };
30*926deccbSFrançois Tigeot 
31*926deccbSFrançois Tigeot #define R100_TRACK_COMP_NONE   0
32*926deccbSFrançois Tigeot #define R100_TRACK_COMP_DXT1   1
33*926deccbSFrançois Tigeot #define R100_TRACK_COMP_DXT35  2
34*926deccbSFrançois Tigeot 
35*926deccbSFrançois Tigeot struct r100_cs_track_texture {
36*926deccbSFrançois Tigeot 	struct radeon_bo	*robj;
37*926deccbSFrançois Tigeot 	struct r100_cs_cube_info cube_info[5]; /* info for 5 non-primary faces */
38*926deccbSFrançois Tigeot 	unsigned		pitch;
39*926deccbSFrançois Tigeot 	unsigned		width;
40*926deccbSFrançois Tigeot 	unsigned		height;
41*926deccbSFrançois Tigeot 	unsigned		num_levels;
42*926deccbSFrançois Tigeot 	unsigned		cpp;
43*926deccbSFrançois Tigeot 	unsigned		tex_coord_type;
44*926deccbSFrançois Tigeot 	unsigned		txdepth;
45*926deccbSFrançois Tigeot 	unsigned		width_11;
46*926deccbSFrançois Tigeot 	unsigned		height_11;
47*926deccbSFrançois Tigeot 	bool			use_pitch;
48*926deccbSFrançois Tigeot 	bool			enabled;
49*926deccbSFrançois Tigeot 	bool                    lookup_disable;
50*926deccbSFrançois Tigeot 	bool			roundup_w;
51*926deccbSFrançois Tigeot 	bool			roundup_h;
52*926deccbSFrançois Tigeot 	unsigned                compress_format;
53*926deccbSFrançois Tigeot };
54*926deccbSFrançois Tigeot 
55*926deccbSFrançois Tigeot struct r100_cs_track {
56*926deccbSFrançois Tigeot 	unsigned			num_cb;
57*926deccbSFrançois Tigeot 	unsigned                        num_texture;
58*926deccbSFrançois Tigeot 	unsigned			maxy;
59*926deccbSFrançois Tigeot 	unsigned			vtx_size;
60*926deccbSFrançois Tigeot 	unsigned			vap_vf_cntl;
61*926deccbSFrançois Tigeot 	unsigned			vap_alt_nverts;
62*926deccbSFrançois Tigeot 	unsigned			immd_dwords;
63*926deccbSFrançois Tigeot 	unsigned			num_arrays;
64*926deccbSFrançois Tigeot 	unsigned			max_indx;
65*926deccbSFrançois Tigeot 	unsigned			color_channel_mask;
66*926deccbSFrançois Tigeot 	struct r100_cs_track_array	arrays[16];
67*926deccbSFrançois Tigeot 	struct r100_cs_track_cb 	cb[R300_MAX_CB];
68*926deccbSFrançois Tigeot 	struct r100_cs_track_cb 	zb;
69*926deccbSFrançois Tigeot 	struct r100_cs_track_cb 	aa;
70*926deccbSFrançois Tigeot 	struct r100_cs_track_texture	textures[R300_TRACK_MAX_TEXTURE];
71*926deccbSFrançois Tigeot 	bool				z_enabled;
72*926deccbSFrançois Tigeot 	bool                            separate_cube;
73*926deccbSFrançois Tigeot 	bool				zb_cb_clear;
74*926deccbSFrançois Tigeot 	bool				blend_read_enable;
75*926deccbSFrançois Tigeot 	bool				cb_dirty;
76*926deccbSFrançois Tigeot 	bool				zb_dirty;
77*926deccbSFrançois Tigeot 	bool				tex_dirty;
78*926deccbSFrançois Tigeot 	bool				aa_dirty;
79*926deccbSFrançois Tigeot 	bool				aaresolve;
80*926deccbSFrançois Tigeot };
81*926deccbSFrançois Tigeot 
82*926deccbSFrançois Tigeot int r100_cs_track_check(struct radeon_device *rdev, struct r100_cs_track *track);
83*926deccbSFrançois Tigeot void r100_cs_track_clear(struct radeon_device *rdev, struct r100_cs_track *track);
84*926deccbSFrançois Tigeot 
85*926deccbSFrançois Tigeot int r100_cs_packet_parse_vline(struct radeon_cs_parser *p);
86*926deccbSFrançois Tigeot 
87*926deccbSFrançois Tigeot int r200_packet0_check(struct radeon_cs_parser *p,
88*926deccbSFrançois Tigeot 		       struct radeon_cs_packet *pkt,
89*926deccbSFrançois Tigeot 		       unsigned idx, unsigned reg);
90*926deccbSFrançois Tigeot 
91*926deccbSFrançois Tigeot int r100_reloc_pitch_offset(struct radeon_cs_parser *p,
92*926deccbSFrançois Tigeot 			    struct radeon_cs_packet *pkt,
93*926deccbSFrançois Tigeot 			    unsigned idx,
94*926deccbSFrançois Tigeot 			    unsigned reg);
95*926deccbSFrançois Tigeot int r100_packet3_load_vbpntr(struct radeon_cs_parser *p,
96*926deccbSFrançois Tigeot 			     struct radeon_cs_packet *pkt,
97*926deccbSFrançois Tigeot 			     int idx);
98