Pārlūkot izejas kodu

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

ocornut 6 dienas atpakaļ
vecāks
revīzija
26aa81a8b1
2 mainītis faili ar 10 papildinājumiem un 11 dzēšanām
  1. 7 8
      backends/imgui_impl_vulkan.cpp
  2. 3 3
      backends/imgui_impl_vulkan.h

+ 7 - 8
backends/imgui_impl_vulkan.cpp

@@ -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)
-        p_dynamic_rendering_create_info = &v->PipelineRenderingCreateInfo;
+        || (v->UseDynamicRendering && v->PipelineRenderingCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR)
 #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
backends/imgui_impl_vulkan.h

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