#ifndef _RADEON_CS_INT_H_ #define _RADEON_CS_INT_H_ struct radeon_cs_space_check { struct radeon_bo_int *bo; uint32_t read_domains; uint32_t write_domain; uint32_t new_accounted; }; struct radeon_cs_int { /* keep first two in same place */ uint32_t *packets; unsigned cdw; unsigned ndw; unsigned section_ndw; unsigned section_cdw; /* private members */ struct radeon_cs_manager *csm; void *relocs; unsigned crelocs; unsigned relocs_total_size; const char *section_file; const char *section_func; int section_line; struct radeon_cs_space_check bos[MAX_SPACE_BOS]; int bo_count; void (*space_flush_fn)(void *); void *space_flush_data; uint32_t id; }; /* cs functions */ struct radeon_cs_funcs { struct radeon_cs_int *(*cs_create)(struct radeon_cs_manager *csm, uint32_t ndw); int (*cs_write_reloc)(struct radeon_cs_int *cs, struct radeon_bo *bo, uint32_t read_domain, uint32_t write_domain, uint32_t flags); int (*cs_begin)(struct radeon_cs_int *cs, uint32_t ndw, const char *file, const char *func, int line); int (*cs_end)(struct radeon_cs_int *cs, const char *file, const char *func, int line); int (*cs_emit)(struct radeon_cs_int *cs); int (*cs_destroy)(struct radeon_cs_int *cs); int (*cs_erase)(struct radeon_cs_int *cs); int (*cs_need_flush)(struct radeon_cs_int *cs); void (*cs_print)(struct radeon_cs_int *cs, FILE *file); }; struct radeon_cs_manager { const struct radeon_cs_funcs *funcs; int fd; int32_t vram_limit, gart_limit; int32_t vram_write_used, gart_write_used; int32_t read_used; }; #endif