mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 16:55:40 +00:00
Bug 1642629 - Recycle dirty_region_stack in FrameBuilder. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D79858
This commit is contained in:
parent
bbc46b7620
commit
9cac8b72d6
@ -30,7 +30,7 @@ use crate::resource_cache::{ResourceCache};
|
||||
use crate::scene::{BuiltScene, SceneProperties};
|
||||
use crate::segment::SegmentBuilder;
|
||||
use std::{f32, mem};
|
||||
use crate::util::MaxRect;
|
||||
use crate::util::{MaxRect, VecHelper};
|
||||
use crate::visibility::{update_primitive_visibility, FrameVisibilityState, FrameVisibilityContext};
|
||||
use crate::visibility::{PrimitiveVisibilityMask};
|
||||
|
||||
@ -130,6 +130,8 @@ pub struct FrameBuilder {
|
||||
#[cfg_attr(any(feature = "capture", feature = "replay"), serde(skip))]
|
||||
surfaces: Vec<SurfaceInfo>,
|
||||
#[cfg_attr(any(feature = "capture", feature = "replay"), serde(skip))]
|
||||
dirty_region_stack: Vec<DirtyRegion>,
|
||||
#[cfg_attr(any(feature = "capture", feature = "replay"), serde(skip))]
|
||||
picture_update_buffers: PictureUpdateStateBuffers,
|
||||
}
|
||||
|
||||
@ -205,6 +207,7 @@ impl FrameBuilder {
|
||||
pending_retained_tiles: RetainedTiles::new(),
|
||||
globals: FrameGlobalResources::empty(),
|
||||
surfaces: Vec::new(),
|
||||
dirty_region_stack: Vec::new(),
|
||||
picture_update_buffers: PictureUpdateStateBuffers::default(),
|
||||
}
|
||||
}
|
||||
@ -402,7 +405,7 @@ impl FrameBuilder {
|
||||
transforms: transform_palette,
|
||||
segment_builder: SegmentBuilder::new(),
|
||||
surfaces: &mut self.surfaces,
|
||||
dirty_region_stack: Vec::new(),
|
||||
dirty_region_stack: self.dirty_region_stack.take().cleared(),
|
||||
composite_state,
|
||||
};
|
||||
|
||||
@ -471,6 +474,8 @@ impl FrameBuilder {
|
||||
|
||||
frame_state.pop_dirty_region();
|
||||
|
||||
self.dirty_region_stack = frame_state.dirty_region_stack.take();
|
||||
|
||||
{
|
||||
profile_marker!("BlockOnResources");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user