It's gfx-rs aLL the way down


gfx-rs has been undergoing total rewrite in 2017. First, xxxLL crates appeared in the master branch. This was a prototype of new API growing right on the side of the main code, not sharing anything with it. We reached a point where we could run a quad example on Vulkan, D3D12, and Metal.

Then we started merging parts into the main code base. This appeared to be huge and complex task. Porting the higher layer (old gfx crate) was especially challenging, and it was getting worse with time given the main code base slowly drifted away from ll crates. Changes were made to both sides, making the integration a non-trivial process.

We are happy to report now that the LL crates are completely merged! But we are by far not done yet: gfx_render is only half way there, gfx_support and the main examples aren’t even started. At this point, we just realized it makes no sense to continue pretending master means much (while working in ll branch), so everything should get in.

Everything will be broken for quite some time. Examples are disabled, features missing, etc. Old releases (v0.16) are still fully supported, there is a lot of code out there using it. The new v0.17 is probably going to come out soon from pre-ll branch

Here is a brief overview of the changes and the new gfx-rs structure:

  • gfx_core is renamed to gfx-hal, our Hardware Abstraction Layer, which is essentially implementing Vulkan Portability with a tiny slice of type safety.
  • gfx is renamed to gfx-render, our higher-level rendering layer, which tries to be a modern revision of the old gfx (with render passes, descriptor sets, compute, etc) that is safe to work with at the cost of less control and a bit of overhead.
  • gfx_device_XXX and gfx_window_YYY are merged into gfx-backend-XXX backends: Vulkan, D3D12, and Metal are operational, GL is in progress.

Hopefully, you’ll find the new gfx-rs more powerful and easier to work with. For instance, we have a Backend trait now to solve the trait maze problem once and for all :wink: Also, you don’t need to learn yet another API now, as long as you are familiar with Vulkan.

There are ambitious plans in the pipeline for gfx-rs application, and we are slowly but steadily making them a reality. Help is appreciated!


Thank you for the update! Your all doing amazing work, and it is much appreciated!


Will you continue to support D3D11? I can’t see it being mentioned.


D3D11 is not planned at the moment, unless someone volunteers to port the old backend onto gfx-hal. From the coverage point of view, Windows platform has already enough backends it can run.