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.
This allows a downstream user to set which winit features to use, possibly
sparing a lot of dependencies from being pulled and compiled.
Co-authored-by: Rua <ruawhitepaw@gmail.com>
* add partial support for VK_EXT_map_memory_placed extension
implements the memoryMapPlaced and memoryMapRangePlaced features
* fix clippy lint
* add tests
I don't love these tests, they probably fail silently in CI
* fix conflicting requirement
* update test
* fmt
* fix memory selection in test
intersects does not do what I thought it does
* remove incorrect assertion
I don't think this is correct. The offset and size are both DeviceSize or u64. They are added together as positive numbers.
* remove unused
* put back non-range test
* only run test on unix
* wrap stuff to 100 cols
this is actually really nice for reading
* clippy
* tweak impl
* scope
* remove unused
* use NonNull
* fmt
* add flags field
* update position
* PLACED_EXT -> PLACED
* removed unnecessary validation
* Update vulkano/src/memory/device_memory.rs
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* Update vulkano/src/memory/device_memory.rs
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* Update vulkano/src/memory/device_memory.rs
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* Update vulkano/src/memory/device_memory.rs
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* Update vulkano/src/memory/device_memory.rs
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* remove more
* typo
* Update vulkano/src/memory/device_memory.rs
Co-authored-by: Rua <ruawhitepaw@gmail.com>
* add validate_device call
* Update vulkano/src/memory/device_memory.rs
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* Update vulkano/src/memory/device_memory.rs
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* Update vulkano/src/memory/device_memory.rs
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* fix links
* remove extra branch
* use WHOLE_SIZE
* use getter
* fix boolean condition
* Update vulkano/src/memory/device_memory.rs
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* add specific changes marc asked for
i've concluded that this choice is roughly semantically equivalent and this comes down to opinion. I can't be bothered to have an opinion here, imo this is a bikeshed.
also it is temporary. until the docs are updated and the impls are updated. also i don't even really care about the ranged version of this feature, implemented it mostly for completeness than anything else
* Incorporate latest spec updates
---------
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
Co-authored-by: Rua <ruawhitepaw@gmail.com>
* Replace formats.rs and features.rs regex with nom
* Fix missing eof in format rs
* Refactor parsing logic in extensions.rs
* Replace regex in mod.rs
* Replace regex in spriv_reqs.rs
* Improve nom usage for parsing get_header_version
* Remove stray dbg
* Remove final usage of regex
* Replace tag("single character") with char(...)
* Remove unused import
* Undo my testing changes to vk.xml
(I shouldn't have committed that)
* Sort cargo toml alphabetically
* Use nom for parse_depends
* Simplify parser again
* Parser cleanup
* Inline parser logic for shorter code
Thanks to marc for suggesting this
* Fix clippy violation
* Remove useless parse prefix
* Replace cgmath with glam in the examples
* Implement type_for_format! for glam
* Remove comment where I'm freaking out because of OpenGL flashbacks
* Update Cargo.toml
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* Update vulkano/autogen/formats.rs
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* Fix glam type_for_format
* Format the code
---------
Co-authored-by: marc0246 <40955683+marc0246@users.noreply.github.com>
* 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>