xref: /aosp_15_r20/external/mesa3d/src/amd/vulkan/radv_buffer.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright © 2016 Red Hat.
3*61046927SAndroid Build Coastguard Worker  * Copyright © 2016 Bas Nieuwenhuizen
4*61046927SAndroid Build Coastguard Worker  *
5*61046927SAndroid Build Coastguard Worker  * based in part on anv driver which is:
6*61046927SAndroid Build Coastguard Worker  * Copyright © 2015 Intel Corporation
7*61046927SAndroid Build Coastguard Worker  *
8*61046927SAndroid Build Coastguard Worker  * SPDX-License-Identifier: MIT
9*61046927SAndroid Build Coastguard Worker  */
10*61046927SAndroid Build Coastguard Worker 
11*61046927SAndroid Build Coastguard Worker #ifndef RADV_BUFFER_H
12*61046927SAndroid Build Coastguard Worker #define RADV_BUFFER_H
13*61046927SAndroid Build Coastguard Worker 
14*61046927SAndroid Build Coastguard Worker #include "radv_radeon_winsys.h"
15*61046927SAndroid Build Coastguard Worker 
16*61046927SAndroid Build Coastguard Worker #include "vk_buffer.h"
17*61046927SAndroid Build Coastguard Worker 
18*61046927SAndroid Build Coastguard Worker struct radv_device;
19*61046927SAndroid Build Coastguard Worker 
20*61046927SAndroid Build Coastguard Worker struct radv_buffer {
21*61046927SAndroid Build Coastguard Worker    struct vk_buffer vk;
22*61046927SAndroid Build Coastguard Worker 
23*61046927SAndroid Build Coastguard Worker    /* Set when bound */
24*61046927SAndroid Build Coastguard Worker    struct radeon_winsys_bo *bo;
25*61046927SAndroid Build Coastguard Worker    VkDeviceSize offset;
26*61046927SAndroid Build Coastguard Worker    uint64_t bo_va;
27*61046927SAndroid Build Coastguard Worker    uint64_t range;
28*61046927SAndroid Build Coastguard Worker };
29*61046927SAndroid Build Coastguard Worker 
30*61046927SAndroid Build Coastguard Worker VK_DEFINE_NONDISP_HANDLE_CASTS(radv_buffer, vk.base, VkBuffer, VK_OBJECT_TYPE_BUFFER)
31*61046927SAndroid Build Coastguard Worker 
32*61046927SAndroid Build Coastguard Worker void radv_buffer_init(struct radv_buffer *buffer, struct radv_device *device, struct radeon_winsys_bo *bo,
33*61046927SAndroid Build Coastguard Worker                       uint64_t size, uint64_t offset);
34*61046927SAndroid Build Coastguard Worker void radv_buffer_finish(struct radv_buffer *buffer);
35*61046927SAndroid Build Coastguard Worker 
36*61046927SAndroid Build Coastguard Worker VkResult radv_create_buffer(struct radv_device *device, const VkBufferCreateInfo *pCreateInfo,
37*61046927SAndroid Build Coastguard Worker                             const VkAllocationCallbacks *pAllocator, VkBuffer *pBuffer, bool is_internal);
38*61046927SAndroid Build Coastguard Worker 
39*61046927SAndroid Build Coastguard Worker VkResult radv_bo_create(struct radv_device *device, struct vk_object_base *object, uint64_t size, unsigned alignment,
40*61046927SAndroid Build Coastguard Worker                         enum radeon_bo_domain domain, enum radeon_bo_flag flags, unsigned priority, uint64_t address,
41*61046927SAndroid Build Coastguard Worker                         bool is_internal, struct radeon_winsys_bo **out_bo);
42*61046927SAndroid Build Coastguard Worker 
43*61046927SAndroid Build Coastguard Worker VkResult radv_bo_virtual_bind(struct radv_device *device, struct vk_object_base *object,
44*61046927SAndroid Build Coastguard Worker                               struct radeon_winsys_bo *parent, uint64_t offset, uint64_t size,
45*61046927SAndroid Build Coastguard Worker                               struct radeon_winsys_bo *bo, uint64_t bo_offset);
46*61046927SAndroid Build Coastguard Worker 
47*61046927SAndroid Build Coastguard Worker void radv_bo_destroy(struct radv_device *device, struct vk_object_base *object, struct radeon_winsys_bo *bo);
48*61046927SAndroid Build Coastguard Worker 
49*61046927SAndroid Build Coastguard Worker #endif /* RADV_BUFFER_H */
50