rust-windowing / raw-window-metal

Interoperability library for Metal and raw-window-handle for surface creation.
Apache License 2.0
8 stars 7 forks source link

Support multiple versions of `raw-window-handle` concurrently? #11

Closed MarijnS95 closed 2 months ago

MarijnS95 commented 1 year ago

Supporting multiple version would be nice of course but currently I can't estimate the overhead for this as I haven't been following the rwh api changes lately tbh

Supporting multiple versions on the producer end is really easy via just implementing the traits for each version of the crate (feature-gated so that you don't have to have duplicate raw-window-handle dependencies). However, doing this for the consumer end (here and in ash-window for example) is more problematic as we should essentially have multiple versioned functions of metal_layer_from_handle() for each version of raw-window-handle, Alternatively we could implement a conversion trait for every version of raw-window-handle.

@notgull suggestions (preferably in a separate issue/PR/discussion)?

Originally posted by @MarijnS95 in https://github.com/norse-rs/raw-window-metal/issues/10#issuecomment-1787481982

notgull commented 1 year ago

From this crate's API, it looks like "multiple versioned functions of metal_layer_from_handle() for each version of raw-window-handle" is probably the only good option.

MarijnS95 commented 1 year ago

So we'd end up with metal_layer_from_raw_window_handle_05() etc. Probably the same for ash-window even though unfortunately that match block is much bigger?