21 {
23 return nullptr;
24 }
27
28
29
30
34
36
37
38
40 requiresMappable ? BufferUsage::kCpuWritesGpuReads : BufferUsage::kGpuOnly;
41
42
48
49
50
51
55 break;
58 break;
61 break;
65 break;
68 break;
71 break;
74 allocUsage = BufferUsage::kCpuWritesGpuReads;
75 break;
78 allocUsage = BufferUsage::kTransfersFromCpuToGpu;
79 break;
82 allocUsage = BufferUsage::kTransfersFromGpuToCpu;
83 break;
84 }
85
86
87
88
89
92 }
93
97
102 &bufInfo,
103 nullptr,
106 return nullptr;
107 }
108
110 bool shouldPersistentlyMapCpuToGpu =
111 sharedContext->vulkanCaps().shouldPersistentlyMapCpuToGpuBuffers();
112
115 };
118 allocUsage,
119 shouldPersistentlyMapCpuToGpu,
120 checkResult,
121 &alloc)) {
124 nullptr));
125 return nullptr;
126 }
127
128
137 nullptr));
138 return nullptr;
139 }
140
144 accessPattern,
146 alloc,
148 std::move(label)));
149}
#define VULKAN_CALL_RESULT(SHARED_CONTEXT, RESULT, X)
Protected isProtected() const
static const uint8_t buffer[]
bool AllocBufferMemory(VulkanMemoryAllocator *, VkBuffer buffer, skgpu::VulkanMemoryAllocator::BufferUsage, bool shouldPersistentlyMapCpuToGpu, const std::function< CheckResult > &, VulkanAlloc *alloc)
VulkanMemoryAllocator::BufferUsage BufferUsage
uint32_t queueFamilyIndexCount
const uint32_t * pQueueFamilyIndices
VkBufferCreateFlags flags
VkSharingMode sharingMode
@ VK_SHARING_MODE_EXCLUSIVE
@ VK_BUFFER_USAGE_TRANSFER_DST_BIT
@ VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
@ VK_BUFFER_USAGE_INDEX_BUFFER_BIT
@ VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT
@ VK_BUFFER_USAGE_VERTEX_BUFFER_BIT
@ VK_BUFFER_USAGE_STORAGE_BUFFER_BIT
@ VK_BUFFER_USAGE_TRANSFER_SRC_BIT
@ VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO