1 /* 2 * Copyright © 2016 Red Hat. 3 * Copyright © 2016 Bas Nieuwenhuizen 4 * 5 * based on amdgpu winsys. 6 * Copyright © 2011 Marek Olšák <[email protected]> 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 uint8_t is_virtual : 1; 23 uint8_t destroyed : 1; 24 }; 25 26 struct radv_amdgpu_map_range { 27 uint64_t offset; 28 uint64_t size; 29 struct radv_amdgpu_winsys_bo *bo; 30 uint64_t bo_offset; 31 }; 32 33 struct radv_amdgpu_winsys_bo { 34 struct radeon_winsys_bo base; 35 amdgpu_va_handle va_handle; 36 bool is_virtual; 37 uint8_t priority; 38 39 union { 40 /* physical bo */ 41 struct { 42 amdgpu_bo_handle bo; 43 uint32_t bo_handle; 44 45 void *cpu_map; 46 }; 47 /* virtual bo */ 48 struct { 49 struct u_rwlock lock; 50 51 struct radv_amdgpu_map_range *ranges; 52 uint32_t range_count; 53 uint32_t range_capacity; 54 55 struct radv_amdgpu_winsys_bo **bos; 56 uint32_t bo_count; 57 uint32_t bo_capacity; 58 }; 59 }; 60 }; 61 62 static inline struct radv_amdgpu_winsys_bo * radv_amdgpu_winsys_bo(struct radeon_winsys_bo * bo)63radv_amdgpu_winsys_bo(struct radeon_winsys_bo *bo) 64 { 65 return (struct radv_amdgpu_winsys_bo *)bo; 66 } 67 68 void radv_amdgpu_bo_init_functions(struct radv_amdgpu_winsys *ws); 69 70 #endif /* RADV_AMDGPU_BO_H */ 71