// // Copyright 2020 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // vma_allocator_wrapper.h: // Hides VMA functions so we can use separate warning sets. // #ifndef LIBANGLE_RENDERER_VULKAN_VK_MEM_ALLOC_WRAPPER_H_ #define LIBANGLE_RENDERER_VULKAN_VK_MEM_ALLOC_WRAPPER_H_ #include "common/vulkan/vk_headers.h" VK_DEFINE_HANDLE(VmaAllocator) VK_DEFINE_HANDLE(VmaAllocation) namespace vma { VkResult InitAllocator(VkPhysicalDevice physicalDevice, VkDevice device, VkInstance instance, uint32_t apiVersion, VkDeviceSize preferredLargeHeapBlockSize, VmaAllocator *pAllocator); void DestroyAllocator(VmaAllocator allocator); void FreeMemory(VmaAllocator allocator, VmaAllocation allocation); VkResult CreateBuffer(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, VkMemoryPropertyFlags requiredFlags, VkMemoryPropertyFlags preferredFlags, bool persistentlyMappedBuffers, uint32_t *pMemoryTypeIndexOut, VkBuffer *pBuffer, VmaAllocation *pAllocation); VkResult FindMemoryTypeIndexForBufferInfo(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, VkMemoryPropertyFlags requiredFlags, VkMemoryPropertyFlags preferredFlags, bool persistentlyMappedBuffers, uint32_t *pMemoryTypeIndexOut); void GetMemoryTypeProperties(VmaAllocator allocator, uint32_t memoryTypeIndex, VkMemoryPropertyFlags *pFlags); VkResult MapMemory(VmaAllocator allocator, VmaAllocation allocation, void **ppData); void UnmapMemory(VmaAllocator allocator, VmaAllocation allocation); void FlushAllocation(VmaAllocator allocator, VmaAllocation allocation, VkDeviceSize offset, VkDeviceSize size); void InvalidateAllocation(VmaAllocator allocator, VmaAllocation allocation, VkDeviceSize offset, VkDeviceSize size); void BuildStatsString(VmaAllocator allocator, char **statsString, VkBool32 detailedMap); void FreeStatsString(VmaAllocator allocator, char *statsString); } // namespace vma #endif // LIBANGLE_RENDERER_VULKAN_VK_MEM_ALLOC_WRAPPER_H_