• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright © 2016 Red Hat.
3  * Copyright © 2016 Bas Nieuwenhuizen
4  *
5  * based on amdgpu winsys.
6  * Copyright © 2011 Marek Olšák <maraeo@gmail.com>
7  * Copyright © 2015 Advanced Micro Devices, Inc.
8  *
9  * SPDX-License-Identifier: MIT
10  */
11 
12 #ifndef RADV_AMDGPU_BO_H
13 #define RADV_AMDGPU_BO_H
14 
15 #include "radv_amdgpu_winsys.h"
16 
17 struct radv_amdgpu_winsys_bo_log {
18    struct list_head list;
19    uint64_t va;
20    uint64_t size;
21    uint64_t timestamp; /* CPU timestamp */
22    uint64_t mapped_va;
23    uint8_t is_virtual : 1;
24    uint8_t destroyed : 1;
25    uint8_t virtual_mapping : 1;
26 };
27 
28 struct radv_amdgpu_map_range {
29    uint64_t offset;
30    uint64_t size;
31    struct radv_amdgpu_winsys_bo *bo;
32    uint64_t bo_offset;
33 };
34 
35 struct radv_amdgpu_winsys_bo {
36    struct radeon_winsys_bo base;
37    amdgpu_va_handle va_handle;
38    bool is_virtual;
39    uint8_t priority;
40 
41    union {
42       /* physical bo */
43       struct {
44          ac_drm_bo bo;
45          uint32_t bo_handle;
46 
47          void *cpu_map;
48       };
49       /* virtual bo */
50       struct {
51          struct u_rwlock lock;
52 
53          struct radv_amdgpu_map_range *ranges;
54          uint32_t range_count;
55          uint32_t range_capacity;
56 
57          struct radv_amdgpu_winsys_bo **bos;
58          uint32_t bo_count;
59          uint32_t bo_capacity;
60       };
61    };
62 };
63 
64 static inline struct radv_amdgpu_winsys_bo *
radv_amdgpu_winsys_bo(struct radeon_winsys_bo * bo)65 radv_amdgpu_winsys_bo(struct radeon_winsys_bo *bo)
66 {
67    return (struct radv_amdgpu_winsys_bo *)bo;
68 }
69 
70 void radv_amdgpu_bo_init_functions(struct radv_amdgpu_winsys *ws);
71 
72 #endif /* RADV_AMDGPU_BO_H */
73