mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-03 02:10:24 +01:00
1. struct vn_buffer_cache_entry for buffer memory requirements 2. struct vn_buffer_cache for all buffer related cached info 3. implement vn_buffer_cache_init 4. implement vn_buffer_cache_fini 5. empty vn_buffer_get_max_buffer_size 6. empty vn_buffer_cache_entries_create 7. implement vn_buffer_cache_entries_destroy 8. empty vn_buffer_cache_get_memory_requirements Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Chia-I Wu <olvaffe@gmail.com> Reviewed-by: Ryan Neph <ryanneph@google.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13428>
68 lines
1.7 KiB
C
68 lines
1.7 KiB
C
/*
|
|
* Copyright 2019 Google LLC
|
|
* SPDX-License-Identifier: MIT
|
|
*
|
|
* based in part on anv and radv which are:
|
|
* Copyright © 2015 Intel Corporation
|
|
* Copyright © 2016 Red Hat.
|
|
* Copyright © 2016 Bas Nieuwenhuizen
|
|
*/
|
|
|
|
#ifndef VN_BUFFER_H
|
|
#define VN_BUFFER_H
|
|
|
|
#include "vn_common.h"
|
|
|
|
struct vn_buffer_memory_requirements {
|
|
VkMemoryRequirements2 memory;
|
|
VkMemoryDedicatedRequirements dedicated;
|
|
};
|
|
|
|
struct vn_buffer_cache_entry {
|
|
const VkBufferCreateInfo *create_info;
|
|
|
|
struct vn_buffer_memory_requirements requirements;
|
|
};
|
|
|
|
struct vn_buffer_cache {
|
|
/* cache memory type requirement for AHB backed VkBuffer */
|
|
uint32_t ahb_mem_type_bits;
|
|
|
|
uint64_t max_buffer_size;
|
|
|
|
/* cache memory requirements for common native buffer infos */
|
|
struct vn_buffer_cache_entry *entries;
|
|
uint32_t entry_count;
|
|
};
|
|
|
|
struct vn_buffer {
|
|
struct vn_object_base base;
|
|
|
|
struct vn_buffer_memory_requirements requirements;
|
|
};
|
|
VK_DEFINE_NONDISP_HANDLE_CASTS(vn_buffer,
|
|
base.base,
|
|
VkBuffer,
|
|
VK_OBJECT_TYPE_BUFFER)
|
|
|
|
struct vn_buffer_view {
|
|
struct vn_object_base base;
|
|
};
|
|
VK_DEFINE_NONDISP_HANDLE_CASTS(vn_buffer_view,
|
|
base.base,
|
|
VkBufferView,
|
|
VK_OBJECT_TYPE_BUFFER_VIEW)
|
|
|
|
VkResult
|
|
vn_buffer_create(struct vn_device *dev,
|
|
const VkBufferCreateInfo *create_info,
|
|
const VkAllocationCallbacks *alloc,
|
|
struct vn_buffer **out_buf);
|
|
|
|
VkResult
|
|
vn_buffer_cache_init(struct vn_device *dev);
|
|
|
|
void
|
|
vn_buffer_cache_fini(struct vn_device *dev);
|
|
|
|
#endif /* VN_BUFFER_H */
|