diff --git a/base/vulkanexamplebase.h b/base/vulkanexamplebase.h index 8d11f222..5240cb17 100644 --- a/base/vulkanexamplebase.h +++ b/base/vulkanexamplebase.h @@ -208,8 +208,10 @@ public: xcb_intern_atom_reply_t *atom_wm_delete_window; #endif + // Default ctor VulkanExampleBase(bool enableValidation); - VulkanExampleBase() : VulkanExampleBase(false) {}; + + // dtor ~VulkanExampleBase(); // Setup the vulkan instance, enable required extensions and connect to the physical device (GPU) diff --git a/base/vulkantools.cpp b/base/vulkantools.cpp index fd067603..46669d53 100644 --- a/base/vulkantools.cpp +++ b/base/vulkantools.cpp @@ -79,17 +79,6 @@ namespace vkTools } } - VkResult checkResult(VkResult result) - { - if (result != VK_SUCCESS) - { - std::string errorMsg = "Fatal : VkResult returned " + errorString(result) + "!"; - std::cout << errorMsg << std::endl; - assert(result == VK_SUCCESS); - } - return result; - } - VkBool32 getSupportedDepthFormat(VkPhysicalDevice physicalDevice, VkFormat *depthFormat) { // Since all depth formats may be optional, we need to find a suitable depth format to use diff --git a/base/vulkantools.h b/base/vulkantools.h index 3160bccf..6953e867 100644 --- a/base/vulkantools.h +++ b/base/vulkantools.h @@ -53,8 +53,6 @@ namespace vkTools VkBool32 checkDeviceExtensionPresent(VkPhysicalDevice physicalDevice, const char* extensionName); // Return string representation of a vulkan error string std::string errorString(VkResult errorCode); - // Asserts and outputs the error message if the result is not VK_SUCCESS - VkResult checkResult(VkResult result); // Selected a suitable supported depth format starting with 32 bit down to 16 bit // Returns false if none of the depth formats in the list is supported by the device diff --git a/computeparticles/computeparticles.cpp b/computeparticles/computeparticles.cpp index 4c02e783..d25481d0 100644 --- a/computeparticles/computeparticles.cpp +++ b/computeparticles/computeparticles.cpp @@ -580,7 +580,7 @@ public: &uniformData.computeShader.ubo.descriptor); // Map for host access - vkTools::checkResult(vkMapMemory(device, uniformData.computeShader.ubo.memory, 0, sizeof(computeUbo), 0, (void **)&uniformData.computeShader.ubo.mapped)); + VK_CHECK_RESULT(vkMapMemory(device, uniformData.computeShader.ubo.memory, 0, sizeof(computeUbo), 0, (void **)&uniformData.computeShader.ubo.mapped)); updateUniformBuffers(); } diff --git a/instancing/instancing.cpp b/instancing/instancing.cpp index fbc6cc09..7c747d9e 100644 --- a/instancing/instancing.cpp +++ b/instancing/instancing.cpp @@ -125,7 +125,7 @@ public: // Set target frame buffer renderPassBeginInfo.framebuffer = frameBuffers[i]; - vkTools::checkResult(vkBeginCommandBuffer(drawCmdBuffers[i], &cmdBufInfo)); + VK_CHECK_RESULT(vkBeginCommandBuffer(drawCmdBuffers[i], &cmdBufInfo)); vkCmdBeginRenderPass(drawCmdBuffers[i], &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE); @@ -151,14 +151,14 @@ public: vkCmdEndRenderPass(drawCmdBuffers[i]); - vkTools::checkResult(vkEndCommandBuffer(drawCmdBuffers[i])); + VK_CHECK_RESULT(vkEndCommandBuffer(drawCmdBuffers[i])); } } void draw() { // Get next image in the swap chain (back/front buffer) - vkTools::checkResult(swapChain.acquireNextImage(semaphores.presentComplete, ¤tBuffer)); + VK_CHECK_RESULT(swapChain.acquireNextImage(semaphores.presentComplete, ¤tBuffer)); submitPostPresentBarrier(swapChain.buffers[currentBuffer].image); @@ -167,13 +167,13 @@ public: submitInfo.pCommandBuffers = &drawCmdBuffers[currentBuffer]; // Submit to queue - vkTools::checkResult(vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE)); + VK_CHECK_RESULT(vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE)); submitPrePresentBarrier(swapChain.buffers[currentBuffer].image); - vkTools::checkResult(swapChain.queuePresent(queue, currentBuffer, semaphores.renderComplete)); + VK_CHECK_RESULT(swapChain.queuePresent(queue, currentBuffer, semaphores.renderComplete)); - vkTools::checkResult(vkQueueWaitIdle(queue)); + VK_CHECK_RESULT(vkQueueWaitIdle(queue)); } void loadMeshes() @@ -537,7 +537,7 @@ public: &uniformData.vsScene.descriptor); // Map for host access - vkTools::checkResult(vkMapMemory(device, uniformData.vsScene.memory, 0, sizeof(uboVS), 0, (void **)&uniformData.vsScene.mapped)); + VK_CHECK_RESULT(vkMapMemory(device, uniformData.vsScene.memory, 0, sizeof(uboVS), 0, (void **)&uniformData.vsScene.mapped)); updateUniformBuffer(true); } diff --git a/multisampling/multisampling.cpp b/multisampling/multisampling.cpp index 2ac308c7..7276c979 100644 --- a/multisampling/multisampling.cpp +++ b/multisampling/multisampling.cpp @@ -137,7 +137,7 @@ public: info.usage = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; info.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; - vkTools::checkResult(vkCreateImage(device, &info, nullptr, &multisampleTarget.color.image)); + VK_CHECK_RESULT(vkCreateImage(device, &info, nullptr, &multisampleTarget.color.image)); VkMemoryRequirements memReqs; vkGetImageMemoryRequirements(device, multisampleTarget.color.image, &memReqs); @@ -151,7 +151,7 @@ public: // If this is not available, fall back to device local memory getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, &memAlloc.memoryTypeIndex); } - vkTools::checkResult(vkAllocateMemory(device, &memAlloc, nullptr, &multisampleTarget.color.memory)); + VK_CHECK_RESULT(vkAllocateMemory(device, &memAlloc, nullptr, &multisampleTarget.color.memory)); vkBindImageMemory(device, multisampleTarget.color.image, multisampleTarget.color.memory, 0); // Create image view for the MSAA target @@ -167,7 +167,7 @@ public: viewInfo.subresourceRange.levelCount = 1; viewInfo.subresourceRange.layerCount = 1; - vkTools::checkResult(vkCreateImageView(device, &viewInfo, nullptr, &multisampleTarget.color.view)); + VK_CHECK_RESULT(vkCreateImageView(device, &viewInfo, nullptr, &multisampleTarget.color.view)); // Depth target info.imageType = VK_IMAGE_TYPE_2D; @@ -184,7 +184,7 @@ public: info.usage = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; info.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; - vkTools::checkResult(vkCreateImage(device, &info, nullptr, &multisampleTarget.depth.image)); + VK_CHECK_RESULT(vkCreateImage(device, &info, nullptr, &multisampleTarget.depth.image)); vkGetImageMemoryRequirements(device, multisampleTarget.depth.image, &memReqs); memAlloc = vkTools::initializers::memoryAllocateInfo(); @@ -195,7 +195,7 @@ public: getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, &memAlloc.memoryTypeIndex); } - vkTools::checkResult(vkAllocateMemory(device, &memAlloc, nullptr, &multisampleTarget.depth.memory)); + VK_CHECK_RESULT(vkAllocateMemory(device, &memAlloc, nullptr, &multisampleTarget.depth.memory)); vkBindImageMemory(device, multisampleTarget.depth.image, multisampleTarget.depth.memory, 0); // Create image view for the MSAA target @@ -210,7 +210,7 @@ public: viewInfo.subresourceRange.levelCount = 1; viewInfo.subresourceRange.layerCount = 1; - vkTools::checkResult(vkCreateImageView(device, &viewInfo, nullptr, &multisampleTarget.depth.view)); + VK_CHECK_RESULT(vkCreateImageView(device, &viewInfo, nullptr, &multisampleTarget.depth.view)); } // Setup a render pass for using a multi sampled attachment @@ -293,7 +293,7 @@ public: renderPassInfo.subpassCount = 1; renderPassInfo.pSubpasses = &subpass; - vkTools::checkResult(vkCreateRenderPass(device, &renderPassInfo, nullptr, &renderPass)); + VK_CHECK_RESULT(vkCreateRenderPass(device, &renderPassInfo, nullptr, &renderPass)); } // Frame buffer attachments must match with render pass setup, @@ -327,7 +327,7 @@ public: for (uint32_t i = 0; i < frameBuffers.size(); i++) { attachments[1] = swapChain.buffers[i].view; - vkTools::checkResult(vkCreateFramebuffer(device, &frameBufferCreateInfo, nullptr, &frameBuffers[i])); + VK_CHECK_RESULT(vkCreateFramebuffer(device, &frameBufferCreateInfo, nullptr, &frameBuffers[i])); } } @@ -377,7 +377,7 @@ public: // Set target frame buffer renderPassBeginInfo.framebuffer = frameBuffers[i]; - vkTools::checkResult(vkBeginCommandBuffer(drawCmdBuffers[i], &cmdBufInfo)); + VK_CHECK_RESULT(vkBeginCommandBuffer(drawCmdBuffers[i], &cmdBufInfo)); vkCmdBeginRenderPass(drawCmdBuffers[i], &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE); @@ -397,14 +397,14 @@ public: vkCmdEndRenderPass(drawCmdBuffers[i]); - vkTools::checkResult(vkEndCommandBuffer(drawCmdBuffers[i])); + VK_CHECK_RESULT(vkEndCommandBuffer(drawCmdBuffers[i])); } } void draw() { // Get next image in the swap chain (back/front buffer) - vkTools::checkResult(swapChain.acquireNextImage(semaphores.presentComplete, ¤tBuffer)); + VK_CHECK_RESULT(swapChain.acquireNextImage(semaphores.presentComplete, ¤tBuffer)); submitPostPresentBarrier(swapChain.buffers[currentBuffer].image); @@ -413,13 +413,13 @@ public: submitInfo.pCommandBuffers = &drawCmdBuffers[currentBuffer]; // Submit to queue - vkTools::checkResult(vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE)); + VK_CHECK_RESULT(vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE)); submitPrePresentBarrier(swapChain.buffers[currentBuffer].image); - vkTools::checkResult(swapChain.queuePresent(queue, currentBuffer, semaphores.renderComplete)); + VK_CHECK_RESULT(swapChain.queuePresent(queue, currentBuffer, semaphores.renderComplete)); - vkTools::checkResult(vkQueueWaitIdle(queue)); + VK_CHECK_RESULT(vkQueueWaitIdle(queue)); } void loadTextures() @@ -498,7 +498,7 @@ public: poolSizes.data(), 2); - vkTools::checkResult(vkCreateDescriptorPool(device, &descriptorPoolInfo, nullptr, &descriptorPool)); + VK_CHECK_RESULT(vkCreateDescriptorPool(device, &descriptorPoolInfo, nullptr, &descriptorPool)); } void setupDescriptorSetLayout() @@ -522,14 +522,14 @@ public: setLayoutBindings.data(), setLayoutBindings.size()); - vkTools::checkResult(vkCreateDescriptorSetLayout(device, &descriptorLayout, nullptr, &descriptorSetLayout)); + VK_CHECK_RESULT(vkCreateDescriptorSetLayout(device, &descriptorLayout, nullptr, &descriptorSetLayout)); VkPipelineLayoutCreateInfo pPipelineLayoutCreateInfo = vkTools::initializers::pipelineLayoutCreateInfo( &descriptorSetLayout, 1); - vkTools::checkResult(vkCreatePipelineLayout(device, &pPipelineLayoutCreateInfo, nullptr, &pipelineLayout)); + VK_CHECK_RESULT(vkCreatePipelineLayout(device, &pPipelineLayoutCreateInfo, nullptr, &pipelineLayout)); } void setupDescriptorSet() @@ -540,7 +540,7 @@ public: &descriptorSetLayout, 1); - vkTools::checkResult(vkAllocateDescriptorSets(device, &allocInfo, &descriptorSet)); + VK_CHECK_RESULT(vkAllocateDescriptorSets(device, &allocInfo, &descriptorSet)); VkDescriptorImageInfo texDescriptor = vkTools::initializers::descriptorImageInfo( @@ -640,7 +640,7 @@ public: pipelineCreateInfo.stageCount = shaderStages.size(); pipelineCreateInfo.pStages = shaderStages.data(); - vkTools::checkResult(vkCreateGraphicsPipelines(device, pipelineCache, 1, &pipelineCreateInfo, nullptr, &pipelines.solid)); + VK_CHECK_RESULT(vkCreateGraphicsPipelines(device, pipelineCache, 1, &pipelineCreateInfo, nullptr, &pipelines.solid)); } // Prepare and initialize uniform buffer containing shader uniforms @@ -674,7 +674,7 @@ public: uboVS.model = glm::rotate(uboVS.model, glm::radians(rotation.z), glm::vec3(0.0f, 0.0f, 1.0f)); uint8_t *pData; - vkTools::checkResult(vkMapMemory(device, uniformData.vsScene.memory, 0, sizeof(uboVS), 0, (void **)&pData)); + VK_CHECK_RESULT(vkMapMemory(device, uniformData.vsScene.memory, 0, sizeof(uboVS), 0, (void **)&pData)); memcpy(pData, &uboVS, sizeof(uboVS)); vkUnmapMemory(device, uniformData.vsScene.memory); } diff --git a/raytracing/raytracing.cpp b/raytracing/raytracing.cpp index 28eaea03..328f8206 100644 --- a/raytracing/raytracing.cpp +++ b/raytracing/raytracing.cpp @@ -138,12 +138,12 @@ public: VkMemoryAllocateInfo memAllocInfo = vkTools::initializers::memoryAllocateInfo(); VkMemoryRequirements memReqs; - vkTools::checkResult(vkCreateImage(device, &imageCreateInfo, nullptr, &tex->image)); + VK_CHECK_RESULT(vkCreateImage(device, &imageCreateInfo, nullptr, &tex->image)); vkGetImageMemoryRequirements(device, tex->image, &memReqs); memAllocInfo.allocationSize = memReqs.size; getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, &memAllocInfo.memoryTypeIndex); - vkTools::checkResult(vkAllocateMemory(device, &memAllocInfo, nullptr, &tex->deviceMemory)); - vkTools::checkResult(vkBindImageMemory(device, tex->image, tex->deviceMemory, 0)); + VK_CHECK_RESULT(vkAllocateMemory(device, &memAllocInfo, nullptr, &tex->deviceMemory)); + VK_CHECK_RESULT(vkBindImageMemory(device, tex->image, tex->deviceMemory, 0)); tex->imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; vkTools::setImageLayout( @@ -166,7 +166,7 @@ public: sampler.minLod = 0.0f; sampler.maxLod = 0.0f; sampler.borderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE; - vkTools::checkResult(vkCreateSampler(device, &sampler, nullptr, &tex->sampler)); + VK_CHECK_RESULT(vkCreateSampler(device, &sampler, nullptr, &tex->sampler)); // Create image view VkImageViewCreateInfo view = vkTools::initializers::imageViewCreateInfo(); @@ -175,7 +175,7 @@ public: view.components = { VK_COMPONENT_SWIZZLE_R, VK_COMPONENT_SWIZZLE_G, VK_COMPONENT_SWIZZLE_B, VK_COMPONENT_SWIZZLE_A }; view.subresourceRange = { VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }; view.image = tex->image; - vkTools::checkResult(vkCreateImageView(device, &view, nullptr, &tex->view)); + VK_CHECK_RESULT(vkCreateImageView(device, &view, nullptr, &tex->view)); } void buildCommandBuffers() @@ -637,7 +637,7 @@ public: 0); computePipelineCreateInfo.stage = loadShader(getAssetPath() + "shaders/raytracing/raytracing.comp.spv", VK_SHADER_STAGE_COMPUTE_BIT); - vkTools::checkResult(vkCreateComputePipelines(device, pipelineCache, 1, &computePipelineCreateInfo, nullptr, &pipelines.compute)); + VK_CHECK_RESULT(vkCreateComputePipelines(device, pipelineCache, 1, &computePipelineCreateInfo, nullptr, &pipelines.compute)); } // Prepare and initialize uniform buffer containing shader uniforms @@ -662,7 +662,7 @@ public: uboCompute.lightPos.z = 1.0f; uboCompute.lightPos.z = 0.0f + cos(glm::radians(timer * 360.0f)) * 2.0f; uint8_t *pData; - vkTools::checkResult(vkMapMemory(device, uniformDataCompute.memory, 0, sizeof(uboCompute), 0, (void **)&pData)); + VK_CHECK_RESULT(vkMapMemory(device, uniformDataCompute.memory, 0, sizeof(uboCompute), 0, (void **)&pData)); memcpy(pData, &uboCompute, sizeof(uboCompute)); vkUnmapMemory(device, uniformDataCompute.memory); } diff --git a/skeletalanimation/skeletalanimation.cpp b/skeletalanimation/skeletalanimation.cpp index 0f1274f8..56bb4205 100644 --- a/skeletalanimation/skeletalanimation.cpp +++ b/skeletalanimation/skeletalanimation.cpp @@ -442,7 +442,7 @@ public: { renderPassBeginInfo.framebuffer = frameBuffers[i]; - vkTools::checkResult(vkBeginCommandBuffer(drawCmdBuffers[i], &cmdBufInfo)); + VK_CHECK_RESULT(vkBeginCommandBuffer(drawCmdBuffers[i], &cmdBufInfo)); vkCmdBeginRenderPass(drawCmdBuffers[i], &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE); @@ -472,7 +472,7 @@ public: vkCmdEndRenderPass(drawCmdBuffers[i]); - vkTools::checkResult(vkEndCommandBuffer(drawCmdBuffers[i])); + VK_CHECK_RESULT(vkEndCommandBuffer(drawCmdBuffers[i])); } } @@ -825,7 +825,7 @@ public: vkUpdateDescriptorSets(device, writeDescriptorSets.size(), writeDescriptorSets.data(), 0, NULL); // Floor - vkTools::checkResult(vkAllocateDescriptorSets(device, &allocInfo, &descriptorSets.floor)); + VK_CHECK_RESULT(vkAllocateDescriptorSets(device, &allocInfo, &descriptorSets.floor)); texDescriptor.imageView = textures.floor.view; texDescriptor.sampler = textures.floor.sampler; @@ -926,7 +926,7 @@ public: shaderStages[0] = loadShader(getAssetPath() + "shaders/skeletalanimation/texture.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); shaderStages[1] = loadShader(getAssetPath() + "shaders/skeletalanimation/texture.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); - vkTools::checkResult(vkCreateGraphicsPipelines(device, pipelineCache, 1, &pipelineCreateInfo, nullptr, &pipelines.texture)); + VK_CHECK_RESULT(vkCreateGraphicsPipelines(device, pipelineCache, 1, &pipelineCreateInfo, nullptr, &pipelines.texture)); } // Prepare and initialize uniform buffer containing shader uniforms @@ -942,7 +942,7 @@ public: &uniformData.vsScene.descriptor); // Map for host access - vkTools::checkResult(vkMapMemory(device, uniformData.vsScene.memory, 0, sizeof(uboVS), 0, (void **)&uniformData.vsScene.mapped)); + VK_CHECK_RESULT(vkMapMemory(device, uniformData.vsScene.memory, 0, sizeof(uboVS), 0, (void **)&uniformData.vsScene.mapped)); // Floor createBuffer( @@ -954,7 +954,7 @@ public: &uniformData.floor.descriptor); // Map for host access - vkTools::checkResult(vkMapMemory(device, uniformData.floor.memory, 0, sizeof(uboFloor), 0, (void **)&uniformData.floor.mapped)); + VK_CHECK_RESULT(vkMapMemory(device, uniformData.floor.memory, 0, sizeof(uboFloor), 0, (void **)&uniformData.floor.mapped)); updateUniformBuffers(true); } diff --git a/texturearray/texturearray.cpp b/texturearray/texturearray.cpp index 5070c58b..17dba3ae 100644 --- a/texturearray/texturearray.cpp +++ b/texturearray/texturearray.cpp @@ -148,7 +148,7 @@ public: bufferCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT; bufferCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; - vkTools::checkResult(vkCreateBuffer(device, &bufferCreateInfo, nullptr, &stagingBuffer)); + VK_CHECK_RESULT(vkCreateBuffer(device, &bufferCreateInfo, nullptr, &stagingBuffer)); // Get memory requirements for the staging buffer (alignment, memory type bits) vkGetBufferMemoryRequirements(device, stagingBuffer, &memReqs); @@ -157,12 +157,12 @@ public: // Get memory type index for a host visible buffer memAllocInfo.memoryTypeIndex = getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT); - vkTools::checkResult(vkAllocateMemory(device, &memAllocInfo, nullptr, &stagingMemory)); - vkTools::checkResult(vkBindBufferMemory(device, stagingBuffer, stagingMemory, 0)); + VK_CHECK_RESULT(vkAllocateMemory(device, &memAllocInfo, nullptr, &stagingMemory)); + VK_CHECK_RESULT(vkBindBufferMemory(device, stagingBuffer, stagingMemory, 0)); // Copy texture data into staging buffer uint8_t *data; - vkTools::checkResult(vkMapMemory(device, stagingMemory, 0, memReqs.size, 0, (void **)&data)); + VK_CHECK_RESULT(vkMapMemory(device, stagingMemory, 0, memReqs.size, 0, (void **)&data)); memcpy(data, tex2DArray.data(), tex2DArray.size()); vkUnmapMemory(device, stagingMemory); diff --git a/texturecubemap/texturecubemap.cpp b/texturecubemap/texturecubemap.cpp index 9c30c54e..9b4fee66 100644 --- a/texturecubemap/texturecubemap.cpp +++ b/texturecubemap/texturecubemap.cpp @@ -140,7 +140,7 @@ public: bufferCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT; bufferCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; - vkTools::checkResult(vkCreateBuffer(device, &bufferCreateInfo, nullptr, &stagingBuffer)); + VK_CHECK_RESULT(vkCreateBuffer(device, &bufferCreateInfo, nullptr, &stagingBuffer)); // Get memory requirements for the staging buffer (alignment, memory type bits) vkGetBufferMemoryRequirements(device, stagingBuffer, &memReqs); @@ -149,12 +149,12 @@ public: // Get memory type index for a host visible buffer memAllocInfo.memoryTypeIndex = getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT); - vkTools::checkResult(vkAllocateMemory(device, &memAllocInfo, nullptr, &stagingMemory)); - vkTools::checkResult(vkBindBufferMemory(device, stagingBuffer, stagingMemory, 0)); + VK_CHECK_RESULT(vkAllocateMemory(device, &memAllocInfo, nullptr, &stagingMemory)); + VK_CHECK_RESULT(vkBindBufferMemory(device, stagingBuffer, stagingMemory, 0)); // Copy texture data into staging buffer uint8_t *data; - vkTools::checkResult(vkMapMemory(device, stagingMemory, 0, memReqs.size, 0, (void **)&data)); + VK_CHECK_RESULT(vkMapMemory(device, stagingMemory, 0, memReqs.size, 0, (void **)&data)); memcpy(data, texCube.data(), texCube.size()); vkUnmapMemory(device, stagingMemory);