Clean validation, code comments
This commit is contained in:
parent
ef15a265a7
commit
d46203b890
2 changed files with 31 additions and 20 deletions
|
|
@ -74,6 +74,7 @@ public:
|
||||||
VkDescriptorSet descriptorSet;
|
VkDescriptorSet descriptorSet;
|
||||||
VkPipelineLayout pipelineLayout;
|
VkPipelineLayout pipelineLayout;
|
||||||
VkPipeline pipeline;
|
VkPipeline pipeline;
|
||||||
|
VkShaderModule shaderModule;
|
||||||
|
|
||||||
VkDebugReportCallbackEXT debugReportCallback;
|
VkDebugReportCallbackEXT debugReportCallback;
|
||||||
|
|
||||||
|
|
@ -345,6 +346,7 @@ public:
|
||||||
#endif
|
#endif
|
||||||
shaderStage.pName = "main";
|
shaderStage.pName = "main";
|
||||||
shaderStage.pSpecializationInfo = &specializationInfo;
|
shaderStage.pSpecializationInfo = &specializationInfo;
|
||||||
|
shaderModule = shaderStage.module;
|
||||||
|
|
||||||
assert(shaderStage.module != VK_NULL_HANDLE);
|
assert(shaderStage.module != VK_NULL_HANDLE);
|
||||||
computePipelineCreateInfo.stage = shaderStage;
|
computePipelineCreateInfo.stage = shaderStage;
|
||||||
|
|
@ -476,22 +478,25 @@ public:
|
||||||
vkFreeMemory(device, deviceMemory, nullptr);
|
vkFreeMemory(device, deviceMemory, nullptr);
|
||||||
vkDestroyBuffer(device, hostBuffer, nullptr);
|
vkDestroyBuffer(device, hostBuffer, nullptr);
|
||||||
vkFreeMemory(device, hostMemory, nullptr);
|
vkFreeMemory(device, hostMemory, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
~VulkanExample()
|
||||||
|
{
|
||||||
|
vkDestroyPipelineLayout(device, pipelineLayout, nullptr);
|
||||||
|
vkDestroyDescriptorSetLayout(device, descriptorSetLayout, nullptr);
|
||||||
|
vkDestroyDescriptorPool(device, descriptorPool, nullptr);
|
||||||
|
vkDestroyPipeline(device, pipeline, nullptr);
|
||||||
|
vkDestroyPipelineCache(device, pipelineCache, nullptr);
|
||||||
|
vkDestroyFence(device, fence, nullptr);
|
||||||
|
vkDestroyCommandPool(device, commandPool, nullptr);
|
||||||
|
vkDestroyShaderModule(device, shaderModule, nullptr);
|
||||||
|
vkDestroyDevice(device, nullptr);
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallback = reinterpret_cast<PFN_vkDestroyDebugReportCallbackEXT>(vkGetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT"));
|
PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallback = reinterpret_cast<PFN_vkDestroyDebugReportCallbackEXT>(vkGetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT"));
|
||||||
assert(vkDestroyDebugReportCallback);
|
assert(vkDestroyDebugReportCallback);
|
||||||
vkDestroyDebugReportCallback(instance, debugReportCallback, nullptr);
|
vkDestroyDebugReportCallback(instance, debugReportCallback, nullptr);
|
||||||
#endif
|
#endif
|
||||||
}
|
vkDestroyInstance(instance, nullptr);
|
||||||
|
|
||||||
~VulkanExample()
|
|
||||||
{
|
|
||||||
// todo: all other stuff
|
|
||||||
vkDestroyPipelineLayout(device, pipelineLayout, nullptr);
|
|
||||||
vkDestroyDescriptorSetLayout(device, descriptorSetLayout, nullptr);
|
|
||||||
vkDestroyPipeline(device, pipeline, nullptr);
|
|
||||||
vkDestroyFence(device, fence, nullptr);
|
|
||||||
vkDestroyCommandPool(device, commandPool, nullptr);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,7 @@ public:
|
||||||
VkDescriptorSetLayout descriptorSetLayout;
|
VkDescriptorSetLayout descriptorSetLayout;
|
||||||
VkPipelineLayout pipelineLayout;
|
VkPipelineLayout pipelineLayout;
|
||||||
VkPipeline pipeline;
|
VkPipeline pipeline;
|
||||||
|
std::vector<VkShaderModule> shaderModules;
|
||||||
VkBuffer vertexBuffer, indexBuffer;
|
VkBuffer vertexBuffer, indexBuffer;
|
||||||
VkDeviceMemory vertexMemory, indexMemory;
|
VkDeviceMemory vertexMemory, indexMemory;
|
||||||
|
|
||||||
|
|
@ -238,7 +239,7 @@ public:
|
||||||
deviceCreateInfo.pQueueCreateInfos = &queueCreateInfo;
|
deviceCreateInfo.pQueueCreateInfos = &queueCreateInfo;
|
||||||
VK_CHECK_RESULT(vkCreateDevice(physicalDevice, &deviceCreateInfo, nullptr, &device));
|
VK_CHECK_RESULT(vkCreateDevice(physicalDevice, &deviceCreateInfo, nullptr, &device));
|
||||||
|
|
||||||
// Get a compute queue
|
// Get a graphics queue
|
||||||
vkGetDeviceQueue(device, queueFamilyIndex, 0, &queue);
|
vkGetDeviceQueue(device, queueFamilyIndex, 0, &queue);
|
||||||
|
|
||||||
// Command pool
|
// Command pool
|
||||||
|
|
@ -578,11 +579,12 @@ public:
|
||||||
shaderStages[0].module = vks::tools::loadShader(ASSET_PATH "shaders/renderheadless/triangle.vert.spv", device);
|
shaderStages[0].module = vks::tools::loadShader(ASSET_PATH "shaders/renderheadless/triangle.vert.spv", device);
|
||||||
shaderStages[1].module = vks::tools::loadShader(ASSET_PATH "shaders/renderheadless/triangle.frag.spv", device);
|
shaderStages[1].module = vks::tools::loadShader(ASSET_PATH "shaders/renderheadless/triangle.frag.spv", device);
|
||||||
#endif
|
#endif
|
||||||
|
shaderModules = { shaderStages[0].module, shaderStages[1].module };
|
||||||
VK_CHECK_RESULT(vkCreateGraphicsPipelines(device, pipelineCache, 1, &pipelineCreateInfo, nullptr, &pipeline));
|
VK_CHECK_RESULT(vkCreateGraphicsPipelines(device, pipelineCache, 1, &pipelineCreateInfo, nullptr, &pipeline));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Command buffer creation (for compute work submission)
|
Command buffer creation
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
VkCommandBuffer commandBuffer;
|
VkCommandBuffer commandBuffer;
|
||||||
|
|
@ -683,7 +685,7 @@ public:
|
||||||
VK_CHECK_RESULT(vkAllocateMemory(device, &memAllocInfo, nullptr, &dstImageMemory));
|
VK_CHECK_RESULT(vkAllocateMemory(device, &memAllocInfo, nullptr, &dstImageMemory));
|
||||||
VK_CHECK_RESULT(vkBindImageMemory(device, dstImage, dstImageMemory, 0));
|
VK_CHECK_RESULT(vkBindImageMemory(device, dstImage, dstImageMemory, 0));
|
||||||
|
|
||||||
// Do the actual blit from the swapchain image to our host visible destination image
|
// Do the actual blit from the offscreen image to our host visible destination image
|
||||||
VkCommandBufferAllocateInfo cmdBufAllocateInfo = vks::initializers::commandBufferAllocateInfo(commandPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY, 1);
|
VkCommandBufferAllocateInfo cmdBufAllocateInfo = vks::initializers::commandBufferAllocateInfo(commandPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY, 1);
|
||||||
VkCommandBuffer copyCmd;
|
VkCommandBuffer copyCmd;
|
||||||
VK_CHECK_RESULT(vkAllocateCommandBuffers(device, &cmdBufAllocateInfo, ©Cmd));
|
VK_CHECK_RESULT(vkAllocateCommandBuffers(device, &cmdBufAllocateInfo, ©Cmd));
|
||||||
|
|
@ -806,12 +808,6 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
vkQueueWaitIdle(queue);
|
vkQueueWaitIdle(queue);
|
||||||
|
|
||||||
#if DEBUG
|
|
||||||
PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallback = reinterpret_cast<PFN_vkDestroyDebugReportCallbackEXT>(vkGetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT"));
|
|
||||||
assert(vkDestroyDebugReportCallback);
|
|
||||||
vkDestroyDebugReportCallback(instance, debugReportCallback, nullptr);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
~VulkanExample()
|
~VulkanExample()
|
||||||
|
|
@ -820,7 +816,6 @@ public:
|
||||||
vkFreeMemory(device, vertexMemory, nullptr);
|
vkFreeMemory(device, vertexMemory, nullptr);
|
||||||
vkDestroyBuffer(device, indexBuffer, nullptr);
|
vkDestroyBuffer(device, indexBuffer, nullptr);
|
||||||
vkFreeMemory(device, indexMemory, nullptr);
|
vkFreeMemory(device, indexMemory, nullptr);
|
||||||
|
|
||||||
vkDestroyImageView(device, colorAttachment.view, nullptr);
|
vkDestroyImageView(device, colorAttachment.view, nullptr);
|
||||||
vkDestroyImage(device, colorAttachment.image, nullptr);
|
vkDestroyImage(device, colorAttachment.image, nullptr);
|
||||||
vkFreeMemory(device, colorAttachment.memory, nullptr);
|
vkFreeMemory(device, colorAttachment.memory, nullptr);
|
||||||
|
|
@ -832,7 +827,18 @@ public:
|
||||||
vkDestroyPipelineLayout(device, pipelineLayout, nullptr);
|
vkDestroyPipelineLayout(device, pipelineLayout, nullptr);
|
||||||
vkDestroyDescriptorSetLayout(device, descriptorSetLayout, nullptr);
|
vkDestroyDescriptorSetLayout(device, descriptorSetLayout, nullptr);
|
||||||
vkDestroyPipeline(device, pipeline, nullptr);
|
vkDestroyPipeline(device, pipeline, nullptr);
|
||||||
|
vkDestroyPipelineCache(device, pipelineCache, nullptr);
|
||||||
vkDestroyCommandPool(device, commandPool, nullptr);
|
vkDestroyCommandPool(device, commandPool, nullptr);
|
||||||
|
for (auto shadermodule : shaderModules) {
|
||||||
|
vkDestroyShaderModule(device, shadermodule, nullptr);
|
||||||
|
}
|
||||||
|
vkDestroyDevice(device, nullptr);
|
||||||
|
#if DEBUG
|
||||||
|
PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallback = reinterpret_cast<PFN_vkDestroyDebugReportCallbackEXT>(vkGetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT"));
|
||||||
|
assert(vkDestroyDebugReportCallback);
|
||||||
|
vkDestroyDebugReportCallback(instance, debugReportCallback, nullptr);
|
||||||
|
#endif
|
||||||
|
vkDestroyInstance(instance, nullptr);
|
||||||
#if defined(VK_USE_PLATFORM_ANDROID_KHR)
|
#if defined(VK_USE_PLATFORM_ANDROID_KHR)
|
||||||
vks::android::freeVulkanLibrary();
|
vks::android::freeVulkanLibrary();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue