33 releases
0.9.0 | Jun 19, 2021 |
---|---|
0.7.0 | Jan 30, 2021 |
0.6.5 | Oct 15, 2020 |
0.5.11 | Jul 22, 2020 |
0.1.0 | Dec 27, 2018 |
#1112 in Graphics APIs
9,561 downloads per month
Used in 143 crates
(12 directly)
650KB
12K
SLoC
gfx-backend-vulkan
Vulkan backend for gfx-rs.
Normalized Coordinates
Render | Depth | Texture |
---|---|---|
Binding Model
Dimensions of the model:
- Shader stage: vs, fs, cs, others
- Descriptor set: 0 ..
max_bound_descriptor_sets
- Binding: sparse, but expected to be somewhat tight
Mirroring
HAL is modelled after Vulkan, so everything should be 1:1.
lib.rs
:
Vulkan backend internals.
Stack memory
Most of the code just passes the data through. The only problem
that affects all the pieces is related to memory allocation:
Vulkan expects slices, but the API gives us Iterator
.
So we end up using a lot of inplace_it
to get things collected on stack.
Framebuffers
One part that has actual logic is related to framebuffers. HAL is modelled
after image-less framebuffers. If the the Vulkan implementation supports it,
we map it 1:1, and everything is great. If it doesn't expose
KHR_imageless_framebuffer
, however, than we have to keep all the created
framebuffers internally in an internally-synchronized map, per B::Framebuffer
.
!
Dependencies
~11MB
~248K SLoC