diff options
author | Samson <16504129+sagudev@users.noreply.github.com> | 2025-02-05 07:13:21 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-05 06:13:21 +0000 |
commit | 503bb10c5b1fafe01ebfb6b320902be2e8671c69 (patch) | |
tree | 99f78defd020790a5dc1340a1da8df121794d918 /components/shared/webrender/rendering_context.rs | |
parent | fdbfecf7dd30e2feb0bca468b9326c5e61e91b49 (diff) | |
download | servo-503bb10c5b1fafe01ebfb6b320902be2e8671c69.tar.gz servo-503bb10c5b1fafe01ebfb6b320902be2e8671c69.zip |
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>
Diffstat (limited to 'components/shared/webrender/rendering_context.rs')
-rw-r--r-- | components/shared/webrender/rendering_context.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/components/shared/webrender/rendering_context.rs b/components/shared/webrender/rendering_context.rs index 21669fe4556..6c8c2803c9c 100644 --- a/components/shared/webrender/rendering_context.rs +++ b/components/shared/webrender/rendering_context.rs @@ -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 { |