MCPcopy Create free account
hub / github.com/PacktPublishing/3D-Graphics-Rendering-Cookbook / createSharedBuffer

Function createSharedBuffer

shared/UtilsVulkan.cpp:1287–1322  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1285}
1286
1287bool createSharedBuffer(VulkanRenderDevice& vkDev, VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, VkBuffer& buffer, VkDeviceMemory& bufferMemory)
1288{
1289 uint32_t familyCount = static_cast<uint32_t>(vkDev.deviceQueueIndices.size());
1290
1291 if (familyCount < 2)
1292 return createBuffer(vkDev.device, vkDev.physicalDevice, size, usage, properties, buffer, bufferMemory);
1293
1294 const VkBufferCreateInfo bufferInfo = {
1295 .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
1296 .pNext = nullptr,
1297 .flags = 0,
1298 .size = size,
1299 .usage = usage,
1300 .sharingMode = (familyCount > 1) ? VK_SHARING_MODE_CONCURRENT : VK_SHARING_MODE_EXCLUSIVE,
1301 .queueFamilyIndexCount = static_cast<uint32_t>(vkDev.deviceQueueIndices.size()),
1302 .pQueueFamilyIndices = (familyCount > 1) ? vkDev.deviceQueueIndices.data() : nullptr
1303 };
1304
1305 VK_CHECK(vkCreateBuffer(vkDev.device, &bufferInfo, nullptr, &buffer));
1306
1307 VkMemoryRequirements memRequirements;
1308 vkGetBufferMemoryRequirements(vkDev.device, buffer, &memRequirements);
1309
1310 const VkMemoryAllocateInfo allocInfo = {
1311 .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
1312 .pNext = nullptr,
1313 .allocationSize = memRequirements.size,
1314 .memoryTypeIndex = findMemoryType(vkDev.physicalDevice, memRequirements.memoryTypeBits, properties)
1315 };
1316
1317 VK_CHECK(vkAllocateMemory(vkDev.device, &allocInfo, nullptr, &bufferMemory));
1318
1319 vkBindBufferMemory(vkDev.device, buffer, bufferMemory, 0);
1320
1321 return true;
1322}
1323
1324bool createUniformBuffer(VulkanRenderDevice& vkDev, VkBuffer& buffer, VkDeviceMemory& bufferMemory, VkDeviceSize bufferSize)
1325{

Callers 2

addBufferMethod · 0.85
ComputeBaseMethod · 0.85

Calls 2

createBufferFunction · 0.85
findMemoryTypeFunction · 0.85

Tested by

no test coverage detected