dacite 0.7.0

Mostly safe low-level Vulkan library
Documentation
# dacite Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

Items listed in "Changed" sub-sections are usually breaking changes. Any additional breaking changes
in other sub-sections are prefixed with "**BREAKING**" to increase visibility.


## [0.7.0] - 2017-09-19
This release contains breaking changes.

### Fixed
 - Disabled extensions are no longer loaded

### Changed
 - Bumped lowest supported Rust version to 1.20.
 - Updated `vks` to 0.20.
 - Updated `bitflags` to version 1.0. All bitflags values are now associated consts.
 - The `FlagBits` types are now proper enums instead of simple aliases for `Flags`. This provides an
   additional layer of type safety. Vulkan uses `FlagBits` types, whenever only a single bit is
   supposed to be set.


## [0.6.1] - 2017-07-09

### Added
 - Vulkan 1.0.26, 1.0.27, 1.0.28, 1.0.29, 1.0.30
 - Extension `VK_EXT_validation_flags` (revision 1)
 - Extension `VK_AMD_gpu_shader_half_float` (revision 1)
 - Extension `VK_EXT_debug_marker` (revision 3)


## [0.6.0] - 2017-07-08
This release contains breaking changes.

### Added
 - Vulkan 1.0.22, 1.0.23, 1.0.24, 1.0.25
 - Extension `VK_IMG_format_pvrtc` (revision 1)
 - Extension `VK_AMD_draw_indirect_count` (revision 1)
 - Extension `VK_NV_external_memory_capabilities` (revision 1)
 - Extension `VK_NV_external_memory` (revision 1)
 - Extension `VK_NV_external_memory_win32` (revision 1)
 - Extension `VK_NV_win32_keyed_mutex` (revision 1)
 - **BREAKING**: New variant `FragmentedPool` added to `core::Error`.
 - **BREAKING**: Added several variants to `core::Format` (from `VK_IMG_format_pvrtc`).


## [0.5.1] - 2017-07-08

### Added
 - Vulkan 1.0.21
 - Added the following functions to `core::PhysicalDeviceFeatures`: `new`, `all`, `empty`,
   `is_empty`, `difference`, `intersection` and `union`.


## [0.5.0] - 2017-07-02
This release contains breaking changes.

### Added
 - Vulkan 1.0.14, 1.0.15, 1.0.16, 1.0.17, 1.0.18, 1.0.19, 1.0.20
 - Extension `VK_AMD_shader_trinary_minmax` (revision 1)
 - Extension `VK_AMD_shader_explicit_vertex_parameter` (revision 1)
 - Extension `VK_AMD_gcn_shader` (revision 1)
 - Extension `VK_NV_dedicated_allocation` (revision 1)

### Changed
 - All occurrences of `Option<Vec<T>>` have been changed to just `Vec<T>` in the following structs:
   - `core::SubmitInfo`
   - `core::BindSparseInfo`
   - `core::BufferCreateInfo`
   - `core::ImageCreateInfo`
   - `core::PipelineCacheCreateInfo`
   - `core::SpecializationInfo`
   - `core::PipelineVertexInputStateCreateInfo`
   - `core::PipelineMultisampleStateCreateInfo`
   - `core::PipelineColorBlendStateCreateInfo`
   - `core::PipelineLayoutCreateInfo`
   - `core::DescriptorSetLayoutBinding`
   - `core::DescriptorSetLayoutCreateInfo`
   - `core::FramebufferCreateInfo`
   - `core::SubpassDescription`
   - `core::RenderPassCreateInfo`
   - `core::RenderPassBeginInfo`
   - `khr_swapchain::SwapchainCreateInfoKhr`
   - `khr_swapchain::PresentInfoKhr`
 - Added `core::SpecializationInfo::push`, which can be used to add entries to a
   `core::SpecializationInfo`.

### Removed
 - **BREAKING**: The builder `core::SpecializationInfoBuilder` has been removed. Entries to a
   `core::SpecializationInfo` can now be added conveniently with `core::SpecializationInfo::push`.


## [0.4.0] - 2017-06-25
This release contains breaking changes.

### Added
 - Vulkan 1.0.13
 - Added several convenience functions:
   - `core::Offset2D`: `new()`, `zero()`, `from_3d()`
   - `core::Offset3D`: `new()`, `zero()`, `from_2d()`
   - `core::Extent2D`: `new()`, `zero()`, `from_3d()`
   - `core::Extent3D`: `new()`, `zero()`, `from_2d()`
   - `core::ComponentMapping`: `identity()`
   - `core::Rect2D`: `new()`
 - Added `VulkanObject::id()`, which returns the handle cast to a `u64`. See the documentation of
   that function for more information.
 - Added a new trait `FromNativeObject`, which can be used to create dacite Vulkan objects from
   native FFI objects. The trait is implemented for types except `Instance` and `Device`.
 - Added version constant `DACITE_API_VERSION_1_0`.

### Changed
 - Vks was updated to 0.19.x.
 - `core::Queue::bind_sparse()` takes `Fence` as a reference.
 - `core::Queue::submit()` takes `Fence` as a reference.


## [0.3.6] - 2017-06-11

### Added
 - Vulkan 1.0.12
 - Extension `VK_AMD_rasterization_order` (revision 1)


## [0.3.5] - 2017-06-09

### Added
 - Vulkan 1.0.11
 - Bump `VK_KHR_swapchain` to revision 68.


## [0.3.4] - 2017-06-09

### Added
 - Vulkan 1.0.10


## [0.3.3] - 2017-06-08

### Added
 - Vulkan 1.0.9


## [0.3.2] - 2017-06-08

### Added
 - Vulkan 1.0.8
 - Dacite can now be built with stable Rust 1.18.0.


## [0.3.1] - 2017-06-07

### Added
 - Vulkan 1.0.7


## [0.3.0] - 2017-06-06
This release contains breaking changes.

### Added
 - Vulkan 1.0.6
 - Extension `VK_IMG_filter_cubic` (revision 1)
 - **BREAKING**: New variant `CubicImg` added to `core::Filter` (from `VK_IMG_filter_cubic`).

### Changed
 - The following functions of `core::PhysicalDevice` have been renamed:
   - `properties` -> `get_properties`
   - `features` -> `get_features`
   - `format_properties` -> `get_format_properties`
   - `image_format_properties` -> `get_image_format_properties`
   - `sparse_image_format_properties` -> `get_sparse_image_format_properties`
   - `queue_family_properties` -> `get_queue_family_properties`
   - `memory_properties` -> `get_memory_properties`
 - The following functions no longer return an iterator, but instead behave like
   `std::iter::Iterator::collect` (all iterator types have been removed in the process):
   - `core::Instance::enumerate_instance_layer_properties`
   - `core::PhysicalDevice::enumerate_device_layer_properties`
   - `core::PhysicalDevice::get_sparse_image_format_properties`
   - `core::PhysicalDevice::get_queue_family_properties`
   - `core::PhysicalDevice::get_surface_support_khr`
   - `core::PhysicalDevice::get_surface_present_modes_khr`
   - `core::Image::get_sparse_memory_requirements`
 - The following functions have also been changed to behave like `std::iter::Iterator::collect`
   instead of always returning a `Vec`:
   - `core::PhysicalDevice::get_queue_family_properties2_khr`
   - `core::PhysicalDevice::get_sparse_image_format_properties2_khr`


## [0.2.0] - 2017-06-05
This release contains breaking changes.

### Added
 - Vulkan 1.0.5
 - Extension `VK_NV_glsl_shader` (revision 1)
 - **BREAKING**: New variant `InvalidShaderNv` added to `core::Error` (from `VK_NV_glsl_shader`).


## [0.1.0] - 2017-06-05
This is the initial release of dacite.

### Added
 - Support for Vulkan 1.0.4, all (mostly WSI) extensions up to that point and additionally
   `VK_KHR_get_surface_capabilities2`.