#include <allocator_vk.h>
Definition at line 19 of file allocator_vk.h.
◆ ~AllocatorVK()
| impeller::AllocatorVK::~AllocatorVK |
( |
| ) |
|
|
overridedefault |
◆ DebugGetHeapUsage()
| Bytes impeller::AllocatorVK::DebugGetHeapUsage |
( |
| ) |
const |
|
overridevirtual |
Reimplemented from impeller::Allocator.
Definition at line 543 of file allocator_vk.cc.
544 auto count = memory_properties_.memoryHeapCount;
545 std::vector<VmaBudget> budgets(count);
546 vmaGetHeapBudgets(allocator_.get(), budgets.data());
547 size_t total_usage = 0;
548 for (
auto i = 0u; i < count; i++) {
549 const VmaBudget& budget = budgets[i];
550 total_usage += budget.usage;
552 return Bytes{
static_cast<double>(total_usage)};
AllocationSize< 1u > Bytes
◆ FindMemoryTypeIndex()
| int32_t impeller::AllocatorVK::FindMemoryTypeIndex |
( |
uint32_t |
memory_type_bits_requirement, |
|
|
vk::PhysicalDeviceMemoryProperties & |
memory_properties |
|
) |
| |
|
static |
Select a matching memory type for the given [memory_type_bits_requirement], or -1 if none is found.
This only returns memory types with deviceLocal allocations.
Definition at line 178 of file allocator_vk.cc.
181 int32_t type_index = -1;
182 vk::MemoryPropertyFlagBits required_properties =
183 vk::MemoryPropertyFlagBits::eDeviceLocal;
185 const uint32_t memory_count = memory_properties.memoryTypeCount;
186 for (uint32_t memory_index = 0; memory_index < memory_count; ++memory_index) {
187 const uint32_t memory_type_bits = (1 << memory_index);
188 const bool is_required_memory_type =
189 memory_type_bits_requirement & memory_type_bits;
191 const auto properties =
192 memory_properties.memoryTypes[memory_index].propertyFlags;
193 const bool has_required_properties =
194 (properties & required_properties) == required_properties;
196 if (is_required_memory_type && has_required_properties) {
197 return static_cast<int32_t
>(memory_index);
Referenced by impeller::ImportVKDeviceMemoryFromAndroidHarwareBuffer(), and impeller::testing::TEST().
◆ ToVKImageUsageFlags()
Definition at line 204 of file allocator_vk.cc.
209 vk::ImageUsageFlags vk_usage;
216 if (supports_memoryless_textures) {
217 vk_usage |= vk::ImageUsageFlagBits::eTransientAttachment;
224 vk_usage |= vk::ImageUsageFlagBits::eDepthStencilAttachment;
226 vk_usage |= vk::ImageUsageFlagBits::eColorAttachment;
227 vk_usage |= vk::ImageUsageFlagBits::eInputAttachment;
232 vk_usage |= vk::ImageUsageFlagBits::eSampled;
236 vk_usage |= vk::ImageUsageFlagBits::eStorage;
242 vk_usage |= vk::ImageUsageFlagBits::eTransferSrc |
243 vk::ImageUsageFlagBits::eTransferDst;
constexpr bool PixelFormatIsDepthStencil(PixelFormat format)
References impeller::PixelFormatIsDepthStencil().
Referenced by impeller::testing::TEST().
◆ ContextVK
The documentation for this class was generated from the following files: