Skip to content
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: Control secondary viewports format and present mode #8061

Draft
wants to merge 5 commits into
base: docking
Choose a base branch
from

Commits on Oct 14, 2024

  1. Vulkan: Re-Create main window pipeline and added optional color corre…

    …ction in the fragment shader
    
    API changes:
    - Added ImGui_ImplVulkan_ReCreateMainPipeline(...) to explicitly re-create the main window pipeline (when some of its properties are changed).
    - ImGui_ImplVulkan_CreateMainPipeline(...) does not implicitly use ImGui_ImplVulkan_InitInfo::PipelineRenderingCreateInfo, but a function parameter.
    - The main window pipeline is created only if possible during ImGui_ImplVulkan_Init(...) (if a render pass or rendering info are given), else it should be created with ImGui_ImplVulkan_ReCreateMainPipeline(...) before rendering)
    Concerning color correction:
    - The default behavior of imgui_impl_vulkan does not change (no color correction is applied).
    - A color correction method is decided at pipeline compile time (through a vulkan specialization constant)
    - Color correction parameters can either be set at pipeline compile time (static mode), or through push_constant (dynamic mode, default)
    - A gamma correction mode is implemented (and an extra alpha gamma correction).
    - New color modes can easily be added.
    Concerning multi view ports:
    - Secondary viewports surface format and present mode can now be controlled by the application view ImGui_ImplVulkan_RequestSecondaryViewportsChanges(...)
    - Secondary viewports can also use color correction if they use the application requested format.
    - Each viewport now has its own VkRenderPass and VkPipeline (cached in the backed data). This fits to the fact that each viewport might have a different format (the previous code was making this (quite reasonable) assumption).
    - Recycle some viewport resource on swapchain recreation if possible (CommandPool, CommandBuffer, Fence, Semaphores) rather than recreating them every time.
    SuperRonan committed Oct 14, 2024
    Configuration menu
    Copy the full SHA
    640ca18 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    cf1137f View commit details
    Browse the repository at this point in the history

Commits on Oct 15, 2024

  1. Configuration menu
    Copy the full SHA
    5020b69 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    c41a141 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    37846f4 View commit details
    Browse the repository at this point in the history