Given the uplifting description of why you choose Rust linked from the Readme, I find it surprising that on macOS you rely on MoltenVK for graphics. There is a Rust alternative - gfx-portability that you can build with Cargo and link to, either as a static library, or as a dynamic, including using with Vulkan SDK/loader.
Also related to #373 and #233.
Obviously, this issue will become irrelevant if Rendy or wgpu-rs is going to replace Vulkano, which is pending investigation in #374.
Thanks @kvark, we are absolutely interested in partnering with gfx-portability - thanks a lot for reaching out! Let me share our graphics history with you so far:
I find it surprising that on macOS you rely on MoltenVK for graphics
Keep in mind it's been roughly 1.5 / 2 years since we decided to go with vulkano now. At the time it seemed the safer choice as gfx was undergoing major re-writes, and I believe the birth of gfx-hal, gfx-portability etc was only just kicking off at this point. vulkano on the other hand had a maintainer at the time and a much higher-level interface that comparatively seemed ready to go. As a result, we also invested time into getting moltenvk to work, as that was the only feasible approach forward we were aware of that was compatible with vulkano and the vulkano repo already had some discussion on getting it going. The vulkano guide, as short as it is, was also greatly influential in our decision to go with vulkano as the steps of integration were for the most part laid out before us.
Since then, the rust graphics landscape has changed considerably. By the end of our integration of vulkano, tomaka had faded out of maintaining vulkano entirely and soon after rukai also stopped due to time constraints. We now have maintainer-ship access to the vulkano crates, but we almost exclusively use it for trying to patch bugs that we run into. Meanwhile, gfx-rs has been making incredibly impressive strides toward an ambitious goal and the community around it has only been growing!
When we began using vulkano we were aware we would likely be contributing some patches, but a big part of choosing it was our lack of time to maintain and develop the lower-level graphics stack features - something that was continuing at a strong pace at the time but is no longer the case. So here we are now looking for alternative approaches, hence #374.
I think the key things blocking us from moving forward on a switch to the gfx ecosystem are:
Thank you for taking time to respond in such detail! I appreciate the history dive into your graphics journey, and it all makes sense.
Keep in mind it's been roughly 1.5 / 2 years since we decided to go with vulkano now. At the time it seemed the safer choice as gfx was undergoing major re-writes, and I believe the birth of gfx-hal, gfx-portability etc was only just kicking off at this point.
Truth is, gfx-portability was born (and operational to some extent) roughly 2 years ago, even before MoltenVK got open-sourced, which you can see on our contributor timelines: gfx-portability vs MoltenVK. Changes in gfx-rs API didn't affect gfx-portability, since the C API is set in stone. There were quality issues, missing features, etc, of course, but same largely applied to MoltenVK, just to a lesser extent. Both libraries now became more mature, but in a different way.
Overall, the story of Vulkano vs gfx-rs/portability isn't the best highlight of Rust evolution. Vulkano's premise was based on the availability of Vulkan on all platforms, which was developed by Vulkan Portability Initiative (the technical sub-group within Vulkan), which we (gfx-rs team) were more than just a part of - we were largely driving the initiative at that time with our investigations of the API differences, exploration of DX12, and pioneering the CTS port on macOS. So, in the big picture, Vulkano's success depended on gfx-rs team and gfx-portability success, and yet Vulkano author decided to promote MoltenVK integration and didn't pay much attention to our work (see https://github.com/vulkano-rs/vulkano/issues/525).
Anyhow, going out of the history dive, I think my curiosity has been satisfied. Thank you! I'm looking forward to the dialog on how we can help you solve the graphics needs (in #374).
Small correction:
Truth is, gfx-portability was born (and operational to some extent) roughly 2 years ago, even before MoltenVK got open-sourced
MoltenVK was only announced to be open-source on GDC 2018, which is about 6 months after gfx-portability was able to run the first samples (~Sept 2017).
Most helpful comment
Thanks @kvark, we are absolutely interested in partnering with gfx-portability - thanks a lot for reaching out! Let me share our graphics history with you so far:
Keep in mind it's been roughly 1.5 / 2 years since we decided to go with
vulkanonow. At the time it seemed the safer choice as gfx was undergoing major re-writes, and I believe the birth of gfx-hal, gfx-portability etc was only just kicking off at this point.vulkanoon the other hand had a maintainer at the time and a much higher-level interface that comparatively seemed ready to go. As a result, we also invested time into getting moltenvk to work, as that was the only feasible approach forward we were aware of that was compatible with vulkano and the vulkano repo already had some discussion on getting it going. The vulkano guide, as short as it is, was also greatly influential in our decision to go with vulkano as the steps of integration were for the most part laid out before us.Since then, the rust graphics landscape has changed considerably. By the end of our integration of vulkano, tomaka had faded out of maintaining vulkano entirely and soon after rukai also stopped due to time constraints. We now have maintainer-ship access to the vulkano crates, but we almost exclusively use it for trying to patch bugs that we run into. Meanwhile, gfx-rs has been making incredibly impressive strides toward an ambitious goal and the community around it has only been growing!
When we began using vulkano we were aware we would likely be contributing some patches, but a big part of choosing it was our lack of time to maintain and develop the lower-level graphics stack features - something that was continuing at a strong pace at the time but is no longer the case. So here we are now looking for alternative approaches, hence #374.
I think the key things blocking us from moving forward on a switch to the gfx ecosystem are: