- update spirv_cross to 0.21:
- force zero initialization in all generated shaders
- force the use of native arrays for MSL
- fix layer checks in
clear_image
- enable multisampling and object labels
- fix descriptor binding
- fix Android build
- API changes:
- the old Vulkan-ish swapchain model is completely removed
pso::Stage
enum is removed from the API intogfx-auxil::ShaderStage
SubresourceRange
allows unbound array layers and mipmap levels- new
PrimitiveAssemblerDesc
enum DescriptorPool::free_sets
is renamed to justfree
- Features:
- object labels for pipelines and their layouts
- draw with indirect counts
- mesh shaders (Vulkan with NV extension only, for now)
- fix binding of dynamic uniform buffers
- fix creation of depth-stencil views
- fix command allocator reset validation errors
- fix the crash on
unconfigure_swapchain
- update libloading to 0.6
- switch from
core-graphics
tocore-graphics-types
.
- update metal to 0.20
- switch from
cocoa
tococoa-foundation
. - remove core-graphics dependency
- update cocoa to 0.22 and metal to 0.19.
- skip unknown memory types
- mock descriptor set creation functions
- start turning the empty backend into a mock instead of always panicking
- mock memory creation and buffer and image creation functions
- add
DRAW_INDIRECT_COUNT
feature and enable on supported backends
- add descriptor indexing features and enable on supported backends
- add
TEXTURE_DESCRIPTOR_ARRAY
feature and enable on supported backends
- implement descriptor pool destruction
- fix detection of integrated gpus
- fix UB in
compile_shader
- update spirv_cross to 0.20
- fix offset calculation for root descriptors
- fix drop of physical devices
- handle device lost during a fence wait
- rework the way swapchain waits to acquire new frames
- gracefully detect when the driver supports it but hardware does not
- switch to
VK_LAYER_KHRONOS_validation
- fix support for
AMD_NEGATIVE_VIEWPORT_HEIGHT
- fix debug assertion for the index buffer range
- fix
NDC_Y_FLIP
feature
- fix debug color markers
- fix detection of the
MirrorClamp
mode
- API changes:
- allocating command buffers or descriptor sets no longer touches the heap
DescriptorType
is now a rich enumRangeArg
trait is removed, instead the offsets are required, and the sizes are optional- Removed
Anisotropic
andSubpassRef
enums in favor of options
- Features:
- debug markers
- new
WrapMode::MirrorClamp
- Y-flipped NDC space
- read-only storage descriptors
- support version 2.2 of the Metal shading language
- work around Intel swapchain bug when acquiring images
- fix a crash at initialization time
- disable coherent memory for being broken
- rewrite the binding model completely
- fix missing iOS metallib
- fix viewport/scissor after
clear_attachments
call
Error
implementations- fix
ShaderStageFlags::ALL
- switch to explicit linking of "d3d12.dll", "d3d11.dll" and "dxgi.dll"
- switch to explicit linking of "d3d12.dll" and "dxgi.dll"
- all strongly typed HAL wrappers are removed
- all use of
failure
is removed - alternative swapchain model built into
Surface
Instance
trait is assocated byBackend
, now includes surface creation and destructionSurface
capabiltities queried are refactored,PresentMode
is turned into bitflagsPrimitive
enum is refactored and moved topso
moduleSamplerInfo
struct is refactored and renamed toSamplerDesc
- debug labels for objects
- improve external render pass barriers
- fix immutable samplers in combined image-samplers
- fix iOS build
- add
Instance::try_create
methods
- fix memory leaks in render pass and labels creation
- graphics pipeline state refactor
- no
winit
feature by default - events support
- more device limits are exposed
- Vulkan: fixed swapchain ranges, stencil dynamic states
- DX12: "readonly" storage support
- Metal: argument buffer support, real immutable samplers
- GL: compute shaders, new memory model, WebGL support, lots of other goodies
- optimize shader visibility of descriptors
- fix exposed MSAA capabilities and resolves
- fix image view creation panics
- fixed depth clip mode support, updates spirv-cross
Debug
implementations forInstance
- allow building on macOS for Vulkan Portability
- fixed memory leaks in render pass descriptors and function strings
Debug
implementations
- fix
VK_EXT_debug_utils
check at startup
- pipeline cache support
- rich presentation errors
- nicer specialization constants
Debug
implementations- consistent format names
- more limits
- surface alpha composition properties
- descriptor pool create flags
- removal of
FrameSync
- fixed buffer bind flags
- synchronization of disjoint CB across copy operations
- depth texture views
- typeless formats for textures
- fixed vertex buffer binding
- fixed non-array views of array textures
- secondary command buffers
- multiple iOS fixes
- fixed surface dimensions
get_fence_status
- dummy surface creation
gfx-hal
: graphics hardware abstraction layergfx-backend-*
: Vulkan, D3D12, D3D11, Metal, and GLrange-alloc
: helper struct to manage ranges- unsafe qualifiers on all the API methods
- non-clonable command buffers and resources