This is a slightly controversial thing. Originally I put Vulkan as the first choice that is available on all platforms in the spirit of Vulkan Portability Initiative. @grovesNL then pointed me to the fact that we don't want to prefer Vulkan devices over Metal ones on Apple platforms.
Thinking about this some more, I don't think there is a practical end-user case for running Vulkan there, since it's not going to be as efficient as wgpu-rs running on Metal anyway. The developer case though is - to allow the use of Vulkan validation layers to fill the gaps in our built-in validation. This is clearly temporary until our validation matures enough.
I think what we should do is the following:
- keep Vulkan to be the first choice
- on Apple platforms, make Vulkan to be an optional dependency, disabled by default
This way, developers can force-enable the dependency when debugging, knowing that Vulkan devices will show up first, but end users will not need to build the Vulkan backend or care about it.
This is a slightly controversial thing. Originally I put Vulkan as the first choice that is available on all platforms in the spirit of Vulkan Portability Initiative. @grovesNL then pointed me to the fact that we don't want to prefer Vulkan devices over Metal ones on Apple platforms.
Thinking about this some more, I don't think there is a practical end-user case for running Vulkan there, since it's not going to be as efficient as wgpu-rs running on Metal anyway. The developer case though is - to allow the use of Vulkan validation layers to fill the gaps in our built-in validation. This is clearly temporary until our validation matures enough.
I think what we should do is the following:
This way, developers can force-enable the dependency when debugging, knowing that Vulkan devices will show up first, but end users will not need to build the Vulkan backend or care about it.