Bug 1365934 - Update the readback function for an API change in 052b0a7. r?jrmuizel
MozReview-Commit-ID: K9eMrF3O6OX
--- a/gfx/webrender_bindings/src/bindings.rs
+++ b/gfx/webrender_bindings/src/bindings.rs
@@ -2,17 +2,17 @@ use std::collections::HashSet;
use std::ffi::CString;
use std::{mem, slice};
use std::path::PathBuf;
use std::os::raw::{c_void, c_char};
use std::collections::HashMap;
use gleam::gl;
use webrender_traits::*;
-use webrender::renderer::{Renderer, RendererOptions};
+use webrender::renderer::{ReadPixelsFormat, Renderer, RendererOptions};
use webrender::renderer::{ExternalImage, ExternalImageHandler, ExternalImageSource};
use webrender::{ApiRecordingReceiver, BinaryRecorder};
use app_units::Au;
use euclid::{TypedPoint2D, TypedSize2D, TypedRect, TypedMatrix4D, SideOffsets2D};
extern crate webrender_traits;
// Enables binary recording that can be used with `wrench replay`
@@ -65,26 +65,16 @@ impl Into<ExternalImageId> for WrExterna
}
}
impl Into<WrExternalImageId> for ExternalImageId {
fn into(self) -> WrExternalImageId {
WrExternalImageId(self.0)
}
}
-const GL_FORMAT_BGRA_GL: gl::GLuint = gl::BGRA;
-const GL_FORMAT_BGRA_GLES: gl::GLuint = gl::BGRA_EXT;
-
-fn get_gl_format_bgra(gl: &gl::Gl) -> gl::GLuint {
- match gl.get_type() {
- gl::GlType::Gl => GL_FORMAT_BGRA_GL,
- gl::GlType::Gles => GL_FORMAT_BGRA_GLES,
- }
-}
-
fn make_slice<'a, T>(ptr: *const T, len: usize) -> &'a [T] {
if ptr.is_null() {
&[]
} else {
unsafe { slice::from_raw_parts(ptr, len) }
}
}
@@ -785,27 +775,22 @@ pub extern "C" fn wr_renderer_render(ren
#[no_mangle]
pub unsafe extern "C" fn wr_renderer_readback(renderer: &mut WrRenderer,
width: u32,
height: u32,
dst_buffer: *mut u8,
buffer_size: usize) {
assert!(is_in_render_thread());
- renderer.gl().flush();
-
let mut slice = make_slice_mut(dst_buffer, buffer_size);
- renderer.gl()
- .read_pixels_into_buffer(0,
- 0,
- width as gl::GLsizei,
- height as gl::GLsizei,
- get_gl_format_bgra(renderer.gl()),
- gl::UNSIGNED_BYTE,
- slice);
+ renderer.read_pixels_into(DeviceUintRect::new(
+ DeviceUintPoint::new(0, 0),
+ DeviceUintSize::new(width, height)),
+ ReadPixelsFormat::Bgra8,
+ &mut slice);
}
#[no_mangle]
pub extern "C" fn wr_renderer_set_profiler_enabled(renderer: &mut WrRenderer,
enabled: bool) {
renderer.set_profiler_enabled(enabled);
}