The way `raw-window-metal` works is by creating a layer, and inserting
that as a sublayer, just like we did on iOS before. The bounds are then
kept in-sync with an observer, ensuring smooth resizing.
This also fixes compilation errors on iOS, and adds preliminary support
for tvOS.
The implementation now solely uses `VK_EXT_metal_surface`, which was
added in 2018, instead of `VK_MVK_ios_surface` / `VK_MVK_macos_surface`,
which are deprecated, and only available a year and a half earlier
anyhow.
Note that apart from the above, there is a slight behavioral change on
macOS: we no longer set `edgeAntialiasingMask` on the layer, as it's not
really required, and allows us to avoid depending on `objc2` directly.
It was introduced without motivation in 40e0b24, so I doubt anyone uses
it, and if they do, they can change it on the layer themselves.
I have only noticed this as I was writing the changelog.
@coolcatcoder for future reference, `&Vec<T>` is an anti-pattern. There's nothing more you can do with it than with `&[T]` (because the reference is immutable) and it means that we can't use a different underlying buffer without a breaking change.
* Make image_index and final_views accessible, and new example.
The first 2 changes should make creating frame buffers easier.
The new example should make it easier to learn vulkano-util.
* Remove unnecessary imports, and run clippy.
* Run fmt.
* .acquire() no longer returns image_index
* rename final_views() to swapchain_image_views()
The name change makes it more consistent with swapchain_image_view().
Personally I don't understand why the field name is final_views, yet we externally in function names refer to it as swapchain image views and such like.
* Fractal example no longer creates framebuffer every frame.
* Game of life example no longer creates framebuffer every frame.
(Also removed a piece of code I had commented out, but had forgotten to remove from the fractal example.)
* Rename if_recreate_swapchain to on_recreate_swapchain and update acquire() documentation. to on_recreate_swapchain
* on_recreate_swapchain is now impl FnOnce instead of generics based FnMut
Thanks marc0246!
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* Replace empty comment with an actual comment.
---------
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* Excommunicate `PoolAllocator`
* Switch to manual deallocation
* Move `ResourceMemory` away from the `suballocator` module
* Remove `SuballocatorError::BlockSizeExceeded`
* Fix examples
* Fix atom size
* Address safety TODOs
* Nice English you got there bro
* Add `RequiresAllOf`, automatically enable required extensions and features
* Add more missing backticks and backslashes to error messages
* Use updated VUIDs that require `acceleration_structure`
* ValidationError-ify `Surface` and `Swapchain`
* Update vulkano/src/lib.rs
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* Update vulkano/src/lib.rs
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* Don't draw if the window has zero size
---------
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* Use actual integer bitflags for Vulkan bitflag types
* Fix doc tests
* Fix Fence and Semaphore on Win32 and Fuchsia
* Add macro for bitflags that have a corresponding enum
* Fix bug
* impl present_wait feature
* handle timeout case
* add missing doc
* document the return type of wait_for_present
* impl check for VUID-04999
* don't enforce gt if present_id is zero
* impl PresentInfoExt
* Remove NonZeroU64 from wait_for_present in favor of an error
* fix gl-interop example
* fix docs and fmt
* PresentInfoExt -> PresentInfo, Added swapchain + index to info
* fix doc test, didn't save file...
* fix gl-interop
* Remove Whitespace
* Fix iOS, use similar approach for metal layer as wgpu
* Use correct return type
* Handle ios resizing
* Add changelog notes
* Fix typo
* Update raw-window-handle
* Ensure mac changes correspond master version
* opt-in portability
* Only enable portability flag if extension is present
Automatically enable khr_portability_subset on Device; Remove required_extensions from PhysicalDevice & Device
* enable InstanceCreateInfo.enumerate_portability on all examples
* add additional documentation for enumerate_portability