Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
VkTestMemoryAllocator.h
Go to the documentation of this file.
1/*
2 * Copyright 2024 Google LLC
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef VkTestMemoryAllocator_DEFINED
9#define VkTestMemoryAllocator_DEFINED
10
11#include <vk_mem_alloc.h>
13
14namespace skgpu {
15class VulkanExtensions;
16struct VulkanInterface;
17} // namespace skgpu
18
19namespace sk_gpu_test {
20
21// A test-only Vulkan memory allocator. Based on
22// https://skia.googlesource.com/skia/+/c3fbd20fbc7d3662dd31a0e4139226d2951d1ae4/src/gpu/vk/VulkanAMDMemoryAllocator.h.
24public:
26 VkPhysicalDevice physicalDevice,
27 VkDevice device,
28 uint32_t physicalDeviceVersion,
29 const skgpu::VulkanExtensions* extensions,
30 const skgpu::VulkanInterface* interface);
31
32 ~VkTestMemoryAllocator() override;
33
35 uint32_t allocationPropertyFlags,
37
40 uint32_t allocationPropertyFlags,
42
43 void freeMemory(const skgpu::VulkanBackendMemory&) override;
44
46
47 VkResult mapMemory(const skgpu::VulkanBackendMemory&, void** data) override;
48 void unmapMemory(const skgpu::VulkanBackendMemory&) override;
49
52 VkDeviceSize size) override;
55 VkDeviceSize size) override;
56
57 std::pair<uint64_t, uint64_t> totalAllocatedAndUsedMemory() const override;
58
59private:
60 VkTestMemoryAllocator(VmaAllocator allocator);
61
62 VmaAllocator fAllocator;
63};
64
65} // namespace sk_gpu_test
66
67#endif // VkTestMemoryAllocator_DEFINED
void unmapMemory(const skgpu::VulkanBackendMemory &) override
VkResult invalidateMemory(const skgpu::VulkanBackendMemory &, VkDeviceSize offset, VkDeviceSize size) override
VkResult flushMemory(const skgpu::VulkanBackendMemory &, VkDeviceSize offset, VkDeviceSize size) override
static sk_sp< VulkanMemoryAllocator > Make(VkInstance instance, VkPhysicalDevice physicalDevice, VkDevice device, uint32_t physicalDeviceVersion, const skgpu::VulkanExtensions *extensions, const skgpu::VulkanInterface *interface)
VkResult allocateBufferMemory(VkBuffer buffer, BufferUsage usage, uint32_t allocationPropertyFlags, skgpu::VulkanBackendMemory *) override
std::pair< uint64_t, uint64_t > totalAllocatedAndUsedMemory() const override
void getAllocInfo(const skgpu::VulkanBackendMemory &, skgpu::VulkanAlloc *) const override
VkResult mapMemory(const skgpu::VulkanBackendMemory &, void **data) override
VkResult allocateImageMemory(VkImage image, uint32_t allocationPropertyFlags, skgpu::VulkanBackendMemory *) override
void freeMemory(const skgpu::VulkanBackendMemory &) override
VkDevice device
Definition main.cc:53
VkInstance instance
Definition main.cc:48
sk_sp< SkImage > image
Definition examples.cpp:29
static const uint8_t buffer[]
intptr_t VulkanBackendMemory
Definition VulkanTypes.h:31
static void usage(char *argv0)
Point offset
uint64_t VkDeviceSize
Definition vulkan_core.h:96
VkResult