19 bool shouldPersistentlyMapCpuToGpu,
20 const std::function<CheckResult>& checkResult,
24 if (
usage == BufferUsage::kTransfersFromCpuToGpu ||
25 (
usage == BufferUsage::kCpuWritesGpuReads && shouldPersistentlyMapCpuToGpu)) {
34 if (!checkResult(
result)) {
49 bool forceDedicatedMemory,
50 bool useLazyAllocation,
51 const std::function<CheckResult>& checkResult,
60 if (forceDedicatedMemory) {
66 if (isProtected == Protected::kYes) {
70 if (useLazyAllocation) {
75 if (!checkResult(
result)) {
91 const std::function<CheckResult>& checkResult) {
96 if (!checkResult(
result)) {
117 size = (size + alignment - 1) & ~(alignment - 1);
123 SkASSERT(0 == (size & (alignment-1)));
137 const std::function<CheckResult>& checkResult) {
151 const std::function<CheckResult>& checkResult) {
virtual void unmapMemory(const skgpu::VulkanBackendMemory &)=0
@ kLazyAllocation_AllocationPropertyFlag
@ kDedicatedAllocation_AllocationPropertyFlag
@ kProtected_AllocationPropertyFlag
@ kPersistentlyMapped_AllocationPropertyFlag
@ kNone_AllocationPropertyFlag
virtual VkResult flushMemory(const skgpu::VulkanBackendMemory &memory, VkDeviceSize offset, VkDeviceSize size)
virtual void * mapMemory(const skgpu::VulkanBackendMemory &)
virtual void freeMemory(const skgpu::VulkanBackendMemory &)=0
virtual VkResult allocateImageMemory(VkImage image, uint32_t allocationPropertyFlags, skgpu::VulkanBackendMemory *memory)=0
virtual VkResult allocateBufferMemory(VkBuffer buffer, BufferUsage usage, uint32_t allocationPropertyFlags, skgpu::VulkanBackendMemory *memory)=0
virtual void getAllocInfo(const skgpu::VulkanBackendMemory &, skgpu::VulkanAlloc *) const =0
virtual VkResult invalidateMemory(const skgpu::VulkanBackendMemory &memory, VkDeviceSize offset, VkDeviceSize size)
static const uint8_t buffer[]
void FreeBufferMemory(VulkanMemoryAllocator *, const VulkanAlloc &alloc)
bool AllocBufferMemory(VulkanMemoryAllocator *, VkBuffer buffer, skgpu::VulkanMemoryAllocator::BufferUsage, bool shouldPersistentlyMapCpuToGpu, const std::function< CheckResult > &, VulkanAlloc *alloc)
void GetNonCoherentMappedMemoryRange(const VulkanAlloc &, VkDeviceSize offset, VkDeviceSize size, VkDeviceSize alignment, VkMappedMemoryRange *)
void FreeImageMemory(VulkanMemoryAllocator *, const VulkanAlloc &alloc)
void * MapAlloc(VulkanMemoryAllocator *, const VulkanAlloc &, const std::function< CheckResult > &)
void FlushMappedAlloc(VulkanMemoryAllocator *, const skgpu::VulkanAlloc &, VkDeviceSize offset, VkDeviceSize size, const std::function< CheckResult > &)
bool AllocImageMemory(VulkanMemoryAllocator *, VkImage image, skgpu::Protected isProtected, bool forceDedicatedMemory, bool useLazyAllocation, const std::function< CheckResult > &, VulkanAlloc *alloc)
void UnmapAlloc(VulkanMemoryAllocator *, const VulkanAlloc &alloc)
void InvalidateMappedAlloc(VulkanMemoryAllocator *, const VulkanAlloc &alloc, VkDeviceSize offset, VkDeviceSize size, const std::function< CheckResult > &)
intptr_t VulkanBackendMemory
static void usage(char *argv0)
VulkanBackendMemory fBackendMemory
@ VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE