diff options
author | Martin Robinson <mrobinson@igalia.com> | 2025-01-30 20:07:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-30 19:07:35 +0000 |
commit | 534e78db5331fbfbad7e60d72a88e9aacdc11ee4 (patch) | |
tree | 3bcd217e0e7b7fd0c91d5406a81ea241ffc4ce06 /components/webxr/openxr/graphics.rs | |
parent | 64b40ea70065f949d1e281bd046c56d50312f2a7 (diff) | |
download | servo-534e78db5331fbfbad7e60d72a88e9aacdc11ee4.tar.gz servo-534e78db5331fbfbad7e60d72a88e9aacdc11ee4.zip |
Merge webxr repository (#35228)
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Diffstat (limited to 'components/webxr/openxr/graphics.rs')
-rw-r--r-- | components/webxr/openxr/graphics.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/components/webxr/openxr/graphics.rs b/components/webxr/openxr/graphics.rs new file mode 100644 index 00000000000..442c3ae952c --- /dev/null +++ b/components/webxr/openxr/graphics.rs @@ -0,0 +1,25 @@ +use euclid::{Size2D, UnknownUnit}; +use openxr::{ExtensionSet, FrameStream, FrameWaiter, Graphics, Instance, Session, SystemId}; +use surfman::Context as SurfmanContext; +use surfman::Device as SurfmanDevice; +use surfman::Error as SurfmanError; +use surfman::SurfaceTexture; +use webxr_api::Error; + +pub enum GraphicsProvider {} + +pub trait GraphicsProviderMethods<G: Graphics> { + fn enable_graphics_extensions(exts: &mut ExtensionSet); + fn pick_format(formats: &[u32]) -> u32; + fn create_session( + device: &SurfmanDevice, + instance: &Instance, + system: SystemId, + ) -> Result<(Session<G>, FrameWaiter, FrameStream<G>), Error>; + fn surface_texture_from_swapchain_texture( + image: <G as Graphics>::SwapchainImage, + device: &mut SurfmanDevice, + context: &mut SurfmanContext, + size: &Size2D<i32, UnknownUnit>, + ) -> Result<SurfaceTexture, SurfmanError>; +} |