|
|
@ -676,7 +676,7 @@ static void ImGui_ImplVulkan_CreatePipelineLayout(VkDevice device, const VkAlloc |
|
|
|
check_vk_result(err); |
|
|
|
} |
|
|
|
|
|
|
|
static void ImGui_ImplVulkan_CreatePipeline(VkDevice device, const VkAllocationCallbacks* allocator, VkPipelineCache pipelineCache, VkRenderPass renderPass, VkSampleCountFlagBits MSAASamples, VkPipeline *pipeline) |
|
|
|
static void ImGui_ImplVulkan_CreatePipeline(VkDevice device, const VkAllocationCallbacks* allocator, VkPipelineCache pipelineCache, VkRenderPass renderPass, VkSampleCountFlagBits MSAASamples, VkPipeline* pipeline) |
|
|
|
{ |
|
|
|
ImGui_ImplVulkan_CreateShaderModules(device, allocator); |
|
|
|
|
|
|
@ -784,24 +784,6 @@ bool ImGui_ImplVulkan_CreateDeviceObjects() |
|
|
|
{ |
|
|
|
ImGui_ImplVulkan_InitInfo* v = &g_VulkanInitInfo; |
|
|
|
VkResult err; |
|
|
|
VkShaderModule vert_module; |
|
|
|
VkShaderModule frag_module; |
|
|
|
|
|
|
|
// Create The Shader Modules:
|
|
|
|
{ |
|
|
|
VkShaderModuleCreateInfo vert_info = {}; |
|
|
|
vert_info.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO; |
|
|
|
vert_info.codeSize = sizeof(__glsl_shader_vert_spv); |
|
|
|
vert_info.pCode = (uint32_t*)__glsl_shader_vert_spv; |
|
|
|
err = vkCreateShaderModule(v->Device, &vert_info, v->Allocator, &vert_module); |
|
|
|
check_vk_result(err); |
|
|
|
VkShaderModuleCreateInfo frag_info = {}; |
|
|
|
frag_info.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO; |
|
|
|
frag_info.codeSize = sizeof(__glsl_shader_frag_spv); |
|
|
|
frag_info.pCode = (uint32_t*)__glsl_shader_frag_spv; |
|
|
|
err = vkCreateShaderModule(v->Device, &frag_info, v->Allocator, &frag_module); |
|
|
|
check_vk_result(err); |
|
|
|
} |
|
|
|
|
|
|
|
if (!g_FontSampler) |
|
|
|
{ |
|
|
@ -867,9 +849,6 @@ bool ImGui_ImplVulkan_CreateDeviceObjects() |
|
|
|
|
|
|
|
ImGui_ImplVulkan_CreatePipeline(v->Device, v->Allocator, v->PipelineCache, g_RenderPass, v->MSAASamples, &g_Pipeline); |
|
|
|
|
|
|
|
vkDestroyShaderModule(v->Device, vert_module, v->Allocator); |
|
|
|
vkDestroyShaderModule(v->Device, frag_module, v->Allocator); |
|
|
|
|
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
@ -894,6 +873,8 @@ void ImGui_ImplVulkan_DestroyDeviceObjects() |
|
|
|
ImGui_ImplVulkanH_DestroyWindowRenderBuffers(v->Device, &g_MainWindowRenderBuffers, v->Allocator); |
|
|
|
ImGui_ImplVulkan_DestroyFontUploadObjects(); |
|
|
|
|
|
|
|
if (g_ShaderModuleVert) { vkDestroyShaderModule(v->Device, g_ShaderModuleVert, v->Allocator); g_ShaderModuleVert = VK_NULL_HANDLE; } |
|
|
|
if (g_ShaderModuleFrag) { vkDestroyShaderModule(v->Device, g_ShaderModuleFrag, v->Allocator); g_ShaderModuleFrag = VK_NULL_HANDLE; } |
|
|
|
if (g_FontView) { vkDestroyImageView(v->Device, g_FontView, v->Allocator); g_FontView = VK_NULL_HANDLE; } |
|
|
|
if (g_FontImage) { vkDestroyImage(v->Device, g_FontImage, v->Allocator); g_FontImage = VK_NULL_HANDLE; } |
|
|
|
if (g_FontMemory) { vkFreeMemory(v->Device, g_FontMemory, v->Allocator); g_FontMemory = VK_NULL_HANDLE; } |
|
|
@ -1210,7 +1191,10 @@ void ImGui_ImplVulkanH_CreateWindowSwapChain(VkPhysicalDevice physical_device, V |
|
|
|
info.pDependencies = &dependency; |
|
|
|
err = vkCreateRenderPass(device, &info, allocator, &wd->RenderPass); |
|
|
|
check_vk_result(err); |
|
|
|
ImGui_ImplVulkan_CreatePipeline(device, allocator, VK_NULL_HANDLE, wd->RenderPass, VK_SAMPLE_COUNT_1_BIT, &wd->Pipeline); |
|
|
|
|
|
|
|
// We do not create a pipeline by default as this is also used by examples' main.cpp,
|
|
|
|
// but secondary viewport in multi-viewport mode may want to create one with:
|
|
|
|
//ImGui_ImplVulkan_CreatePipeline(device, allocator, VK_NULL_HANDLE, wd->RenderPass, VK_SAMPLE_COUNT_1_BIT, &wd->Pipeline);
|
|
|
|
} |
|
|
|
|
|
|
|
// Create The Image Views
|
|
|
@ -1277,6 +1261,7 @@ void ImGui_ImplVulkanH_DestroyWindow(VkInstance instance, VkDevice device, ImGui |
|
|
|
IM_FREE(wd->FrameSemaphores); |
|
|
|
wd->Frames = NULL; |
|
|
|
wd->FrameSemaphores = NULL; |
|
|
|
vkDestroyPipeline(device, wd->Pipeline, allocator); |
|
|
|
vkDestroyRenderPass(device, wd->RenderPass, allocator); |
|
|
|
vkDestroySwapchainKHR(device, wd->Swapchain, allocator); |
|
|
|
vkDestroySurfaceKHR(instance, wd->Surface, allocator); |
|
|
|