Use Vulkan result check macro, code cleanup, removed some warnings
This commit is contained in:
parent
33679550d9
commit
ae8f38d099
1 changed files with 32 additions and 63 deletions
|
|
@ -128,17 +128,14 @@ void VulkanExampleBase::createCommandBuffers()
|
||||||
VK_COMMAND_BUFFER_LEVEL_PRIMARY,
|
VK_COMMAND_BUFFER_LEVEL_PRIMARY,
|
||||||
(uint32_t)drawCmdBuffers.size());
|
(uint32_t)drawCmdBuffers.size());
|
||||||
|
|
||||||
VkResult vkRes = vkAllocateCommandBuffers(device, &cmdBufAllocateInfo, drawCmdBuffers.data());
|
VK_CHECK_RESULT(vkAllocateCommandBuffers(device, &cmdBufAllocateInfo, drawCmdBuffers.data()));
|
||||||
assert(!vkRes);
|
|
||||||
|
|
||||||
// Command buffers for submitting present barriers
|
// Command buffers for submitting present barriers
|
||||||
cmdBufAllocateInfo.commandBufferCount = 1;
|
cmdBufAllocateInfo.commandBufferCount = 1;
|
||||||
// Pre present
|
// Pre present
|
||||||
vkRes = vkAllocateCommandBuffers(device, &cmdBufAllocateInfo, &prePresentCmdBuffer);
|
VK_CHECK_RESULT(vkAllocateCommandBuffers(device, &cmdBufAllocateInfo, &prePresentCmdBuffer));
|
||||||
assert(!vkRes);
|
|
||||||
// Post present
|
// Post present
|
||||||
vkRes = vkAllocateCommandBuffers(device, &cmdBufAllocateInfo, &postPresentCmdBuffer);
|
VK_CHECK_RESULT(vkAllocateCommandBuffers(device, &cmdBufAllocateInfo, &postPresentCmdBuffer));
|
||||||
assert(!vkRes);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExampleBase::destroyCommandBuffers()
|
void VulkanExampleBase::destroyCommandBuffers()
|
||||||
|
|
@ -162,36 +159,28 @@ void VulkanExampleBase::createSetupCommandBuffer()
|
||||||
VK_COMMAND_BUFFER_LEVEL_PRIMARY,
|
VK_COMMAND_BUFFER_LEVEL_PRIMARY,
|
||||||
1);
|
1);
|
||||||
|
|
||||||
VkResult vkRes = vkAllocateCommandBuffers(device, &cmdBufAllocateInfo, &setupCmdBuffer);
|
VK_CHECK_RESULT(vkAllocateCommandBuffers(device, &cmdBufAllocateInfo, &setupCmdBuffer));
|
||||||
assert(!vkRes);
|
|
||||||
|
|
||||||
VkCommandBufferBeginInfo cmdBufInfo = {};
|
VkCommandBufferBeginInfo cmdBufInfo = {};
|
||||||
cmdBufInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
|
cmdBufInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
|
||||||
|
|
||||||
vkRes = vkBeginCommandBuffer(setupCmdBuffer, &cmdBufInfo);
|
VK_CHECK_RESULT(vkBeginCommandBuffer(setupCmdBuffer, &cmdBufInfo));
|
||||||
assert(!vkRes);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExampleBase::flushSetupCommandBuffer()
|
void VulkanExampleBase::flushSetupCommandBuffer()
|
||||||
{
|
{
|
||||||
VkResult err;
|
|
||||||
|
|
||||||
if (setupCmdBuffer == VK_NULL_HANDLE)
|
if (setupCmdBuffer == VK_NULL_HANDLE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
err = vkEndCommandBuffer(setupCmdBuffer);
|
VK_CHECK_RESULT(vkEndCommandBuffer(setupCmdBuffer));
|
||||||
assert(!err);
|
|
||||||
|
|
||||||
VkSubmitInfo submitInfo = {};
|
VkSubmitInfo submitInfo = {};
|
||||||
submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
|
submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
|
||||||
submitInfo.commandBufferCount = 1;
|
submitInfo.commandBufferCount = 1;
|
||||||
submitInfo.pCommandBuffers = &setupCmdBuffer;
|
submitInfo.pCommandBuffers = &setupCmdBuffer;
|
||||||
|
|
||||||
err = vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE);
|
VK_CHECK_RESULT(vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE));
|
||||||
assert(!err);
|
VK_CHECK_RESULT(vkQueueWaitIdle(queue));
|
||||||
|
|
||||||
err = vkQueueWaitIdle(queue);
|
|
||||||
assert(!err);
|
|
||||||
|
|
||||||
vkFreeCommandBuffers(device, cmdPool, 1, &setupCmdBuffer);
|
vkFreeCommandBuffers(device, cmdPool, 1, &setupCmdBuffer);
|
||||||
setupCmdBuffer = VK_NULL_HANDLE;
|
setupCmdBuffer = VK_NULL_HANDLE;
|
||||||
|
|
@ -246,8 +235,7 @@ void VulkanExampleBase::createPipelineCache()
|
||||||
{
|
{
|
||||||
VkPipelineCacheCreateInfo pipelineCacheCreateInfo = {};
|
VkPipelineCacheCreateInfo pipelineCacheCreateInfo = {};
|
||||||
pipelineCacheCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO;
|
pipelineCacheCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO;
|
||||||
VkResult err = vkCreatePipelineCache(device, &pipelineCacheCreateInfo, nullptr, &pipelineCache);
|
VK_CHECK_RESULT(vkCreatePipelineCache(device, &pipelineCacheCreateInfo, nullptr, &pipelineCache));
|
||||||
assert(!err);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExampleBase::prepare()
|
void VulkanExampleBase::prepare()
|
||||||
|
|
@ -258,7 +246,7 @@ void VulkanExampleBase::prepare()
|
||||||
}
|
}
|
||||||
if (enableDebugMarkers)
|
if (enableDebugMarkers)
|
||||||
{
|
{
|
||||||
vkDebug::setupDebugMarkers(device);
|
vkDebug::debugReport::setupDebugMarkers(device);
|
||||||
}
|
}
|
||||||
createCommandPool();
|
createCommandPool();
|
||||||
createSetupCommandBuffer();
|
createSetupCommandBuffer();
|
||||||
|
|
@ -454,7 +442,7 @@ void VulkanExampleBase::renderLoop()
|
||||||
lastFPS = frameCounter;
|
lastFPS = frameCounter;
|
||||||
updateTextOverlay();
|
updateTextOverlay();
|
||||||
fpsTimer = 0.0f;
|
fpsTimer = 0.0f;
|
||||||
frameCounter = 0.0f;
|
frameCounter = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#elif defined(__ANDROID__)
|
#elif defined(__ANDROID__)
|
||||||
|
|
@ -512,7 +500,7 @@ void VulkanExampleBase::renderLoop()
|
||||||
lastFPS = frameCounter;
|
lastFPS = frameCounter;
|
||||||
updateTextOverlay();
|
updateTextOverlay();
|
||||||
fpsTimer = 0.0f;
|
fpsTimer = 0.0f;
|
||||||
frameCounter = 0.0f;
|
frameCounter = 0;
|
||||||
}
|
}
|
||||||
// Check gamepad state
|
// Check gamepad state
|
||||||
const float deadZone = 0.0015f;
|
const float deadZone = 0.0015f;
|
||||||
|
|
@ -583,7 +571,7 @@ void VulkanExampleBase::renderLoop()
|
||||||
lastFPS = frameCounter;
|
lastFPS = frameCounter;
|
||||||
updateTextOverlay();
|
updateTextOverlay();
|
||||||
fpsTimer = 0.0f;
|
fpsTimer = 0.0f;
|
||||||
frameCounter = 0.0f;
|
frameCounter = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -593,8 +581,7 @@ void VulkanExampleBase::submitPrePresentBarrier(VkImage image)
|
||||||
{
|
{
|
||||||
VkCommandBufferBeginInfo cmdBufInfo = vkTools::initializers::commandBufferBeginInfo();
|
VkCommandBufferBeginInfo cmdBufInfo = vkTools::initializers::commandBufferBeginInfo();
|
||||||
|
|
||||||
VkResult vkRes = vkBeginCommandBuffer(prePresentCmdBuffer, &cmdBufInfo);
|
VK_CHECK_RESULT(vkBeginCommandBuffer(prePresentCmdBuffer, &cmdBufInfo));
|
||||||
assert(!vkRes);
|
|
||||||
|
|
||||||
VkImageMemoryBarrier prePresentBarrier = vkTools::initializers::imageMemoryBarrier();
|
VkImageMemoryBarrier prePresentBarrier = vkTools::initializers::imageMemoryBarrier();
|
||||||
prePresentBarrier.srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
|
prePresentBarrier.srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
|
||||||
|
|
@ -615,23 +602,20 @@ void VulkanExampleBase::submitPrePresentBarrier(VkImage image)
|
||||||
0, nullptr, // No buffer barriers,
|
0, nullptr, // No buffer barriers,
|
||||||
1, &prePresentBarrier);
|
1, &prePresentBarrier);
|
||||||
|
|
||||||
vkRes = vkEndCommandBuffer(prePresentCmdBuffer);
|
VK_CHECK_RESULT(vkEndCommandBuffer(prePresentCmdBuffer));
|
||||||
assert(!vkRes);
|
|
||||||
|
|
||||||
VkSubmitInfo submitInfo = vkTools::initializers::submitInfo();
|
VkSubmitInfo submitInfo = vkTools::initializers::submitInfo();
|
||||||
submitInfo.commandBufferCount = 1;
|
submitInfo.commandBufferCount = 1;
|
||||||
submitInfo.pCommandBuffers = &prePresentCmdBuffer;
|
submitInfo.pCommandBuffers = &prePresentCmdBuffer;
|
||||||
|
|
||||||
vkRes = vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE);
|
VK_CHECK_RESULT(vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE));
|
||||||
assert(!vkRes);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExampleBase::submitPostPresentBarrier(VkImage image)
|
void VulkanExampleBase::submitPostPresentBarrier(VkImage image)
|
||||||
{
|
{
|
||||||
VkCommandBufferBeginInfo cmdBufInfo = vkTools::initializers::commandBufferBeginInfo();
|
VkCommandBufferBeginInfo cmdBufInfo = vkTools::initializers::commandBufferBeginInfo();
|
||||||
|
|
||||||
VkResult vkRes = vkBeginCommandBuffer(postPresentCmdBuffer, &cmdBufInfo);
|
VK_CHECK_RESULT(vkBeginCommandBuffer(postPresentCmdBuffer, &cmdBufInfo));
|
||||||
assert(!vkRes);
|
|
||||||
|
|
||||||
VkImageMemoryBarrier postPresentBarrier = vkTools::initializers::imageMemoryBarrier();
|
VkImageMemoryBarrier postPresentBarrier = vkTools::initializers::imageMemoryBarrier();
|
||||||
postPresentBarrier.srcAccessMask = 0;
|
postPresentBarrier.srcAccessMask = 0;
|
||||||
|
|
@ -652,15 +636,13 @@ void VulkanExampleBase::submitPostPresentBarrier(VkImage image)
|
||||||
0, nullptr, // No buffer barriers,
|
0, nullptr, // No buffer barriers,
|
||||||
1, &postPresentBarrier);
|
1, &postPresentBarrier);
|
||||||
|
|
||||||
vkRes = vkEndCommandBuffer(postPresentCmdBuffer);
|
VK_CHECK_RESULT(vkEndCommandBuffer(postPresentCmdBuffer));
|
||||||
assert(!vkRes);
|
|
||||||
|
|
||||||
VkSubmitInfo submitInfo = vkTools::initializers::submitInfo();
|
VkSubmitInfo submitInfo = vkTools::initializers::submitInfo();
|
||||||
submitInfo.commandBufferCount = 1;
|
submitInfo.commandBufferCount = 1;
|
||||||
submitInfo.pCommandBuffers = &postPresentCmdBuffer;
|
submitInfo.pCommandBuffers = &postPresentCmdBuffer;
|
||||||
|
|
||||||
vkRes = vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE);
|
VK_CHECK_RESULT(vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE));
|
||||||
assert(!vkRes);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VkSubmitInfo VulkanExampleBase::prepareSubmitInfo(
|
VkSubmitInfo VulkanExampleBase::prepareSubmitInfo(
|
||||||
|
|
@ -671,7 +653,7 @@ VkSubmitInfo VulkanExampleBase::prepareSubmitInfo(
|
||||||
submitInfo.pWaitDstStageMask = pipelineStages;
|
submitInfo.pWaitDstStageMask = pipelineStages;
|
||||||
submitInfo.waitSemaphoreCount = 1;
|
submitInfo.waitSemaphoreCount = 1;
|
||||||
submitInfo.pWaitSemaphores = &semaphores.presentComplete;
|
submitInfo.pWaitSemaphores = &semaphores.presentComplete;
|
||||||
submitInfo.commandBufferCount = commandBuffers.size();
|
submitInfo.commandBufferCount = static_cast<uint32_t>(commandBuffers.size());
|
||||||
submitInfo.pCommandBuffers = commandBuffers.data();
|
submitInfo.pCommandBuffers = commandBuffers.data();
|
||||||
submitInfo.signalSemaphoreCount = 1;
|
submitInfo.signalSemaphoreCount = 1;
|
||||||
submitInfo.pSignalSemaphores = &semaphores.renderComplete;
|
submitInfo.pSignalSemaphores = &semaphores.renderComplete;
|
||||||
|
|
@ -871,8 +853,7 @@ void VulkanExampleBase::initVulkan(bool enableValidation)
|
||||||
// Physical device
|
// Physical device
|
||||||
uint32_t gpuCount = 0;
|
uint32_t gpuCount = 0;
|
||||||
// Get number of available physical devices
|
// Get number of available physical devices
|
||||||
err = vkEnumeratePhysicalDevices(instance, &gpuCount, nullptr);
|
VK_CHECK_RESULT(vkEnumeratePhysicalDevices(instance, &gpuCount, nullptr));
|
||||||
assert(!err);
|
|
||||||
assert(gpuCount > 0);
|
assert(gpuCount > 0);
|
||||||
// Enumerate devices
|
// Enumerate devices
|
||||||
std::vector<VkPhysicalDevice> physicalDevices(gpuCount);
|
std::vector<VkPhysicalDevice> physicalDevices(gpuCount);
|
||||||
|
|
@ -913,8 +894,7 @@ void VulkanExampleBase::initVulkan(bool enableValidation)
|
||||||
queueCreateInfo.queueCount = 1;
|
queueCreateInfo.queueCount = 1;
|
||||||
queueCreateInfo.pQueuePriorities = queuePriorities.data();
|
queueCreateInfo.pQueuePriorities = queuePriorities.data();
|
||||||
|
|
||||||
err = createDevice(queueCreateInfo, enableValidation);
|
VK_CHECK_RESULT(createDevice(queueCreateInfo, enableValidation));
|
||||||
assert(!err);
|
|
||||||
|
|
||||||
// Store properties (including limits) and features of the phyiscal device
|
// Store properties (including limits) and features of the phyiscal device
|
||||||
// So examples can check against them and see if a feature is actually supported
|
// So examples can check against them and see if a feature is actually supported
|
||||||
|
|
@ -963,7 +943,8 @@ void VulkanExampleBase::setupConsole(std::string title)
|
||||||
{
|
{
|
||||||
AllocConsole();
|
AllocConsole();
|
||||||
AttachConsole(GetCurrentProcessId());
|
AttachConsole(GetCurrentProcessId());
|
||||||
freopen("CON", "w", stdout);
|
FILE *stream;
|
||||||
|
freopen_s(&stream, "CONOUT$", "w+", stdout);
|
||||||
SetConsoleTitle(TEXT(title.c_str()));
|
SetConsoleTitle(TEXT(title.c_str()));
|
||||||
if (enableValidation)
|
if (enableValidation)
|
||||||
{
|
{
|
||||||
|
|
@ -1502,8 +1483,7 @@ void VulkanExampleBase::createCommandPool()
|
||||||
cmdPoolInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
|
cmdPoolInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
|
||||||
cmdPoolInfo.queueFamilyIndex = swapChain.queueNodeIndex;
|
cmdPoolInfo.queueFamilyIndex = swapChain.queueNodeIndex;
|
||||||
cmdPoolInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT;
|
cmdPoolInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT;
|
||||||
VkResult vkRes = vkCreateCommandPool(device, &cmdPoolInfo, nullptr, &cmdPool);
|
VK_CHECK_RESULT(vkCreateCommandPool(device, &cmdPoolInfo, nullptr, &cmdPool));
|
||||||
assert(!vkRes);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExampleBase::setupDepthStencil()
|
void VulkanExampleBase::setupDepthStencil()
|
||||||
|
|
@ -1541,20 +1521,14 @@ void VulkanExampleBase::setupDepthStencil()
|
||||||
depthStencilView.subresourceRange.layerCount = 1;
|
depthStencilView.subresourceRange.layerCount = 1;
|
||||||
|
|
||||||
VkMemoryRequirements memReqs;
|
VkMemoryRequirements memReqs;
|
||||||
VkResult err;
|
|
||||||
|
|
||||||
err = vkCreateImage(device, &image, nullptr, &depthStencil.image);
|
VK_CHECK_RESULT(vkCreateImage(device, &image, nullptr, &depthStencil.image));
|
||||||
assert(!err);
|
|
||||||
vkGetImageMemoryRequirements(device, depthStencil.image, &memReqs);
|
vkGetImageMemoryRequirements(device, depthStencil.image, &memReqs);
|
||||||
mem_alloc.allocationSize = memReqs.size;
|
mem_alloc.allocationSize = memReqs.size;
|
||||||
getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, &mem_alloc.memoryTypeIndex);
|
mem_alloc.memoryTypeIndex = getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
|
||||||
err = vkAllocateMemory(device, &mem_alloc, nullptr, &depthStencil.mem);
|
VK_CHECK_RESULT(vkAllocateMemory(device, &mem_alloc, nullptr, &depthStencil.mem));
|
||||||
assert(!err);
|
|
||||||
|
|
||||||
vkDebug::SetObjectName(device, depthStencil.image, "Backbuffer depth-stencil");
|
VK_CHECK_RESULT(vkBindImageMemory(device, depthStencil.image, depthStencil.mem, 0));
|
||||||
|
|
||||||
err = vkBindImageMemory(device, depthStencil.image, depthStencil.mem, 0);
|
|
||||||
assert(!err);
|
|
||||||
vkTools::setImageLayout(
|
vkTools::setImageLayout(
|
||||||
setupCmdBuffer,
|
setupCmdBuffer,
|
||||||
depthStencil.image,
|
depthStencil.image,
|
||||||
|
|
@ -1563,8 +1537,7 @@ void VulkanExampleBase::setupDepthStencil()
|
||||||
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
|
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
|
||||||
|
|
||||||
depthStencilView.image = depthStencil.image;
|
depthStencilView.image = depthStencil.image;
|
||||||
err = vkCreateImageView(device, &depthStencilView, nullptr, &depthStencil.view);
|
VK_CHECK_RESULT(vkCreateImageView(device, &depthStencilView, nullptr, &depthStencil.view));
|
||||||
assert(!err);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExampleBase::setupFrameBuffer()
|
void VulkanExampleBase::setupFrameBuffer()
|
||||||
|
|
@ -1589,8 +1562,7 @@ void VulkanExampleBase::setupFrameBuffer()
|
||||||
for (uint32_t i = 0; i < frameBuffers.size(); i++)
|
for (uint32_t i = 0; i < frameBuffers.size(); i++)
|
||||||
{
|
{
|
||||||
attachments[0] = swapChain.buffers[i].view;
|
attachments[0] = swapChain.buffers[i].view;
|
||||||
VkResult err = vkCreateFramebuffer(device, &frameBufferCreateInfo, nullptr, &frameBuffers[i]);
|
VK_CHECK_RESULT(vkCreateFramebuffer(device, &frameBufferCreateInfo, nullptr, &frameBuffers[i]));
|
||||||
assert(!err);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1648,10 +1620,7 @@ void VulkanExampleBase::setupRenderPass()
|
||||||
renderPassInfo.dependencyCount = 0;
|
renderPassInfo.dependencyCount = 0;
|
||||||
renderPassInfo.pDependencies = NULL;
|
renderPassInfo.pDependencies = NULL;
|
||||||
|
|
||||||
VkResult err;
|
VK_CHECK_RESULT(vkCreateRenderPass(device, &renderPassInfo, nullptr, &renderPass));
|
||||||
|
|
||||||
err = vkCreateRenderPass(device, &renderPassInfo, nullptr, &renderPass);
|
|
||||||
assert(!err);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExampleBase::windowResize()
|
void VulkanExampleBase::windowResize()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue