1 2#ifndef _RADEON_CS_INT_H_ 3#define _RADEON_CS_INT_H_ 4 5struct radeon_cs_space_check { 6 struct radeon_bo_int *bo; 7 uint32_t read_domains; 8 uint32_t write_domain; 9 uint32_t new_accounted; 10}; 11 12struct radeon_cs_int { 13 /* keep first two in same place */ 14 uint32_t *packets; 15 unsigned cdw; 16 unsigned ndw; 17 unsigned section_ndw; 18 unsigned section_cdw; 19 /* private members */ 20 struct radeon_cs_manager *csm; 21 void *relocs; 22 unsigned crelocs; 23 unsigned relocs_total_size; 24 const char *section_file; 25 const char *section_func; 26 int section_line; 27 struct radeon_cs_space_check bos[MAX_SPACE_BOS]; 28 int bo_count; 29 void (*space_flush_fn)(void *); 30 void *space_flush_data; 31 uint32_t id; 32}; 33 34/* cs functions */ 35struct radeon_cs_funcs { 36 struct radeon_cs_int *(*cs_create)(struct radeon_cs_manager *csm, 37 uint32_t ndw); 38 int (*cs_write_reloc)(struct radeon_cs_int *cs, 39 struct radeon_bo *bo, 40 uint32_t read_domain, 41 uint32_t write_domain, 42 uint32_t flags); 43 int (*cs_begin)(struct radeon_cs_int *cs, 44 uint32_t ndw, 45 const char *file, 46 const char *func, 47 int line); 48 int (*cs_end)(struct radeon_cs_int *cs, 49 const char *file, const char *func, 50 int line); 51 52 53 int (*cs_emit)(struct radeon_cs_int *cs); 54 int (*cs_destroy)(struct radeon_cs_int *cs); 55 int (*cs_erase)(struct radeon_cs_int *cs); 56 int (*cs_need_flush)(struct radeon_cs_int *cs); 57 void (*cs_print)(struct radeon_cs_int *cs, FILE *file); 58}; 59 60struct radeon_cs_manager { 61 struct radeon_cs_funcs *funcs; 62 int fd; 63 int32_t vram_limit, gart_limit; 64 int32_t vram_write_used, gart_write_used; 65 int32_t read_used; 66}; 67#endif 68