Conversation
|
TBH, I have no idea what's wrong with WASM. |
wgpu/src/api/instance.rs
Outdated
| #[doc(hidden)] | ||
| /// Creates Instance from custom context implementation | ||
| pub fn from_custom_instance(instance: std::sync::Arc<dyn InstanceInterface>) -> Self { | ||
| Self { | ||
| inner: dispatch::DispatchInstance::Custom(backend::custom::DynContext::new(instance)), | ||
| } | ||
| } |
There was a problem hiding this comment.
This is triggering visibility problems for WASM, but I do not know why.
9090201 to
088532e
Compare
|
Ping me if this needs looking at or you need help before it is out of draft, going to un-assign myself for bookeeeping |
|
In 79ecded I removed InterfaceTypes trait as it's not really needed anymore (this makes writing Custom/Dyn wrappers easier as they do not need to impl traits directly, avoiding a lot of boilerplate), all bounds are actually enforced in |
|
Hmm... I don't love it as it makes things less structured, but can't see a strong argument against removing the trait. Will fully consider it when I review this. You can leave it as part of this PR for now. |
|
I have alternative approach in sagudev@ce58280 which keeps the trait but instead of using interfaces in bounds it uses |
I'm going to leave this up to your own judgement which is cleaner and more parsable, my initial impression is that the mod { type } approach is less infrastructure and less confusing than adding the Dispatch one |
cf170b3 to
d693c1b
Compare
|
@cwfitzgerald I think this is ready for concept review, it still needs more docs and maybe some polish 💅🏾. |
|
Nice! I'm going to take this out of draft for bookkeeping |
cwfitzgerald
left a comment
There was a problem hiding this comment.
Don't love the whole new type alias thing, but don't really hate it enough to say no
I think we could actually inline all types uses into macro invocation (all 3 of them). Would that be better? |
Hmm, yeah I think that's fine - the whole appeal to me is to make sure things have uniform naming conventions and are all filled out, so having them all in one place seems to do that trick fine. |
I am not sure I understand, should I inline all types uses into macro or keep the |
|
Oh sorry was unclear, inline into the macro. |
cwfitzgerald
left a comment
There was a problem hiding this comment.
Some small things, but I think this is good to go after that!
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
cwfitzgerald
left a comment
There was a problem hiding this comment.
I have some futzing I want to do to the examples, but I'll do that post land.
Thanks!
|
Has this been released? I'm trying to check the changelog for when this got released |
Yes it was, but there are still some rough edges: #7533 |
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Connections
Based on #6619, fixes #6330
Description
This PR enables users of wgpu to provide custom Instance impl (and other wgpu types as all other types are derived from Instance->Adapter->Device), by adding
Customvariant and custom backend that has dyn wrapper for all types:struct DynDevice(Arc<dyn DeviceInterface>). I'm intermixing Custom with Dyn because I cannot really decide on name (CustomDeviceis weird, but we already have Dyn* in wgpu-hal).There are few rough sports:
RenderBundleEncoderInterface::finish(other backends hacks around by not using dyn dispatch, but we can't:wgpu/wgpu/src/api/render_bundle_encoder.rs
Lines 54 to 60 in b876b8c
Testing
There is wgpu-custom crate that showcases how one can create Custom wgpu types.
Checklist
cargo fmt.taplo format.cargo clippy. If applicable, add:--target wasm32-unknown-unknown--target wasm32-unknown-emscriptencargo xtask testto run tests.CHANGELOG.md. See simple instructions inside file.