Backends: Vulkan: misc amends (makes ImGui_ImplVulkan_MainPipelineCreateInfo::PipelineRenderingCreateInfo consistent with InitInfo). (#8110, #8111, #8053)

This commit is contained in:
ocornut
2025-09-04 18:05:15 +02:00
parent 1ecc34a0b1
commit 26aa81a8b1
2 changed files with 10 additions and 11 deletions
+7 -8
View File
@@ -1102,19 +1102,18 @@ bool ImGui_ImplVulkan_CreateDeviceObjects()
} }
// Create pipeline // Create pipeline
const VkPipelineRenderingCreateInfoKHR* p_dynamic_rendering_create_info = nullptr; if (v->RenderPass
#ifdef IMGUI_IMPL_VULKAN_HAS_DYNAMIC_RENDERING #ifdef IMGUI_IMPL_VULKAN_HAS_DYNAMIC_RENDERING
if (v->UseDynamicRendering && v->PipelineRenderingCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR) || (v->UseDynamicRendering && v->PipelineRenderingCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR)
p_dynamic_rendering_create_info = &v->PipelineRenderingCreateInfo;
#endif #endif
if (v->RenderPass || p_dynamic_rendering_create_info != nullptr) )
{ {
ImGui_ImplVulkan_MainPipelineCreateInfo mp_info = {}; ImGui_ImplVulkan_MainPipelineCreateInfo mp_info = {};
mp_info.RenderPass = v->RenderPass; mp_info.RenderPass = v->RenderPass;
mp_info.Subpass = v->Subpass; mp_info.Subpass = v->Subpass;
mp_info.MSAASamples = v->MSAASamples; mp_info.MSAASamples = v->MSAASamples;
#ifdef IMGUI_IMPL_VULKAN_HAS_DYNAMIC_RENDERING #ifdef IMGUI_IMPL_VULKAN_HAS_DYNAMIC_RENDERING
mp_info.pDynamicRendering = p_dynamic_rendering_create_info; mp_info.PipelineRenderingCreateInfo = v->PipelineRenderingCreateInfo;
#endif #endif
ImGui_ImplVulkan_CreateMainPipeline(mp_info); ImGui_ImplVulkan_CreateMainPipeline(mp_info);
} }
@@ -1155,11 +1154,11 @@ void ImGui_ImplVulkan_CreateMainPipeline(const ImGui_ImplVulkan_MainPipelineCrea
v->MSAASamples = info.MSAASamples; v->MSAASamples = info.MSAASamples;
v->Subpass = info.Subpass; v->Subpass = info.Subpass;
VkPipelineRenderingCreateInfoKHR* pipeline_rendering_create_info = nullptr; const VkPipelineRenderingCreateInfoKHR* pipeline_rendering_create_info = nullptr;
#ifdef IMGUI_IMPL_VULKAN_HAS_DYNAMIC_RENDERING #ifdef IMGUI_IMPL_VULKAN_HAS_DYNAMIC_RENDERING
if (info.pDynamicRendering) if (v->UseDynamicRendering)
{ {
v->PipelineRenderingCreateInfo = *info.pDynamicRendering; v->PipelineRenderingCreateInfo = info.PipelineRenderingCreateInfo;
pipeline_rendering_create_info = &v->PipelineRenderingCreateInfo; pipeline_rendering_create_info = &v->PipelineRenderingCreateInfo;
} }
#endif #endif
+3 -3
View File
@@ -98,13 +98,13 @@ struct ImGui_ImplVulkan_InitInfo
// Need to explicitly enable VK_KHR_dynamic_rendering extension to use this, even for Vulkan 1.3. // Need to explicitly enable VK_KHR_dynamic_rendering extension to use this, even for Vulkan 1.3.
bool UseDynamicRendering; bool UseDynamicRendering;
#ifdef IMGUI_IMPL_VULKAN_HAS_DYNAMIC_RENDERING #ifdef IMGUI_IMPL_VULKAN_HAS_DYNAMIC_RENDERING
VkPipelineRenderingCreateInfoKHR PipelineRenderingCreateInfo; // Optional, valid if .sType == VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR VkPipelineRenderingCreateInfoKHR PipelineRenderingCreateInfo; // Optional, valid if .sType == VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR
#endif #endif
// (Optional) Allocation, Debugging // (Optional) Allocation, Debugging
const VkAllocationCallbacks* Allocator; const VkAllocationCallbacks* Allocator;
void (*CheckVkResultFn)(VkResult err); void (*CheckVkResultFn)(VkResult err);
VkDeviceSize MinAllocationSize; // Minimum allocation size. Set to 1024*1024 to satisfy zealous best practices validation layer and waste a little memory. VkDeviceSize MinAllocationSize; // Minimum allocation size. Set to 1024*1024 to satisfy zealous best practices validation layer and waste a little memory.
}; };
// Follow "Getting Started" link and check examples/ folder to learn about using backends! // Follow "Getting Started" link and check examples/ folder to learn about using backends!
@@ -123,7 +123,7 @@ struct ImGui_ImplVulkan_MainPipelineCreateInfo
uint32_t Subpass = 0; uint32_t Subpass = 0;
VkSampleCountFlagBits MSAASamples = {}; VkSampleCountFlagBits MSAASamples = {};
#ifdef IMGUI_IMPL_VULKAN_HAS_DYNAMIC_RENDERING #ifdef IMGUI_IMPL_VULKAN_HAS_DYNAMIC_RENDERING
const VkPipelineRenderingCreateInfoKHR* pDynamicRendering = nullptr; VkPipelineRenderingCreateInfoKHR PipelineRenderingCreateInfo; // Optional, valid if .sType == VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR
#endif #endif
}; };
IMGUI_IMPL_API void ImGui_ImplVulkan_CreateMainPipeline(const ImGui_ImplVulkan_MainPipelineCreateInfo& info); // (render_pass xor (p_dynamic_rendering && p_dynamic_rendering is correct (sType and pNext)) IMGUI_IMPL_API void ImGui_ImplVulkan_CreateMainPipeline(const ImGui_ImplVulkan_MainPipelineCreateInfo& info); // (render_pass xor (p_dynamic_rendering && p_dynamic_rendering is correct (sType and pNext))