Use surfman with glow bindings (#34328)

* Use glowing surfman

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>

* Port https://github.com/servo/webxr/pull/255

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>

* fixups rebase

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>

* fmt

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>

* Update surfman

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>

* Fix stale TODO

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>

---------

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
This commit is contained in:
Samson 2025-02-05 07:13:21 +01:00 committed by GitHub
parent fdbfecf7dd
commit 503bb10c5b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 70 additions and 97 deletions

View file

@ -135,7 +135,8 @@ impl RenderingContext for SurfmanRenderingContext {
fn framebuffer_object(&self) -> u32 {
self.context_surface_info()
.unwrap_or(None)
.map(|info| info.framebuffer_object)
.and_then(|info| info.framebuffer_object)
.map(|fbo| fbo.0.get())
.unwrap_or(0)
}
#[allow(unsafe_code)]
@ -187,7 +188,11 @@ impl RenderingContext for SurfmanRenderingContext {
debug!("... getting texture for surface {:?}", front_buffer_id);
let surface_texture = device.create_surface_texture(context, surface).unwrap();
let gl_texture = device.surface_texture_object(&surface_texture);
(surface_texture, gl_texture, size)
(
surface_texture,
gl_texture.map(|tex| tex.0.get()).unwrap_or(0),
size,
)
}
fn destroy_texture(&self, surface_texture: SurfaceTexture) -> Surface {
@ -390,7 +395,10 @@ impl SurfmanRenderingContext {
pub fn surface_texture_object(&self, surface: &SurfaceTexture) -> u32 {
let device = &self.0.device.borrow();
device.surface_texture_object(surface)
device
.surface_texture_object(surface)
.map(|t| t.0.get())
.unwrap_or_default()
}
pub fn get_proc_address(&self, name: &str) -> *const c_void {