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)65radv_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