Skip to content

Commit e3ccda7

Browse files
committed
Add PrimTemplateCommonData access helper to FrameResources.
1 parent ce799fb commit e3ccda7

File tree

3 files changed

+33
-35
lines changed

3 files changed

+33
-35
lines changed

webrender/src/picture.rs

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -615,31 +615,13 @@ impl TileCache {
615615
clip_scroll_tree,
616616
);
617617

618-
let (prim_rect, clip_rect) = match prim_instance.kind {
619-
PrimitiveInstanceKind::Picture { data_handle, .. } |
620-
PrimitiveInstanceKind::LineDecoration { data_handle, .. } |
621-
PrimitiveInstanceKind::NormalBorder { data_handle, .. } |
622-
PrimitiveInstanceKind::ImageBorder { data_handle, .. } |
623-
PrimitiveInstanceKind::Rectangle { data_handle, .. } |
624-
PrimitiveInstanceKind::YuvImage { data_handle, .. } |
625-
PrimitiveInstanceKind::Image { data_handle, .. } |
626-
PrimitiveInstanceKind::LinearGradient { data_handle, .. } |
627-
PrimitiveInstanceKind::RadialGradient { data_handle, .. } |
628-
PrimitiveInstanceKind::Clear { data_handle, .. } => {
629-
let prim_data = &resources.prim_data_store[data_handle];
630-
(&prim_data.prim_rect, &prim_data.clip_rect)
631-
}
632-
PrimitiveInstanceKind::TextRun { data_handle, .. } => {
633-
let prim_data = &resources.text_run_data_store[data_handle];
634-
(&prim_data.prim_rect, &prim_data.clip_rect)
635-
}
636-
};
618+
let prim_data = &resources.as_common_data(&prim_instance);
637619

638620
// Map the primitive local rect into the picture space.
639621
// TODO(gw): We should maybe store this in the primitive template
640622
// during interning so that we never have to calculate
641623
// it during frame building.
642-
let culling_rect = match prim_rect.intersection(&clip_rect) {
624+
let culling_rect = match prim_data.prim_rect.intersection(&prim_data.clip_rect) {
643625
Some(rect) => rect,
644626
None => return,
645627
};

webrender/src/prim_store/mod.rs

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2837,20 +2837,8 @@ impl PrimitiveStore {
28372837
let pic = &self.pictures[pic_index.0];
28382838
(pic.local_rect, LayoutRect::max_rect())
28392839
}
2840-
PrimitiveInstanceKind::Clear { data_handle, .. } |
2841-
PrimitiveInstanceKind::NormalBorder { data_handle, .. } |
2842-
PrimitiveInstanceKind::ImageBorder { data_handle, .. } |
2843-
PrimitiveInstanceKind::Rectangle { data_handle, .. } |
2844-
PrimitiveInstanceKind::YuvImage { data_handle, .. } |
2845-
PrimitiveInstanceKind::Image { data_handle, .. } |
2846-
PrimitiveInstanceKind::LinearGradient { data_handle, .. } |
2847-
PrimitiveInstanceKind::RadialGradient { data_handle, .. } |
2848-
PrimitiveInstanceKind::LineDecoration { data_handle, .. } => {
2849-
let prim_data = &resources.prim_data_store[data_handle];
2850-
(prim_data.prim_rect, prim_data.clip_rect)
2851-
}
2852-
PrimitiveInstanceKind::TextRun { data_handle, .. } => {
2853-
let prim_data = &resources.text_run_data_store[data_handle];
2840+
_ => {
2841+
let prim_data = &resources.as_common_data(&prim_instance);
28542842
(prim_data.prim_rect, prim_data.clip_rect)
28552843
}
28562844
};

webrender/src/render_backend.rs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ use frame_builder::{FrameBuilder, FrameBuilderConfig};
3030
use gpu_cache::GpuCache;
3131
use hit_test::{HitTest, HitTester};
3232
use internal_types::{DebugOutput, FastHashMap, FastHashSet, RenderedDocument, ResultMsg};
33-
use prim_store::{PrimitiveDataStore, PrimitiveScratchBuffer};
33+
use prim_store::{PrimitiveDataStore, PrimitiveScratchBuffer, PrimitiveInstance};
34+
use prim_store::{PrimitiveInstanceKind, PrimTemplateCommonData};
3435
use prim_store::text_run::TextRunDataStore;
3536
use profiler::{BackendProfileCounters, IpcProfileCounters, ResourceProfileCounters};
3637
use record::ApiRecordingReceiver;
@@ -205,6 +206,33 @@ pub struct FrameResources {
205206
pub text_run_data_store: TextRunDataStore,
206207
}
207208

209+
impl FrameResources {
210+
pub fn as_common_data(
211+
&self,
212+
prim_inst: &PrimitiveInstance
213+
) -> &PrimTemplateCommonData {
214+
match prim_inst.kind {
215+
PrimitiveInstanceKind::Picture { data_handle, .. } |
216+
PrimitiveInstanceKind::LineDecoration { data_handle, .. } |
217+
PrimitiveInstanceKind::NormalBorder { data_handle, .. } |
218+
PrimitiveInstanceKind::ImageBorder { data_handle, .. } |
219+
PrimitiveInstanceKind::Rectangle { data_handle, .. } |
220+
PrimitiveInstanceKind::YuvImage { data_handle, .. } |
221+
PrimitiveInstanceKind::Image { data_handle, .. } |
222+
PrimitiveInstanceKind::LinearGradient { data_handle, .. } |
223+
PrimitiveInstanceKind::RadialGradient { data_handle, .. } |
224+
PrimitiveInstanceKind::Clear { data_handle, .. } => {
225+
let prim_data = &self.prim_data_store[data_handle];
226+
&prim_data.common
227+
}
228+
PrimitiveInstanceKind::TextRun { data_handle, .. } => {
229+
let prim_data = &self.text_run_data_store[data_handle];
230+
&prim_data.common
231+
}
232+
}
233+
}
234+
}
235+
208236
struct Document {
209237
// The latest built scene, usable to build frames.
210238
// received from the scene builder thread.

0 commit comments

Comments
 (0)