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