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