Vulkan: Rewrite GHOST_ContextVK #111473
This is a rewrite of GHOST_ContextVK to align with Metal backend as described
in #111389 - solution 3 with the adaptation that GHOST is still responsible
for presenting the swap chain image and a post callback is still needed in
case the swapchain needed to be recreated.
Technical documentation: https://developer.blender.org/docs/eevee_and_viewport/gpu/vulkan/swap_chain/
- Renderpasses and framebuffers are not owned anymore by GHOST_ContextVK
- VKFramebuffer doesn't contain a swap chain image.
- Swapchain images can only be used as a blit destination or present source.
Not as an attachment.
- GHOST_ContextVK::swapBuffers would call a callback with the image the
GPU module needs to blit the results to.
- Clearing of depth/stencil attachments when no depth write state is set.
- Enable VK_KHR_maintenance4 to relax the stage interface mapping.
- Removes most vulkan validation warnings/errors.
- Detection of frame buffer changes that needs to be applied before
performing a command requiring render pass (draw/clear attachment)
- Late retrieval of a swap chain image results in better overall performance as
Blender doesn't need to wait until the image is presented on the screen.
- Easier API and clearer state (transitions)
- More control over Image layouts and command buffer states. (Better alignment with
Package build started. Download here when ready.
No due date set.
No dependencies set.
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?