wgpu/wgpu-types
Mads Marquart fb0cb1eb11
[metal] Improve layer initialization and resizing (#6107)
* [metal]: Create a new layer instead of overwriting the existing one

Overriding the `layer` on `NSView` makes the view "layer-hosting", see
[wantsLayer], which disables drawing functionality on the view like
`drawRect:`/`updateLayer`.

This prevents crates like Winit from providing a robust rendering
callback that integrates well with the rest of the system.

Instead, if the layer is not CAMetalLayer, we create a new sublayer, and
render to that instead.

[wantsLayer]: https://developer.apple.com/documentation/appkit/nsview/1483695-wantslayer?language=objc

* [metal]: Fix double-free when re-using layer

* doc: Document the behavior when mis-configuring width/height of Surface

* [metal]: Use kCAGravityResize for smoother resizing

* [metal] Do not keep the view around that the surface was created from

We do not need to use it, and the layer itself is already retained, so
it won't be de-allocated from under our feet.

* Always set delegate on layers created by Wgpu

* More docs on contentsGravity
2024-09-08 16:28:14 +02:00
..
src [metal] Improve layer initialization and resizing (#6107) 2024-09-08 16:28:14 +02:00
Cargo.toml Add VideoFrame to ExternalImageSource enum (#6170) 2024-08-27 18:05:45 +00:00
LICENSE.APACHE Add symlink LICENSE files into crates. (#2604) 2022-05-29 03:07:42 -04:00
LICENSE.MIT Add symlink LICENSE files into crates. (#2604) 2022-05-29 03:07:42 -04:00