headers: drm: Sync with drm-next
[drm/libdrm.git] / radeon / radeon_cs_int.h
blobd906ad438ea041c7a366c158d808b519b82f33fd
2 #ifndef _RADEON_CS_INT_H_
3 #define _RADEON_CS_INT_H_
5 struct 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;
12 struct 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;
34 /* cs functions */
35 struct 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);
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);
60 struct radeon_cs_manager {
61 const 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;
67 #endif