diff options
Diffstat (limited to 'third_party/webrender/examples/common/boilerplate.rs')
-rw-r--r-- | third_party/webrender/examples/common/boilerplate.rs | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/third_party/webrender/examples/common/boilerplate.rs b/third_party/webrender/examples/common/boilerplate.rs index d07084031ae..a48a00b9194 100644 --- a/third_party/webrender/examples/common/boilerplate.rs +++ b/third_party/webrender/examples/common/boilerplate.rs @@ -10,7 +10,6 @@ use webrender; use winit; use webrender::{DebugFlags, ShaderPrecacheFlags}; use webrender::api::*; -use webrender::render_api::*; use webrender::api::units::*; struct Notifier { @@ -30,7 +29,7 @@ impl RenderNotifier for Notifier { }) } - fn wake_up(&self, _composite_needed: bool) { + fn wake_up(&self) { #[cfg(not(target_os = "android"))] let _ = self.events_proxy.wakeup(); } @@ -38,9 +37,9 @@ impl RenderNotifier for Notifier { fn new_frame_ready(&self, _: DocumentId, _scrolled: bool, - composite_needed: bool, + _composite_needed: bool, _render_time: Option<u64>) { - self.wake_up(composite_needed); + self.wake_up(); } } @@ -89,11 +88,12 @@ pub trait Example { ) -> bool { false } - fn get_image_handler( + fn get_image_handlers( &mut self, _gl: &dyn gl::Gl, - ) -> Option<Box<dyn ExternalImageHandler>> { - None + ) -> (Option<Box<dyn ExternalImageHandler>>, + Option<Box<dyn OutputImageHandler>>) { + (None, None) } fn draw_custom(&mut self, _gl: &dyn gl::Gl) { } @@ -183,11 +183,16 @@ pub fn main_wrapper<E: Example>( notifier, opts, None, + device_size, ).unwrap(); let mut api = sender.create_api(); - let document_id = api.add_document(device_size); + let document_id = api.add_document(device_size, 0); - let external = example.get_image_handler(&*gl); + let (external, output) = example.get_image_handlers(&*gl); + + if let Some(output_image_handler) = output { + renderer.set_output_image_handler(output_image_handler); + } if let Some(external_image_handler) = external { renderer.set_external_image_handler(external_image_handler); @@ -196,7 +201,7 @@ pub fn main_wrapper<E: Example>( let epoch = Epoch(0); let pipeline_id = PipelineId(0, 0); let layout_size = device_size.to_f32() / euclid::Scale::new(device_pixel_ratio); - let mut builder = DisplayListBuilder::new(pipeline_id); + let mut builder = DisplayListBuilder::new(pipeline_id, layout_size); let mut txn = Transaction::new(); example.render( @@ -215,7 +220,7 @@ pub fn main_wrapper<E: Example>( true, ); txn.set_root_pipeline(pipeline_id); - txn.generate_frame(0); + txn.generate_frame(); api.send_transaction(document_id, txn); println!("Entering event loop"); @@ -254,10 +259,14 @@ pub fn main_wrapper<E: Example>( winit::VirtualKeyCode::P => debug_flags.toggle(DebugFlags::PROFILER_DBG), winit::VirtualKeyCode::O => debug_flags.toggle(DebugFlags::RENDER_TARGET_DBG), winit::VirtualKeyCode::I => debug_flags.toggle(DebugFlags::TEXTURE_CACHE_DBG), + winit::VirtualKeyCode::S => debug_flags.toggle(DebugFlags::COMPACT_PROFILER), winit::VirtualKeyCode::T => debug_flags.toggle(DebugFlags::PICTURE_CACHING_DBG), winit::VirtualKeyCode::Q => debug_flags.toggle( DebugFlags::GPU_TIME_QUERIES | DebugFlags::GPU_SAMPLE_QUERIES ), + winit::VirtualKeyCode::F => debug_flags.toggle( + DebugFlags::NEW_FRAME_INDICATOR | DebugFlags::NEW_SCENE_INDICATOR + ), winit::VirtualKeyCode::G => debug_flags.toggle(DebugFlags::GPU_CACHE_DBG), winit::VirtualKeyCode::Key1 => txn.set_document_view( device_size.into(), @@ -295,7 +304,7 @@ pub fn main_wrapper<E: Example>( } if custom_event { - let mut builder = DisplayListBuilder::new(pipeline_id); + let mut builder = DisplayListBuilder::new(pipeline_id, layout_size); example.render( &mut api, @@ -312,12 +321,12 @@ pub fn main_wrapper<E: Example>( builder.finalize(), true, ); - txn.generate_frame(0); + txn.generate_frame(); } api.send_transaction(document_id, txn); renderer.update(); - renderer.render(device_size, 0).unwrap(); + renderer.render(device_size).unwrap(); let _ = renderer.flush_pipeline_info(); example.draw_custom(&*gl); windowed_context.swap_buffers().ok(); |