ash/Changelog.md
2021-08-23 12:46:38 +02:00

7.1 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased - ReleaseDate

[0.33.1] - 2021-08-23

Fixed

  • util: Zero-initialize result to prevent possible uninit memory read (#470)

[0.33.0] - 2021-07-30

Added

  • Regenerated with Vulkan-Headers 1.2.186 (#456, #454, #446, #429)
  • Generate push_next function for all extended structs (#305)
  • Vulkan 1.2.175: Provisional Video Extensions (#417)
  • Globally remove all allow(dead_code) exceptions and make extensions public (#430)
  • Add extension wrapper for VK_KHR_synchronization2 (#403)
  • added missing functions to V1_0 traits (#416)
  • extensions/khr: Add VK_KHR_external_fence_fd wrapper (#413)
  • Add VK_EXT_extended_dynamic_state extension (#421)
  • Add VK_KHR_get_physical_device_properties2 extension (#400)
  • extensions/khr: Add ExternalSemaphoreFd safe wrapper (#395)
  • Add VK_KHR_get_memory_requirements2 extension (#401)
  • Add VK_EXT_full_screen_exclusive extension (#399)
  • Add VK_NN_vi_surface extension (#398)
  • Add merge_pipeline_caches, queue_bind_sparse, get_render_area_granularity to DeviceV1_0 (#397)
  • Add VK_KHR/EXT_buffer_device_address extension (#405)
  • Add VK_KHR_maintenance extensions (#406)

Changed

  • Use PFN_ types for struct members instead of repeating function signature (#438)
  • Untangle mismatched parameter/return fn signatures in types (#437)
  • Mark all function pointer types as unsafe (#436)
  • pSampleMask setter should write NULL if slice is empty (#432)
  • vk/platform_types: Mark SECURITY_ATTRIBUTES as a true ffi::c_void (#433)
  • Impl trait functions directly on EntryCustom/Instance/Device (#412)
  • Improve Result's Display impl for extension values (#424)
  • Use lifetime borrows instead of raw pointers in pp_geometries (#420)
  • Entry::new returns Err when entry point isn't found (#390)
  • Remove the _mvk suffix from the two extensions' functions (#407)

Fixed

  • ash/extensions: Fix missing and broken autolinks to Vulkan docs (#459)
  • Adds LICENSE-* files to crate subdirectories (#452)
  • external_memory_fd: Initialize output struct with proper sType (#394)
  • entry_libloading: Do not pass AsRef implementation by reference (#389)

0.32.1 - 2021-03-29

Added

  • Add high-level extension wrapper for the 1.1 extension VK_KHR_create_renderpass2 (#414)

0.32.0 - 2021-03-07

Added

  • Final KHR RayTracing support (VK_KHR_ray_tracing_pipeline, VK_KHR_ray_query and VK_KHR_acceleration_structure device extensions)
  • VK_NV_device_diagnostics_config device extension
  • VK_KHR_deferred_host_operations device extension
  • Expose header version and extension spec version constants
  • Provide Vulkan library loader from custom path

Changed

  • Removed deprecated experimental VK_KHR_ray_tracing extension
  • Update Vulkan-Headers to 1.2.168
  • Update libloading from 0.6 to 0.7

Fixed

  • Turn c_void-returning functions into Rust ()
  • Use best guess for ggp extension types
  • Use raw pointers to static-sized arrays in FFI signatures
  • rename parameter of get_physical_device_surface_support

0.31.0 - 2020-05-10

Added

  • libloading is now an optional dependency, but still used by default
  • Add metal surface extension
  • Implement VK_KHR_draw_indirect_count
  • Added const qualifier to as_raw and from_raw fns on enums

Changed

  • The vk::Device parameter in 1.2 functions is now implicit
  • Moved library creation out of Entry::new_custom

Fixed

  • Initialize MemoryRequirements with Default instead of zeroed

0.30.0 - 2020-03-22

Added

  • Support for Vulkan 1.2 (Generated from spec 1.2.135)
  • Add VK_KHR_timeline_semaphore extension support
  • Add VK_KHR_ray_tracing extension support
  • Add VK_KHR_external_memory_fd extension support
  • More safety docs
  • Expose raw function pointers in extensions

Changed

  • Switch to libloading
  • Vulkan version macros are now const functions
  • Switched to a new changelog format

Fixed

  • Fix XCB types
  • Fix OSX build errors of the examples

Before 0.30.0

0.29.0

  • -Breaking-: Removed Display impl for flags. The Debug impl now reports flags by name.
  • Functions now have a doc comment that links to the Vulkan spec
  • Entry has a new method called try_enumerate_instance_version which can be used in a 1.0 context.
  • The generator now uses BTreeMap for better diffs.

0.28.0

  • Switched to a new changelog format
  • Fixed a build issue on ARM.
  • -Breaking- Arrays are now passed by reference.
  • Builders are now marked as #[transparent].
  • -Breaking- Renamed .next(..) to push_next. push_next is only available on structs that are passed directly. Additionally push_next only accepts structs that can be inserted into the pointer chain. Read the readme for more information.
  • New -experimental- extensions. Those do not follow the semver rules and can be removed at any time.
  • Added AmdGpaInterface extension.

0.27.0/1

  • Extensions are now namespaced. ash::extensions::khr::Swapchain
  • Removed vendor tags from extension methods
  • Added missing functions for VkEvent
  • The examples were updated to use the new builder pattern
  • A SPIR-V parsing function ash::util::read_spv
  • Added get_pipeline_cache_data

0.26.0

  • Fix loader on MacOS.

  • Expose function pointers for easier interop with external libraries.

  • Builder now uses bool instead of Bool32.

0.25.0

  • Adds support for Vulkan 1.1

  • Constants are not represented as an enum anymore. Constants and flags are both represented as associated constants.

flags: vk::COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,
//to
flags: vk::CommandPoolCreateFlags::RESET_COMMAND_BUFFER_BIT,

  • Pretty printing for flags

  • Handles can be loaded from outside of ash. See SomeHandle::from_raw. This is useful if you need to interact with a C library.

  • Removing versioning from ash. V1_X are now gone. Versioning had very little benefit in practice, Entry, Instance and Device are now version free. A custom loader can still be implemented. The various traits still remain DeviceV1_0.

  • vk.rs is now generated from vk.xml

  • Ash now includes all docs inside the vk.xml, and are visible in rustdoc.

  • Default is now implemented for all structs

  • There is now a builder pattern

  • Handles are now #[repr(transparent)]

  • Various bug fixes

0.18.0

  • Fixes arm build => uses libc everywhere. Remove AlignByteSlice.

0.17.0

  • Refactor Align to use vk::DeviceSize.

0.16.0

  • map_memory now returns a void ptr

  • ash::util::Align is a helper struct that can write to aligned memory.