Use Vulkan result check macro, code cleanup, removed some warnings

This commit is contained in:
saschawillems 2016-05-22 20:27:06 +02:00
parent 33679550d9
commit ae8f38d099

View file

@ -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()