-
-
Notifications
You must be signed in to change notification settings - Fork 10.1k
-
-
Notifications
You must be signed in to change notification settings - Fork 10.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Vulkan global pipeline is unable to distinguish user render-pass vs gw renderpass. #3253
Comments
Hello @FunMiles, I haven't been able to look at this in details but a thoughtful pull-request would be appreciated to fix the issue, if you understand it yourself. |
HI @ocornut, I have created a pull-request. It refactors some shader-module creation code and adds one member to the externally visible |
All fixed by #3459, thank you! |
Version/Branch of Dear ImGui:
Version: commit 9a363c7c922c04440d0b1901a61e14b796c84fae
Branch: docking
Back-end/Renderer/Compiler/OS
Back-ends: imgui_impl_vulkan.cpp + imgui_impl_glfw.cpp
Compiler: clang++
Operating System: Mac OS X / Linux
My Issue/Question:
I am using the docking branch of Dear ImGui in a code of mine. Everything works fine but when one of the Dear ImGui windows is given a new system window, the Vulkan Khronos debug layer gives an error:
I have investigated and the cause is fairly simple. The Dear ImGui rendering system has two paths: one for the main user-created window, in which, for Vulkan the user sets-up the render pass. The other path is the one used for any new window created when un-docking a window from the main window. In that path, ImGui has created its own render pass and keeps it as
wd->RenderPass
.However, there is only one VkPipeline (
g_Pipeline
) created. That pipeline is created with the user-supplied render pass. And in general, there's no guarantee that the render pass created for the window is compatible with the user-supplied one.The solution is to create a pipeline for the internally-created windows and use that pipeline for drawing such windows. The only difficulty is that the window/rendering context is not currently passed to
ImGui_ImplVulkan_RenderDrawData
.I will probably start by adding an optional last argument passing the pipeline to be used and if not supplied, the current
g_Pipeline
will be used.Standalone, minimal, complete and verifiable example:
I have debugged the issue. I can create a complete verifiable example in the context of the Vookoo framework
It's not exactly what you'd call a minimal example. Is that useful?
The text was updated successfully, but these errors were encountered: