Skip to content

Latest commit

 

History

History
203 lines (167 loc) · 12.2 KB

CHANGELOG_VULKANO.md

File metadata and controls

203 lines (167 loc) · 12.2 KB

Unreleased

  • Fixed all warnings as of Rust 1.43.1
  • Provides new API to fetch additional information of the Physical Device from the PhysicalDeviceProperties2KHR structure whenever it possible. In the current implementation only subgroupSize property is fetching. This interface can be extended in the future to obtain more metadata depending on community needs.
  • dynamic-local-size compute shader example added showing how to utilize subgroupSize to compute and set shader's local size in run time.
  • Fixed Vulkano Shaders bug when compute shader local group layout values bound to specialization constants. Now it is possible to define the layout in form of layout(local_size_x_id = 12, local_size_y_id = 13, local_size_z = 1) in; and then set the values as SpecializationConstants {constant_12: 8, constant_13: 4, ...}.
  • Allow applications to access the instance and device pointers
  • Add a helper function '.boxed()' on the GpuFuture that is short for Box::new(yourFuture) as Box<dyn GpuFuture>

Version 0.18.0 (2020-03-11)

  • Breaking Update dependency winit 0.21 -> 0.22
  • Update dependency half 1.4 -> 1.5
  • Update dependency smallvec 0.6 -> 1.2

Version 0.17.0 (2020-02-09)

  • Breaking Swapchain::recreate_with_dimension() is now Swapchain::recreate_with_dimensions()
  • Breaking Sync::SharingMode::Exclusive(queue_family: u32) is now Sync::SharingMode::Exclusive.
  • Breaking Added Swapchain::with_old_swapchain() - same as previous Swapchain::new(), if an oldswapchain needs to be used
  • Breaking Swapchain::new() now doesnt need to have the old_swapchain parameter anymore but requires the ColorSpace
  • Breaking Decouple descriptor sets from pipeline
  • Breaking Update Winit to 0.21.0
  • Breaking Add host_cached field to all CpuAccessibleBuffer initializers to allow the user to perfer host cached memory.
  • Breaking Added fullscreen_exclusive field to Swapchain initializers to allow the user to specify how fullscreen exclusivity should be handled.
    • Swapchain methods added: Swapchain::acquire_fullscreen_exclusive(), Swapchain::release_fullscreen_exclusive(), and Swapchain::is_fullscreen_exclusive()
  • Add function execute_commands_from_vec to handle submission of multiple secondary command buffers.
  • Allow DebugCallback to be sent between threads
  • Pipeline barriers are now correctly inserted when a resource is used more than two times.
  • Update MacOS dependency cocoa to 0.20
  • Fixed code generated by shader! macro so that SSBO's are supported again (broken in 0.16.0).
  • Added Swapchain::surface() - which returns the saved surface
  • Propogate new lines correctly in shader compile errors.
  • Queue and QueueFamily now implement PartialEq and Eq
  • `Swapchain::acquire_next_image()now returns(image_id, suboptimal, aquire_future)``
    • suboptimal indicates that the swapchain is usable, but should be recreated
  • Fixed Join Future implementation to not submit joined command buffers twice.
  • The traits GraphicsPipelineAbstract and DescriptorSet now require DeviceOwned.
  • Added PartialEq, Eq and Hash implementations to all types involved in a draw call, including:
    • Instance, Device, GraphicsPipeline and dyn GraphicsPipelineAbstract
    • UnsafeBuffer and all types implementing BufferAccess
    • UnsafeImage, UnsafeImageView and all types implementing ImageAccess or ImageViewAccess
    • All types implementing DescriptorSet

Version 0.16.0 (2019-11-01)

  • Fixed bug in examples causing OutOfHostMemory errors
  • Replaced VK_EXT_debug_report VK_EXT_debug_marker with VK_EXT_debug_utils.
  • Update MacOS dependencies metal to 0.17 and cocoa to 0.19
  • Added dynamic stencil elements to DynamicState
  • Fixed ImageDimensions::mipmap_dimensions and max_mipmaps in cases where the original size is not a power of two.
  • Shader includes now work on Windows.
  • Breaking Change Shader include directories passed to the shader! macro are now relative to the crates Cargo.toml
  • Add support for VK_KHR_16bit_storage and VK_KHR_storage_buffer_storage_class device extensions.
  • Update dependencies: lazy_static, half, syn, quote & proc-macro2
  • Swapchain can now be recreated with dimensions of corresponding surface using recreate().
  • Added raw_loaded_extensions() to Instance to allow querying of all extensions, not just known ones.
  • Breaking Change loaded_extensions() on Instance no longer returns a reference.
  • Add support for GLSL macro defines to the shader! macro.
  • Switch to Vulkan 1.1 and inherently SpirV 1.3 (shaderc default version for vulkan 1.1)

Version 0.15.0 (2019-10-18)

Yanked

Version 0.14.0 (2019-08-17)

  • Update shaderc to 0.6. This again allows to use locally installed libraries which reduces the build-time significantly on Arch/Voidlinux (see google/shaderc-rs#58)
  • Removed faulty debug_assert in SwapchainAcquireFuture::drop.
  • Compressed texture formats can now be uploaded using ImmutableImage::from_iter, ImmutableImage::from_buffer, AutoCommandBuilder::copy_buffer_to_image_dimensions, and AutoCommandBuilder::copy_buffer_to_image.

Version 0.13.0 (2019-07-02)

This is an emergency breaking breaking change. It fixes Undefined Behaviour that was preventing the compilation of Vulkano on the latest rust nightlies.

  • Structs that have the impl_vertex macro applied to them, now also need to #[derive(Default)].

Version 0.12.0 (2019-05-24)

  • Update shaderc to 0.5. New shaderc has improved pre-built options for libshaderc that significantly reduce package build time and are appropriate for use in CI
  • QueueFamily::explicitly_supports_tranfers only returns true if vk::QUEUE_TRANSFER_BIT is set instead of also always returning true. Removed supports_transfers.
  • Update to winit 0.19
  • Add support for #include "..." and #include <...> directives within source files.
  • Add a union method for the extensions types.
  • Make BufferUsage derive PartialEq and Eq
  • Fix a compiler error in struct code generated by the shader! macro.
  • Improve inference of image layout transitions and in turn image memory barrier behaviour.

Version 0.11.1 (2018-11-16)

  • Expose CopyImageError and DrawIndexedIndirectError.

Version 0.11.0 (2018-11-08) (yanked because vk-sys 0.3.4 was accidentally breaking vulkano 0.10)

  • Update to winit 0.18
  • Export features and device extensions from the device module instead of the instance module
    • instance::Features -> device::Features
    • instance::DeviceExtensions -> device::DeviceExtensions
    • instance::RawDeviceExtensions -> device::RawDeviceExtensions
  • Added vulkano_shaders::shader! proc macro, use this instead of vulkano_shader_deriver::VulkanoShaders.
  • The entire vulkano_shader_derive crate is deprecated.
  • vulkano_shaders::{reflect, compile, Error} are no longer public.
  • Remove vulkano_shaders::build_glsl_shaders
  • Removed mir support, as it is being removed from the vulkan spec.
  • Split PersistentDescriptorSetError::MissingUsage into MissingImageUsage and MissingBufferUsage each with a matching enum indicating the usage that was missing.
  • Fix instance_count when using draw_index with instance buffers
  • Added a reinterpret function to BufferSlice
  • Made AttributeInfo derive Copy, Clone and Debug
  • Use google/shaderc for shader compilation
  • Reject generation of rust types for SPIR-V arrays that would have incorrect array stride.
  • Removed the Layout prefix of the descriptions used for a render pass.
  • Implemented DescriptorSetCollection for Vec<T> which allows easier use of construction them for usage when drawing.

Version 0.10.0 (2018-08-10)

  • Use dynamically loaded libvulkan like on other platforms instead of linking to MoltenVK on macOS
  • Updated winit to version 0.17.
  • Allow custom implementations of RenderPassDesc to specify VK_SUBPASS_EXTERNAL as a dependency source or destination
  • Added vulkano_win::create_vk_surface which allows creating a surface safely without taking ownership of the window.
  • AutoCommandBufferBuilder::draw and friends no longer consume the DynamicState argument, allowing reuse between calls.
  • Instance::new and Instance::with_loader now take in the layers as an iterator of borrowed strs, not of references to borrowed strs.

Version 0.9.0 (2018-03-13)

  • Updated winit to version 0.11.

Version 0.8.0 (2018-03-11)

  • Changed ShaderInterfaceMismatchError to be more verbose.
  • Allow depth/stencil images to be used with AutoCommandBufferBuilder::copy_image_to_buffer()
  • Allow Surface to own the window it references.
  • Clear value validation for AutoCommandBufferBuilder::begin_render_pass()
  • Fix occasional truncation of glslang_validator when glsl-to-spirv is rebuilt
  • Fix linking against MoltenVK >= 0.19.0
  • Fix panic on DeviceLost error after resizing swapchain on nvidia/amd hardware
  • Added AutoCommandBufferBuilder::copy_image
  • Added VulkanObject::TYPE to look up the DebugReportObjectTypeEXT of an object
  • Added Device::set_object_name and Device::set_object_name_raw
  • Added GraphicsPipelineBuilder::with_auto_layout to simplify use of dynamic buffers.

Version 0.7.3 (2018-02-10)

Yanked

Version 0.7.2 (2017-10-09)

  • Allow impl_vertex! to support generic structs.
  • Added GraphicsPipelineBuilder::with_pipeline_layout.
  • Fixed creating a buffer view not checking the min_texel_buffer_offset_alignment limit.
  • Added support for loading the VK_EXT_debug_marker extension and adding debug markers to UnsafeCommandBufferBuilder
  • Changed GraphicsPipelineBuilder to default to a buffer-less vertex input.
  • Deprecated pipeline::input_assembly::InputAssembly.

Version 0.7.1 (2017-09-28)

  • Fixed an HiDPI scaling issue on MacOS in vulkano-win.
  • Fixed le() and ge() for DescriptorsCount, which also fixes a potential memory leak when allocating descriptor sets.
  • Fixed the ordered_passes_renderpass! macro not working properly when using resolve.
  • Added an optional resolve entry in pass for single_pass_renderpass!, for resolving multisampled attachments into non-multisampled attachments.
  • Fixed the value of rasterizationSamples not corresponding to the render pass.
  • Added GraphicsPipelineBuilder::sample_shading_disabled, sample_shading_enabled, alpha_to_coverage_disabled, alpha_to_coverage_enabled, alpha_to_one_disabled and alpha_to_one_enabled. Added GraphicsPipelineCreationError::SampleRateShadingFeatureNotEnabled and AlphaToOneFeatureNotEnabled.
  • Deprecated pipeline::multisample::Multisample.

Version 0.7.0 (2017-09-21)

  • Added RuntimePipelineDesc, an implementation of PipelineLayoutDesc that makes creating custom layouts easier.
  • Changed CpuBufferPool::next() and chunk() to return a Result in case of an error when allocating or mapping memory.
  • Changed CommandBufferExecError::AccessError to provide a hint of where the error occurs.
  • Added vulkano::pipeline::vertex::BufferlessDefinition and BufferlessVertices to enable bufferless drawing.
  • Changed ImageAccess::try_gpu_lock and unlock() to verify whether the image layout is correct, especially at the first usage of an image.
  • Changed BufferAccess::conflict_* and ImageAccess::conflict_* to forbid querying a specific range of the resource.
  • Fixed layers argument validation in Swapchain::new_inner.
  • Added a 32-bit word constructor for ShaderModule (ShaderModule::from_words).
  • Changed the various is_superset_of functions to return a Result instead of a bool.

Version 0.6.2 (2017-09-06)

  • Added checking compatibility between the descriptor sets and the pipeline object when adding a draw or compute command.
  • Fixed several bugs in the validation checks of blit_image.
  • Fixed blit_image, copy_buffer_to_image and copy_image_to_buffer not taking the mipmap level into account when checking for the correct image dimensions.
  • Added ImageDimensions::mipmap_dimensions() and ImageDimensions::num_mipmaps().
  • Added an implementation of DeviceOwned for QueuesIter and Queue.
  • Fixed the standard command pool and descriptor pool being destroyed too often.
  • Added #[allow(non_snake_case)] to structs generated by vulkano-shaders.