diff options
Diffstat (limited to 'components/canvas/webgl_thread.rs')
-rw-r--r-- | components/canvas/webgl_thread.rs | 42 |
1 files changed, 13 insertions, 29 deletions
diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs index 06c3f579327..4488fd5543c 100644 --- a/components/canvas/webgl_thread.rs +++ b/components/canvas/webgl_thread.rs @@ -26,8 +26,8 @@ use euclid::default::Size2D; use fnv::FnvHashMap; use glow::{ self as gl, bytes_per_type, components_per_format, ActiveTransformFeedback, Context as Gl, - HasContext, NativeFramebuffer, NativeTransformFeedback, NativeUniformLocation, - NativeVertexArray, PixelUnpackData, ShaderPrecisionFormat, + HasContext, NativeTransformFeedback, NativeUniformLocation, NativeVertexArray, PixelUnpackData, + ShaderPrecisionFormat, }; use half::f16; use log::{debug, error, trace, warn}; @@ -49,7 +49,6 @@ use crate::webgl_limits::GLLimitsDetect; #[cfg(feature = "webxr")] use crate::webxr::{WebXRBridge, WebXRBridgeContexts, WebXRBridgeInit}; -type GLuint = u32; type GLint = i32; fn native_uniform_location(location: i32) -> Option<NativeUniformLocation> { @@ -606,10 +605,7 @@ impl WebGLThread { .framebuffer_object; unsafe { - gl.bind_framebuffer( - gl::FRAMEBUFFER, - NonZeroU32::new(framebuffer).map(NativeFramebuffer), - ); + gl.bind_framebuffer(gl::FRAMEBUFFER, framebuffer); gl.viewport(0, 0, size.width as i32, size.height as i32); gl.scissor(0, 0, size.width as i32, size.height as i32); gl.clear_color(0., 0., 0., !has_alpha as u32 as f32); @@ -839,7 +835,7 @@ impl WebGLThread { .unwrap() .unwrap(); debug!( - "... rebound framebuffer {}, new back buffer surface is {:?}", + "... rebound framebuffer {:?}, new back buffer surface is {:?}", framebuffer_object, id ); @@ -2698,14 +2694,13 @@ impl WebGLImpl { ) { let id = match request { WebGLFramebufferBindingRequest::Explicit(id) => Some(id.glow()), - WebGLFramebufferBindingRequest::Default => NonZeroU32::new( + WebGLFramebufferBindingRequest::Default => { device .context_surface_info(ctx) .unwrap() .expect("No surface attached!") - .framebuffer_object, - ) - .map(NativeFramebuffer), + .framebuffer_object + }, }; debug!("WebGLImpl::bind_framebuffer: {:?}", id); @@ -3188,9 +3183,8 @@ struct FramebufferRebindingInfo { impl FramebufferRebindingInfo { fn detect(device: &Device, context: &Context, gl: &Gl) -> FramebufferRebindingInfo { unsafe { - let (mut read_framebuffer, mut draw_framebuffer) = ([0], [0]); - gl.get_parameter_i32_slice(gl::READ_FRAMEBUFFER_BINDING, &mut read_framebuffer); - gl.get_parameter_i32_slice(gl::DRAW_FRAMEBUFFER_BINDING, &mut draw_framebuffer); + let read_framebuffer = gl.get_parameter_framebuffer(gl::READ_FRAMEBUFFER_BINDING); + let draw_framebuffer = gl.get_parameter_framebuffer(gl::DRAW_FRAMEBUFFER_BINDING); let context_surface_framebuffer = device .context_surface_info(context) @@ -3199,10 +3193,10 @@ impl FramebufferRebindingInfo { .framebuffer_object; let mut flags = FramebufferRebindingFlags::empty(); - if context_surface_framebuffer == read_framebuffer[0] as GLuint { + if context_surface_framebuffer == read_framebuffer { flags.insert(FramebufferRebindingFlags::REBIND_READ_FRAMEBUFFER); } - if context_surface_framebuffer == draw_framebuffer[0] as GLuint { + if context_surface_framebuffer == draw_framebuffer { flags.insert(FramebufferRebindingFlags::REBIND_DRAW_FRAMEBUFFER); } @@ -3227,23 +3221,13 @@ impl FramebufferRebindingInfo { .flags .contains(FramebufferRebindingFlags::REBIND_READ_FRAMEBUFFER) { - unsafe { - gl.bind_framebuffer( - gl::READ_FRAMEBUFFER, - NonZeroU32::new(context_surface_framebuffer).map(NativeFramebuffer), - ) - }; + unsafe { gl.bind_framebuffer(gl::READ_FRAMEBUFFER, context_surface_framebuffer) }; } if self .flags .contains(FramebufferRebindingFlags::REBIND_DRAW_FRAMEBUFFER) { - unsafe { - gl.bind_framebuffer( - gl::DRAW_FRAMEBUFFER, - NonZeroU32::new(context_surface_framebuffer).map(NativeFramebuffer), - ) - }; + unsafe { gl.bind_framebuffer(gl::DRAW_FRAMEBUFFER, context_surface_framebuffer) }; } unsafe { |