1 /* 2 * Copyright © 2016 Red Hat. 3 * Copyright © 2016 Bas Nieuwenhuizen 4 * 5 * based in part on anv driver which is: 6 * Copyright © 2015 Intel Corporation 7 * 8 * SPDX-License-Identifier: MIT 9 */ 10 11 #ifndef RADV_DEVICE_MEMORY_H 12 #define RADV_DEVICE_MEMORY_H 13 14 #include "vk_object.h" 15 16 #include "radv_android.h" 17 18 struct radv_device; 19 20 struct radv_device_memory { 21 struct vk_object_base base; 22 struct radeon_winsys_bo *bo; 23 /* for dedicated allocations */ 24 struct radv_image *image; 25 struct radv_buffer *buffer; 26 uint32_t heap_index; 27 uint64_t alloc_size; 28 void *map; 29 void *user_ptr; 30 31 #if RADV_SUPPORT_ANDROID_HARDWARE_BUFFER 32 struct AHardwareBuffer *android_hardware_buffer; 33 #endif 34 }; 35 36 VK_DEFINE_NONDISP_HANDLE_CASTS(radv_device_memory, base, VkDeviceMemory, VK_OBJECT_TYPE_DEVICE_MEMORY) 37 38 void radv_device_memory_init(struct radv_device_memory *mem, struct radv_device *device, struct radeon_winsys_bo *bo); 39 40 void radv_device_memory_finish(struct radv_device_memory *mem); 41 42 void radv_free_memory(struct radv_device *device, const VkAllocationCallbacks *pAllocator, 43 struct radv_device_memory *mem); 44 45 VkResult radv_alloc_memory(struct radv_device *device, const VkMemoryAllocateInfo *pAllocateInfo, 46 const VkAllocationCallbacks *pAllocator, VkDeviceMemory *pMem, bool is_internal); 47 48 #endif /* RADV_DEVICE_MEMORY_H */ 49