vk: Refactor swapchain format selection #1813
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Use a series of stable-partitions to sort the list of available formats to find the best candidate surface-format/color-space that is a non-sRGB format being presented in an sRGB color-space. Vulkan mandates that all surface formats that have SRGB forms must also support a UNORM form.
This is basically just RGBA8/BGRA8 on all platforms still, but in a way that is still capable of falling back to secondary formats in a stable way in the case that the primary choice is not available. Mobile devices especially have a LOT of secondary HDR surface formats and other weird formats that can be used to present such as RGBA16 or RGBA565. With stable partitions, if we can't get our best option then there is always a "next best thing" to fall back on rather than relying on the driver-order.