Harden Vulkan setup for discrete GPUs
This commit is contained in:
+29
-6
@@ -117,7 +117,10 @@ void createBuffer(
|
||||
throw std::runtime_error("Failed to allocate buffer memory");
|
||||
}
|
||||
|
||||
vkBindBufferMemory(device, buffer, bufferMemory, 0);
|
||||
if (vkBindBufferMemory(device, buffer, bufferMemory, 0) != VK_SUCCESS)
|
||||
{
|
||||
throw std::runtime_error("Failed to bind buffer memory");
|
||||
}
|
||||
}
|
||||
|
||||
void createBufferWithPreferredMemory(
|
||||
@@ -161,7 +164,10 @@ void createBufferWithPreferredMemory(
|
||||
throw std::runtime_error("Failed to allocate buffer memory");
|
||||
}
|
||||
|
||||
vkBindBufferMemory(device, buffer, bufferMemory, 0);
|
||||
if (vkBindBufferMemory(device, buffer, bufferMemory, 0) != VK_SUCCESS)
|
||||
{
|
||||
throw std::runtime_error("Failed to bind buffer memory");
|
||||
}
|
||||
}
|
||||
|
||||
VkCommandBuffer beginSingleTimeCommands(
|
||||
@@ -192,15 +198,29 @@ void endSingleTimeCommands(
|
||||
VkQueue graphicsQueue,
|
||||
VkCommandBuffer commandBuffer)
|
||||
{
|
||||
vkEndCommandBuffer(commandBuffer);
|
||||
if (vkEndCommandBuffer(commandBuffer) != VK_SUCCESS)
|
||||
{
|
||||
throw std::runtime_error("Failed to end one-time command buffer");
|
||||
}
|
||||
|
||||
VkSubmitInfo submitInfo{};
|
||||
submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
|
||||
submitInfo.commandBufferCount = 1;
|
||||
submitInfo.pCommandBuffers = &commandBuffer;
|
||||
|
||||
vkQueueSubmit(graphicsQueue, 1, &submitInfo, VK_NULL_HANDLE);
|
||||
vkQueueWaitIdle(graphicsQueue);
|
||||
if (vkQueueSubmit(
|
||||
graphicsQueue,
|
||||
1,
|
||||
&submitInfo,
|
||||
VK_NULL_HANDLE) != VK_SUCCESS)
|
||||
{
|
||||
throw std::runtime_error("Failed to submit one-time command buffer");
|
||||
}
|
||||
|
||||
if (vkQueueWaitIdle(graphicsQueue) != VK_SUCCESS)
|
||||
{
|
||||
throw std::runtime_error("Failed to wait for one-time command buffer");
|
||||
}
|
||||
|
||||
vkFreeCommandBuffers(device, commandPool, 1, &commandBuffer);
|
||||
}
|
||||
@@ -254,7 +274,10 @@ void createImage(
|
||||
throw std::runtime_error("Failed to allocate image memory");
|
||||
}
|
||||
|
||||
vkBindImageMemory(device, image, imageMemory, 0);
|
||||
if (vkBindImageMemory(device, image, imageMemory, 0) != VK_SUCCESS)
|
||||
{
|
||||
throw std::runtime_error("Failed to bind image memory");
|
||||
}
|
||||
}
|
||||
|
||||
void recordImageLayoutTransition(
|
||||
|
||||
Reference in New Issue
Block a user