aboutsummaryrefslogtreecommitdiffstats
path: root/components/shared/webrender/rendering_context.rs
diff options
context:
space:
mode:
authorSamson <16504129+sagudev@users.noreply.github.com>2025-02-05 07:13:21 +0100
committerGitHub <noreply@github.com>2025-02-05 06:13:21 +0000
commit503bb10c5b1fafe01ebfb6b320902be2e8671c69 (patch)
tree99f78defd020790a5dc1340a1da8df121794d918 /components/shared/webrender/rendering_context.rs
parentfdbfecf7dd30e2feb0bca468b9326c5e61e91b49 (diff)
downloadservo-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.rs14
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 {