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