xref: /aosp_15_r20/external/mesa3d/src/amd/vulkan/radv_device_memory.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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