* Allow choosing the Vulkan max API version when creating Instance
* Rewrite feature handling, include all Vulkan 1.1 and 1.2 features
* Fixes
* Move features.rs to device module
* More small fixes
* Changelog
* Add core instance extensions.
core extensions added as part of `vulkano::instance::InstanceExtensions`
VK_KHR_device_group_creation
VK_KHR_external_fence_capabilities
VK_KHR_external_memory_capabilities
VK_KHR_external_semaphore_capabilities
VK_KHR_get_display_properties2
VK_EXT_acquire_xlib_display
VK_EXT_debug_report
VK_EXT_direct_mode_display
VK_EXT_display_surface_counter
* export FunctionPointers::entry_points method.
Similar to PhysicalDevice.instance().pointers() export root-level
entry_points() method. This will allow applications to call vk-functions
like `vkEnumerateInstanceExtensionProperties` directly.
* heap: Add MEMORY_HEAP_MULTI_INSTANCE_BIT for MemoryHeap.
A new method is_multi_instance() method is added to `MemoryHeap` to
know whether the heap is enabled for multi-instance.
* CHANGE-LOG.
* vulkano: image: improve formatting
Ran cargo fmt --all. Should we use clippy too ?
* vk_sys: add additional formats
This updates the vk formats enum to the header that's on my
system (vk 1.2-ish).
* vulkano: image: Add NV12 and YV12 support
These formats are commonly used as targets for hardware and
software video decode. The common case is the swapchain allocator
(gralloc in the Android use case) allocates some memory, the video
stack decodes to it, and then memory can be composited by Vulkan
or sent directly to the display.
* vk_sys: update structure types
This updates the structure types to a VK 1.2-ish state. Long term,
it makes a ton of sense to autogenerate vk-sys to make adding
additional features and enumerations easier [1]. For now, we can
hand edit.
[1] (https://github.com/vulkano-rs/vulkano/issues/89)
* vk_sys: add VK_KHR_external_memory_fd bindings
This adds some basic external memory features. Most of these
features are core in VK1.1.
* vulkano: memory: add and use DeviceMemoryBuilder
We'll need to:
(a) Create exportable memory
(b) import from a OS descriptor to create DeviceMemory
(c) Also support dedicated allocations
The device memory API is becoming rather complicated. Let's use
the common builder pattern to simplify this.
* vulkano: memory: implement some external features
This change is sufficient to create exportable memory and
export it. It's only been tested on Linux platforms and depends
on Unix file descriptors, so enable it only there for now.
Import support will be added later. Support for external buffers
and images can also be added later if someone needs it.
This feature was recently promoted from an extension to the core spec in Vulkan 1.2. It is already supported on many recent drivers: NVidia, Mesa RADV, and AMDVLK.
Other than supporting enabling the feature and the basic buffer address query, I made no attempt to create safe interfaces for its use. Such will come later, after I've experimented with its use in Geobacter.
* implement exclusive fullscreen
* fullscreen ext should be device ext
* add acquire/release
* require VK_KHR_get_surface_capabilities2
* fullscreen_exclusive is now an enum; explicit acquire/release methods added; FullscreenExclusiveError added to handle errors; FullscreenExclusiveLost varients added to acquire and present related errors
* add checks for double acquire/release; require AppControlled for acquire/release functions
* update examples and tests; resolve issue with try_gpu_lock() on SwapchainImage; update changelogs
* Implement support for VK_KHR_16bit_storage and VK_KHR_storage_buffer_storage_class.
This change also allows SPIR-V instructions to require device extensions.
* Remove SPIR-V capabilities with duplicate values (StorageBuffer16BitAccess and UniformAndStorageBuffer16BitAccess).
* move changelog entry to current version
* Implement support for VK_KHR_incremental_present
The public interface is mainly extended by a new function:
swapchain::present_incremental
* Fix nits from PR
* Remove PresentRegion::to_vk
* Fix more nitpicks