aboutsummaryrefslogtreecommitdiffstats
path: root/third_party/webrender/examples/common/boilerplate.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/webrender/examples/common/boilerplate.rs')
-rw-r--r--third_party/webrender/examples/common/boilerplate.rs37
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();