You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'd like to raise a problem arising when using vulkano-util with window surface creation. Current implementation takes the first surface from the list when creating Window instance (see: https://github.com/vulkano-rs/vulkano/blob/d08d9f587da6d2bbef2f1857e6685c6ba590d5c5/vulkano-util/src/renderer.rs#L91C1-L95C16) which may not be optimal when rendering R8G8B8A8_UNORM-formatted texels to the screen (requires additional format conversions that may produce suboptimal results, especially with color samplers and more complex graphics pipelines).
The list of available surface formats depends on the device and display manager (X, Wayland or other). I tested on 2 Linux machines and an Apple one. All configurations show different surface formats in the list, the first of them being B8G8R8A8_SRGB, R8B8B8A8_SRGB or even HDR-related for Apple ones.
Thus, I am thinking if a user-defined function would help to choose an available surface format. Alternatives might exist, though. Thank you
EDIT 2024-01-04: I have managed to make a workaround in my project with setting mutable swapchain format where the default one is provided by the window (say, {format}_SRGB and the alternative view is {format}_UNORM, while handling all the possible image formats. The graphics pipeline must be handled in {format}_UNORM for correct rendering. Although it needs an unnecessary khr_swapchain_mutable_format device extension and this issue is still relevant.
The text was updated successfully, but these errors were encountered:
Issue
Hello,
I'd like to raise a problem arising when using vulkano-util with window surface creation. Current implementation takes the first surface from the list when creating Window instance (see: https://github.com/vulkano-rs/vulkano/blob/d08d9f587da6d2bbef2f1857e6685c6ba590d5c5/vulkano-util/src/renderer.rs#L91C1-L95C16) which may not be optimal when rendering R8G8B8A8_UNORM-formatted texels to the screen (requires additional format conversions that may produce suboptimal results, especially with color samplers and more complex graphics pipelines).
The list of available surface formats depends on the device and display manager (X, Wayland or other). I tested on 2 Linux machines and an Apple one. All configurations show different surface formats in the list, the first of them being B8G8R8A8_SRGB, R8B8B8A8_SRGB or even HDR-related for Apple ones.
Thus, I am thinking if a user-defined function would help to choose an available surface format. Alternatives might exist, though. Thank you
EDIT 2024-01-04: I have managed to make a workaround in my project with setting mutable swapchain format where the default one is provided by the window (say,
{format}_SRGB
and the alternative view is{format}_UNORM
, while handling all the possible image formats. The graphics pipeline must be handled in{format}_UNORM
for correct rendering. Although it needs an unnecessarykhr_swapchain_mutable_format
device extension and this issue is still relevant.The text was updated successfully, but these errors were encountered: