ash/Changelog.md
2022-11-23 23:23:26 +01:00

15 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.

0.37.1 - 2022-11-23

Changed

  • Inlined builder setters (partial backport from #602)
  • Inlined Default impls and trivial Instance/Device/Entry wrapper methods (#606, #632)
  • Renamed debug_utils_set_object_name() to set_debug_utils_object_name() and debug_utils_set_object_tag() to set_debug_utils_object_tag() for consistency and deprecated old ones (#661)

Added

  • Added VK_EXT_image_drm_format_modifier device extension (#603)
  • Set MSRV (Minimum Supported Rust Version) in Cargo.toml for clearer errors (#604)
  • Update Vulkan-Headers to 1.3.235 (#605, #608, #619, #655, #667)
  • Added const STRUCTURE_TYPE to all Vulkan structures for matching with match_struct! macro (#614)
  • Added VK_EXT_sample_locations device extension (#616)
  • Added VK_NV_coverage_reduction_mode device extension (#617)
  • Added VK_KHR_ray_tracing_maintenance1 device extension (#620)
  • Added VK_EXT_image_compression_control device extension (#621)
  • Added new functions to VK_KHR_swapchain, available since Vulkan 1.1 (#629)
  • Added VK_KHR_device_group_creation instance extension (#630)
  • Added VK_KHR_device_group device extension (#631)
  • Added VK_EXT_mesh_shader device extension (#657)
  • Added VK_EXT_acquire_drm_display instance extension (#668)
  • Added VK_EXT_extended_dynamic_state3 device extension (#671)
  • Added VK_EXT_descriptor_buffer instance extension (#679)

Fixed

  • khr::RayTracingPipeline: Set the buffer length in get_ray_tracing_capture_replay_shader_group_handles so it no longer always returns an empty Vec (#658)

0.37.0 - 2022-03-23

Changed

  • Dropped auto-generated wrapper methods from function pointer structs in favor of direct invocation of function pointers (#599)
  • Constified extension names (#590)
  • VK_NV_device_diagnostic_checkpoints: Enable passing pNext-initialized structs to get_queue_checkpoint_data (#588)

Added

  • Update Vulkan-Headers to 1.3.209 (#597, #601)
  • Added VK_EXT_headless_surface instance extension (#589)

0.36.0 - 2022-02-21

Changed

  • extensions/khr: Drop _khr suffix from get_memory_fd_properties_khr in ExternalMemoryFd (#580)
  • entry: Allow querying enumerate_instance_extension_properties() by layer name (#574)

Added

  • Add helper wrappers for Vulkan core 1.3 Instance and Device functions (#568)
  • Update Vulkan-Headers to 1.3.206 (#563)

0.35.2 - 2022-02-19

Changed

  • Replace 1.2-extensions documentation links with 1.3-extensions (#569)
  • Fixed broken (intradoc) links in the prelude and VK_KHR_get_surface_capabilities2 extension (#559)

Added

  • Added VK_KHR_external_fence_win32 device extension (#582)
  • Added VK_KHR_external_semaphore_win32 device extension (#581)
  • Added VK_KHR_external_memory_win32 device extension (#579)
  • Added VK_EXT_extended_dynamic_state2 device extension (#572)
  • Added VK_KHR_copy_commands2 device extension (#571)
  • Added VK_EXT_private_data device extension (#570)
  • Added conversions from Extent2D to Extent3D and Rect2D (#557)

0.35.1 - 2022-01-18

Added

  • Added VK_EXT_calibrated_timestamps device extension (#556)
  • Added VK_KHR_get_surface_capabilities2 device extension (#530)

Changed

  • Convert vk_bitflags_wrapped! methods to const fn (#549)
  • examples: Update winit to 0.26 and image to 0.23 (#551)
  • ash-window: Require at least raw-window-handle 0.3.4 for 0.4 interop (#553)
  • Assert that Vulkan array-getters return the same length (#534)
  • README: Correct documentation for Entry functions and related crate features (#545)
  • example: Refactor event loop handling for continuous redraw (#542)
  • Generate RGBA=R|G|B|A helper constant for ColorComponentFlags (#537)
  • Remove remaining CString allocations on string literals in examples and hand-written AMD extension (#533)

0.35.0 - 2021-12-27

Changed

  • loaded feature enabled by default in place of linked to relax default constraints on the build environment
  • Entry::new renamed to Entry::linked

0.34.0 - 2021-12-22

Added

  • Update Vulkan-Headers to 1.2.203 (#477, #497, #504, #509, #514)
  • Add missing documentation to bitflag extension variants (#501)
  • Added VK_KHR_present_wait device extension (#493)
  • Added VK_KHR_maintenance4 device extension (#489, #498)
  • Link _len() functions to their array-getter using intradoc-links (#490)
  • Added VK_KHR_dynamic_rendering device extension (#488)

Changed

  • Extension names from fn name() will not be checked for interior nuls anymore at runtime (#522)
  • examples: Use c_char for pointer to raw string (#521)
  • Group enum extension variants together per impl T block (#519)
  • examples: Use slice::from_ref to not loose lifetime on nested slices (#513)
  • Simplify triangle example's vertex input state (#512)
  • Device extension khr::PipelineExecutableProperties and khr::TimelineSemaphore now expose fn device() instead of fn instance() (#499)
  • Changed khr::PipelineExecutableProperties::new() and khr::TimelineSemaphore::new() to take instance and device as arguments (#499)
  • Fix broken vulkan-tutorial link in README.md (#492)
  • Make enumerate_physical_device_groups unsafe (#491)
  • Added Packed24_8 helper-type for constructing AS Instance bitfields, used in AccelerationStructureInstanceKHR, AccelerationStructureSRTMotionInstanceNV and AccelerationStructureMatrixMotionInstanceNV (#476)s (#490)
  • examples: Upgrade to winit 0.25 (#487)
  • To allow faster builds, Vulkan structures only implement Debug if the debug feature is enabled, which is the default (#482)
  • Use Self in macros (instead of $name) and impl blocks (#479)
  • Link Vulkan directly under the default linked feature. Disable default features and enable the loaded feature for the old libloading behaviour (#457)

Removed

  • Deprecated aliases for wrongly-named enum constants (containing "Backwards-compatible" in the Vulkan spec comment) are removed: switch to the version that it aliased (#502)
  • Removed device() function from khr::Synchronization2 device extension (#494)
  • Removed instance() function from ext::ExtendedDynamicState, khr::PushDescriptor, ext::ToolingInfo and khr::GetPhysicalDeviceProperties2 instance extensions (#494)
  • Removed device argument from ext::DebugMarkers::debug_marker_set_object_name function, khr::PipelineExecutableProperties and khr::TimelineSemaphore functions (#494, #499)
  • Removed From<vk::Result> trait for VkResult (#495)
  • Removed instance argument from ext::DebugUtils::submit_debug_utils_message function (#499)
  • Removed misleading all()/-/-= function/ops from bitflags (#478)

0.33.3 - 2021-09-08

Added

  • Regenerated with Vulkan-Headers 1.2.191 (#463)

0.33.2 - 2021-08-26

Fixed

  • tooling_info: Initialize sType/pNext in get_physical_device_tool_properties (#465)
  • Repeatedly call enumeration functions when VK_INCOMPLETE is returned (#465)

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.