1254885Sdumbbell#include <sys/cdefs.h> 2254885Sdumbbell__FBSDID("$FreeBSD$"); 3254885Sdumbbell 4254885Sdumbbell#define R100_TRACK_MAX_TEXTURE 3 5254885Sdumbbell#define R200_TRACK_MAX_TEXTURE 6 6254885Sdumbbell#define R300_TRACK_MAX_TEXTURE 16 7254885Sdumbbell 8254885Sdumbbell#define R100_MAX_CB 1 9254885Sdumbbell#define R300_MAX_CB 4 10254885Sdumbbell 11254885Sdumbbell/* 12254885Sdumbbell * CS functions 13254885Sdumbbell */ 14254885Sdumbbellstruct r100_cs_track_cb { 15254885Sdumbbell struct radeon_bo *robj; 16254885Sdumbbell unsigned pitch; 17254885Sdumbbell unsigned cpp; 18254885Sdumbbell unsigned offset; 19254885Sdumbbell}; 20254885Sdumbbell 21254885Sdumbbellstruct r100_cs_track_array { 22254885Sdumbbell struct radeon_bo *robj; 23254885Sdumbbell unsigned esize; 24254885Sdumbbell}; 25254885Sdumbbell 26254885Sdumbbellstruct r100_cs_cube_info { 27254885Sdumbbell struct radeon_bo *robj; 28254885Sdumbbell unsigned offset; 29254885Sdumbbell unsigned width; 30254885Sdumbbell unsigned height; 31254885Sdumbbell}; 32254885Sdumbbell 33254885Sdumbbell#define R100_TRACK_COMP_NONE 0 34254885Sdumbbell#define R100_TRACK_COMP_DXT1 1 35254885Sdumbbell#define R100_TRACK_COMP_DXT35 2 36254885Sdumbbell 37254885Sdumbbellstruct r100_cs_track_texture { 38254885Sdumbbell struct radeon_bo *robj; 39254885Sdumbbell struct r100_cs_cube_info cube_info[5]; /* info for 5 non-primary faces */ 40254885Sdumbbell unsigned pitch; 41254885Sdumbbell unsigned width; 42254885Sdumbbell unsigned height; 43254885Sdumbbell unsigned num_levels; 44254885Sdumbbell unsigned cpp; 45254885Sdumbbell unsigned tex_coord_type; 46254885Sdumbbell unsigned txdepth; 47254885Sdumbbell unsigned width_11; 48254885Sdumbbell unsigned height_11; 49254885Sdumbbell bool use_pitch; 50254885Sdumbbell bool enabled; 51254885Sdumbbell bool lookup_disable; 52254885Sdumbbell bool roundup_w; 53254885Sdumbbell bool roundup_h; 54254885Sdumbbell unsigned compress_format; 55254885Sdumbbell}; 56254885Sdumbbell 57254885Sdumbbellstruct r100_cs_track { 58254885Sdumbbell unsigned num_cb; 59254885Sdumbbell unsigned num_texture; 60254885Sdumbbell unsigned maxy; 61254885Sdumbbell unsigned vtx_size; 62254885Sdumbbell unsigned vap_vf_cntl; 63254885Sdumbbell unsigned vap_alt_nverts; 64254885Sdumbbell unsigned immd_dwords; 65254885Sdumbbell unsigned num_arrays; 66254885Sdumbbell unsigned max_indx; 67254885Sdumbbell unsigned color_channel_mask; 68254885Sdumbbell struct r100_cs_track_array arrays[16]; 69254885Sdumbbell struct r100_cs_track_cb cb[R300_MAX_CB]; 70254885Sdumbbell struct r100_cs_track_cb zb; 71254885Sdumbbell struct r100_cs_track_cb aa; 72254885Sdumbbell struct r100_cs_track_texture textures[R300_TRACK_MAX_TEXTURE]; 73254885Sdumbbell bool z_enabled; 74254885Sdumbbell bool separate_cube; 75254885Sdumbbell bool zb_cb_clear; 76254885Sdumbbell bool blend_read_enable; 77254885Sdumbbell bool cb_dirty; 78254885Sdumbbell bool zb_dirty; 79254885Sdumbbell bool tex_dirty; 80254885Sdumbbell bool aa_dirty; 81254885Sdumbbell bool aaresolve; 82254885Sdumbbell}; 83254885Sdumbbell 84254885Sdumbbellint r100_cs_track_check(struct radeon_device *rdev, struct r100_cs_track *track); 85254885Sdumbbellvoid r100_cs_track_clear(struct radeon_device *rdev, struct r100_cs_track *track); 86254885Sdumbbellint r100_cs_packet_next_reloc(struct radeon_cs_parser *p, 87254885Sdumbbell struct radeon_cs_reloc **cs_reloc); 88254885Sdumbbellvoid r100_cs_dump_packet(struct radeon_cs_parser *p, 89254885Sdumbbell struct radeon_cs_packet *pkt); 90254885Sdumbbell 91254885Sdumbbellint r100_cs_packet_parse_vline(struct radeon_cs_parser *p); 92254885Sdumbbell 93254885Sdumbbellint r200_packet0_check(struct radeon_cs_parser *p, 94254885Sdumbbell struct radeon_cs_packet *pkt, 95254885Sdumbbell unsigned idx, unsigned reg); 96254885Sdumbbell 97254885Sdumbbellint r100_reloc_pitch_offset(struct radeon_cs_parser *p, 98254885Sdumbbell struct radeon_cs_packet *pkt, 99254885Sdumbbell unsigned idx, 100254885Sdumbbell unsigned reg); 101254885Sdumbbellint r100_packet3_load_vbpntr(struct radeon_cs_parser *p, 102254885Sdumbbell struct radeon_cs_packet *pkt, 103254885Sdumbbell int idx); 104