Ralith / openxrs

OpenXR bindings for Rust
Apache License 2.0
272 stars 57 forks source link

Update to OpenXR 1.1.36 #158

Closed rasmusgo closed 1 month ago

rasmusgo commented 4 months ago

This PR builds upon #157.

The biggest change in the generator is that <feature> tags are processed now. They are similar to <extension> but have a couple of important differences.

<interaction_profiles> were added in OpenXR 1.0.27 but we are still not using them. OpenXR 1.1.36 keeps building upon them with <extend> and <interaction_profile> tags inside <require> tags. I think we should consider adding support for them in another PR.

I used https://registry.khronos.org/OpenXR/specs/1.1/styleguide.html#schema and https://registry.khronos.org/vulkan/specs/1.3/registry.html to figure out the schema.

rasmusgo commented 4 months ago
awtterpip commented 4 months ago

is there any ETA on this getting merged?

Ralith commented 4 months ago

It needs a rebase first, for one thing.

rasmusgo commented 4 months ago

Rebased now. The most glaring problem is that the instance cannot be created if OpenXR 1.1 isn't supported by the loader, as we try to use the current API version when creating the instance: https://github.com/Ralith/openxrs/blob/4681a25c910da1f078342935b60b4fabe3cc4747/openxr/src/entry.rs#L239

Ralith commented 4 months ago

Would it make sense to take a version argument, deferring that problem to the application? That'd help us gracefully handle movement of extensions that we provide high-level wrappers for into core, too.

rasmusgo commented 4 months ago

This runs with api version 1.0 now. I'm not sure what, if anything, is missing from the 1.1 spec. The only thing that disappeared when restricting the core commands to 1.0 was xrLocateSpaces from the high level bindings.