Bug 1522555 - Remove a lot of dead code. r=kvark
authorEmilio Cobos Álvarez <emilio@crisal.io>
Thu, 24 Jan 2019 17:31:20 +0000
changeset 455511 0f8a67bf322646794f0b47427f0b74b289f4a2a7
parent 455510 6b9d943ecc2affe25094a0046dbc498ff2d1b96c
child 455512 bdf350144ce46d0e5ab7974ca365a034bec09457
push id35439
push useraciure@mozilla.com
push dateSat, 26 Jan 2019 09:35:29 +0000
treeherdermozilla-central@edfd8a13603c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerskvark
bugs1522555
milestone66.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1522555 - Remove a lot of dead code. r=kvark We can always pull this back from history should we need it, but given how broken the texture caching of pictures was (see the recent text shadow story) I suspect we won't. Differential Revision: https://phabricator.services.mozilla.com/D17524
gfx/wr/webrender/src/display_list_flattener.rs
gfx/wr/webrender/src/lib.rs
gfx/wr/webrender/src/picture.rs
gfx/wr/webrender/src/render_task.rs
gfx/wr/webrender/src/surface.rs
gfx/wr/wrench/reftests/border/border-suite-2.png
--- a/gfx/wr/webrender/src/display_list_flattener.rs
+++ b/gfx/wr/webrender/src/display_list_flattener.rs
@@ -385,17 +385,16 @@ impl<'a> DisplayListFlattener<'a> {
             Picture3DContext::Out,
             self.scene.root_pipeline_id.unwrap(),
             None,
             true,
             RasterSpace::Screen,
             prim_list,
             main_scroll_root,
             LayoutRect::max_rect(),
-            &self.clip_store,
             Some(tile_cache),
             PictureOptions::default(),
         ));
 
         let instance = PrimitiveInstance::new(
             LayoutPoint::zero(),
             LayoutRect::max_rect(),
             PrimitiveInstanceKind::Picture {
@@ -1210,17 +1209,16 @@ impl<'a> DisplayListFlattener<'a> {
         // an intermediate surface for plane splitting purposes.
         let (parent_is_3d, extra_3d_instance) = match self.sc_stack.last_mut() {
             Some(sc) => {
                 // Cut the sequence of flat children before starting a child stacking context,
                 // so that the relative order between them and our current SC is preserved.
                 let extra_instance = sc.cut_flat_item_sequence(
                     &mut self.prim_store,
                     &mut self.interners,
-                    &self.clip_store,
                 );
                 (sc.is_3d(), extra_instance)
             },
             None => (false, None),
         };
 
         if let Some(instance) = extra_3d_instance {
             self.add_primitive_instance_to_3d_root(instance);
@@ -1361,17 +1359,16 @@ impl<'a> DisplayListFlattener<'a> {
                 true,
                 stacking_context.requested_raster_space,
                 PrimitiveList::new(
                     stacking_context.primitives,
                     &self.interners,
                 ),
                 stacking_context.spatial_node_index,
                 max_clip,
-                &self.clip_store,
                 None,
                 PictureOptions::default(),
             ))
         );
 
         // Create a chain of pictures based on presence of filters,
         // mix-blend-mode and/or 3d rendering context containers.
 
@@ -1411,17 +1408,16 @@ impl<'a> DisplayListFlattener<'a> {
                     true,
                     stacking_context.requested_raster_space,
                     PrimitiveList::new(
                         prims,
                         &self.interners,
                     ),
                     stacking_context.spatial_node_index,
                     max_clip,
-                    &self.clip_store,
                     None,
                     PictureOptions::default(),
                 ))
             );
 
             // If this is going to be the last picture for the stacking context,
             // then put the clip onto the leaf picture, since this one uses
             // PictureCompositeKey::Identity and won't have a surface to be
@@ -1457,17 +1453,16 @@ impl<'a> DisplayListFlattener<'a> {
                     true,
                     stacking_context.requested_raster_space,
                     PrimitiveList::new(
                         vec![cur_instance.clone()],
                         &self.interners,
                     ),
                     stacking_context.spatial_node_index,
                     max_clip,
-                    &self.clip_store,
                     None,
                     PictureOptions::default(),
                 ))
             );
 
             current_pic_index = filter_pic_index;
             cur_instance = create_prim_instance(
                 current_pic_index,
@@ -1501,17 +1496,16 @@ impl<'a> DisplayListFlattener<'a> {
                     true,
                     stacking_context.requested_raster_space,
                     PrimitiveList::new(
                         vec![cur_instance.clone()],
                         &self.interners,
                     ),
                     stacking_context.spatial_node_index,
                     max_clip,
-                    &self.clip_store,
                     None,
                     PictureOptions::default(),
                 ))
             );
 
             current_pic_index = blend_pic_index;
             cur_instance = create_prim_instance(
                 blend_pic_index,
@@ -1848,17 +1842,16 @@ impl<'a> DisplayListFlattener<'a> {
                                 is_passthrough,
                                 raster_space,
                                 PrimitiveList::new(
                                     prims,
                                     &self.interners,
                                 ),
                                 pending_shadow.clip_and_scroll.spatial_node_index,
                                 max_clip,
-                                &self.clip_store,
                                 None,
                                 options,
                             ))
                         );
 
                         let shadow_pic_key = PictureKey::new(
                             true,
                             LayoutSize::zero(),
@@ -2593,17 +2586,16 @@ impl FlattenedStackingContext {
     }
 
     /// For a Preserve3D context, cut the sequence of the immediate flat children
     /// recorded so far and generate a picture from them.
     pub fn cut_flat_item_sequence(
         &mut self,
         prim_store: &mut PrimitiveStore,
         interners: &mut Interners,
-        clip_store: &ClipStore,
     ) -> Option<PrimitiveInstance> {
         if !self.is_3d() || self.primitives.is_empty() {
             return None
         }
         let flat_items_context_3d = match self.context_3d {
             Picture3DContext::In { ancestor_index, .. } => Picture3DContext::In {
                 root_data: None,
                 ancestor_index,
@@ -2621,17 +2613,16 @@ impl FlattenedStackingContext {
                 true,
                 self.requested_raster_space,
                 PrimitiveList::new(
                     mem::replace(&mut self.primitives, Vec::new()),
                     interners,
                 ),
                 self.spatial_node_index,
                 LayoutRect::max_rect(),
-                clip_store,
                 None,
                 PictureOptions::default(),
             ))
         );
 
         let prim_instance = create_prim_instance(
             pic_index,
             PictureCompositeKey::Identity,
--- a/gfx/wr/webrender/src/lib.rs
+++ b/gfx/wr/webrender/src/lib.rs
@@ -110,17 +110,16 @@ mod render_task;
 mod renderer;
 mod resource_cache;
 mod scene;
 mod scene_builder;
 mod segment;
 mod shade;
 mod spatial_node;
 mod storage;
-mod surface;
 mod texture_allocator;
 mod texture_cache;
 mod tiling;
 mod util;
 
 mod shader_source {
     include!(concat!(env!("OUT_DIR"), "/shaders.rs"));
 }
--- a/gfx/wr/webrender/src/picture.rs
+++ b/gfx/wr/webrender/src/picture.rs
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 use api::{DeviceRect, FilterOp, MixBlendMode, PipelineId, PremultipliedColorF, PictureRect, PicturePoint, WorldPoint};
 use api::{DeviceIntRect, DevicePoint, LayoutRect, PictureToRasterTransform, LayoutPixel, PropertyBinding, PropertyBindingId};
 use api::{DevicePixelScale, RasterRect, RasterSpace, ColorF, ImageKey, DirtyRect, WorldSize, ClipMode, LayoutSize};
 use api::{PicturePixel, RasterPixel, WorldPixel, WorldRect, ImageFormat, ImageDescriptor, WorldVector2D, LayoutPoint};
 use api::{DebugFlags, DeviceVector2D};
 use box_shadow::{BLUR_SAMPLE_SCALE};
-use clip::{ClipStore, ClipChainId, ClipChainNode, ClipItem};
+use clip::{ClipChainId, ClipChainNode, ClipItem};
 use clip_scroll_tree::{ROOT_SPATIAL_NODE_INDEX, ClipScrollTree, SpatialNodeIndex, CoordinateSystemId};
 use debug_colors;
 use device::TextureFilter;
 use euclid::{TypedScale, vec3, TypedRect, TypedPoint2D, TypedSize2D};
 use euclid::approxeq::ApproxEq;
 use frame_builder::{FrameVisibilityContext, FrameVisibilityState};
 use intern::ItemUid;
 use internal_types::{FastHashMap, FastHashSet, PlaneSplitter};
@@ -27,17 +27,16 @@ use prim_store::{OpacityBindingStorage, 
 use print_tree::PrintTreePrinter;
 use render_backend::DataStores;
 use render_task::{ClearMode, RenderTask, RenderTaskCacheEntryHandle, TileBlit};
 use render_task::{RenderTaskId, RenderTaskLocation};
 use resource_cache::ResourceCache;
 use scene::{FilterOpHelpers, SceneProperties};
 use scene_builder::Interners;
 use smallvec::SmallVec;
-use surface::{SurfaceDescriptor};
 use std::{mem, u16};
 use std::sync::atomic::{AtomicUsize, ATOMIC_USIZE_INIT, Ordering};
 use texture_cache::{Eviction, TextureCacheHandle};
 use tiling::RenderTargetKind;
 use util::{ComparableVec, TransformedRectKind, MatrixHelpers, MaxRect};
 
 /*
  A picture represents a dynamically rendered image. It consists of:
@@ -1969,19 +1968,16 @@ pub struct PicturePrimitive {
 
     /// The local rect of this picture. It is built
     /// dynamically during the first picture traversal.
     pub local_rect: LayoutRect,
 
     /// Local clip rect for this picture.
     pub local_clip_rect: LayoutRect,
 
-    /// A descriptor for this surface that can be used as a cache key.
-    surface_desc: Option<SurfaceDescriptor>,
-
     pub gpu_location: GpuCacheHandle,
 
     /// If Some(..) the tile cache that is associated with this picture.
     pub tile_cache: Option<TileCache>,
 
     /// The config options for this picture.
     options: PictureOptions,
 }
@@ -2068,44 +2064,20 @@ impl PicturePrimitive {
         context_3d: Picture3DContext<OrderedPictureChild>,
         pipeline_id: PipelineId,
         frame_output_pipeline_id: Option<PipelineId>,
         apply_local_clip_rect: bool,
         requested_raster_space: RasterSpace,
         prim_list: PrimitiveList,
         spatial_node_index: SpatialNodeIndex,
         local_clip_rect: LayoutRect,
-        clip_store: &ClipStore,
         tile_cache: Option<TileCache>,
         options: PictureOptions,
     ) -> Self {
-        // For now, only create a cache descriptor for blur filters (which
-        // includes text shadows). We can incrementally expand this to
-        // handle more composite modes.
-        let create_cache_descriptor = match requested_composite_mode {
-            Some(PictureCompositeMode::Filter(FilterOp::Blur(blur_radius))) => {
-                blur_radius > 0.0
-            }
-            Some(_) | None => {
-                false
-            }
-        };
-
-        let surface_desc = if create_cache_descriptor {
-            SurfaceDescriptor::new(
-                &prim_list.prim_instances,
-                spatial_node_index,
-                clip_store,
-            )
-        } else {
-            None
-        };
-
         PicturePrimitive {
-            surface_desc,
             prim_list,
             state: None,
             secondary_render_task_id: None,
             requested_composite_mode,
             raster_config: None,
             context_3d,
             frame_output_pipeline_id,
             extra_gpu_data_handle: GpuCacheHandle::new(),
@@ -2410,22 +2382,16 @@ impl PicturePrimitive {
             mode => mode,
         };
 
         if let Some(composite_mode) = actual_composite_mode {
             // Retrieve the positioning node information for the parent surface.
             let parent_raster_spatial_node_index = state.current_surface().raster_spatial_node_index;
             let surface_spatial_node_index = self.spatial_node_index;
 
-            // TODO(gw): For now, we always raster in screen space. Soon,
-            //           we will be able to respect the requested raster
-            //           space, and/or override the requested raster root
-            //           if it makes sense to.
-            let raster_space = RasterSpace::Screen;
-
             let inflation_factor = match composite_mode {
                 PictureCompositeMode::Filter(FilterOp::Blur(blur_radius)) => {
                     // Only inflate if the caller hasn't already inflated
                     // the bounding rects for this filter.
                     if self.options.inflate_if_required {
                         // The amount of extra space needed for primitives inside
                         // this picture to ensure the visibility check is correct.
                         BLUR_SAMPLE_SCALE * blur_radius
@@ -2469,27 +2435,16 @@ impl PicturePrimitive {
                     surface_spatial_node_index,
                     parent_raster_spatial_node_index,
                     inflation_factor,
                     frame_context.screen_world_rect,
                     &frame_context.clip_scroll_tree,
                 );
             };
 
-            // If we have a cache key / descriptor for this surface,
-            // update any transforms it cares about.
-            if let Some(ref mut surface_desc) = self.surface_desc {
-                surface_desc.update(
-                    surface_spatial_node_index,
-                    surface.raster_spatial_node_index,
-                    frame_context.clip_scroll_tree,
-                    raster_space,
-                );
-            }
-
             self.raster_config = Some(RasterConfig {
                 composite_mode,
                 establishes_raster_root: surface_spatial_node_index == surface.raster_spatial_node_index,
                 surface_index: state.push_surface(surface),
             });
         }
 
         Some(mem::replace(&mut self.prim_list.pictures, SmallVec::new()))
--- a/gfx/wr/webrender/src/render_task.rs
+++ b/gfx/wr/webrender/src/render_task.rs
@@ -23,17 +23,16 @@ use internal_types::{CacheTextureId, Fas
 use pathfinder_partitioner::mesh::Mesh;
 use prim_store::PictureIndex;
 use prim_store::image::ImageCacheKey;
 use prim_store::line_dec::LineDecorationCacheKey;
 #[cfg(feature = "debugger")]
 use print_tree::{PrintTreePrinter};
 use render_backend::FrameId;
 use resource_cache::{CacheItem, ResourceCache};
-use surface::SurfaceCacheKey;
 use std::{ops, mem, usize, f32, i32, u32};
 use texture_cache::{TextureCache, TextureCacheHandle, Eviction};
 use tiling::{RenderPass, RenderTargetIndex};
 use tiling::{RenderTargetKind};
 #[cfg(feature = "pathfinder")]
 use webrender_api::DevicePixel;
 
 const RENDER_TASK_SIZE_SANITY_CHECK: i32 = 16000;
@@ -1085,18 +1084,16 @@ impl RenderTask {
 #[derive(Clone, Debug, Hash, PartialEq, Eq)]
 #[cfg_attr(feature = "capture", derive(Serialize))]
 #[cfg_attr(feature = "replay", derive(Deserialize))]
 pub enum RenderTaskCacheKeyKind {
     BoxShadow(BoxShadowCacheKey),
     Image(ImageCacheKey),
     #[allow(dead_code)]
     Glyph(GpuGlyphCacheKey),
-    #[allow(dead_code)]
-    Picture(SurfaceCacheKey),
     BorderSegment(BorderSegmentCacheKey),
     LineDecoration(LineDecorationCacheKey),
 }
 
 #[derive(Clone, Debug, Hash, PartialEq, Eq)]
 #[cfg_attr(feature = "capture", derive(Serialize))]
 #[cfg_attr(feature = "replay", derive(Deserialize))]
 pub struct RenderTaskCacheKey {
deleted file mode 100644
--- a/gfx/wr/webrender/src/surface.rs
+++ /dev/null
@@ -1,326 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-use api::{LayoutPixel, PicturePixel, RasterSpace};
-use clip::{ClipChainId, ClipStore};
-use clip_scroll_tree::{ClipScrollTree, SpatialNodeIndex};
-use euclid::TypedTransform3D;
-use intern::ItemUid;
-use internal_types::FastHashSet;
-use prim_store::{CoordinateSpaceMapping, PrimitiveInstance, PrimitiveInstanceKind};
-use std::hash;
-use util::ScaleOffset;
-
-/*
-
-    Notes for future implementation work on surface caching:
-
-    State that can affect the contents of a cached surface:
-
-        Primitives
-            These are handled by the PrimitiveUid value. The structure interning
-            code during scene building guarantees that each PrimitiveUid will
-            represent a unique identifier for the content of this primitive.
-        Clip chains
-            Similarly, the ClipUid value uniquely identifies the contents of
-            a clip node.
-        Transforms
-            Each picture contains a list of transforms that affect the content
-            of the picture itself. The value of the surface transform relative
-            to the raster root transform is only relevant if the picture is
-            being rasterized in screen-space.
-        External images
-            An external image (e.g. video) can change the contents of a picture
-            without a scene build occurring. We don't need to handle this yet,
-            but once images support interning and caching, we'll need to include
-            a list of external image dependencies in the cache key.
-        Property animation
-            Transform animations are handled by the transforms case above. We don't
-            need to handle opacity animations yet, since the interning and picture
-            caching doesn't support images and / or solid rects. Once those
-            primitives are ported, we'll need a list of property animation keys
-            that a surface depends on.
-
-*/
-
-// Matches the definition of SK_ScalarNearlyZero in Skia.
-// TODO(gw): Some testing to see what's reasonable for this value
-//           to avoid invalidating the cache for minor changes.
-const QUANTIZE_SCALE: f32 = 4096.0;
-
-fn quantize(value: f32) -> f32 {
-    (value * QUANTIZE_SCALE).round() / QUANTIZE_SCALE
-}
-
-/// A quantized, hashable version of util::ScaleOffset that
-/// can be used as a cache key.
-#[cfg_attr(feature = "capture", derive(Serialize))]
-#[cfg_attr(feature = "replay", derive(Deserialize))]
-#[derive(Debug, PartialEq, Clone)]
-pub struct ScaleOffsetKey {
-    pub scale_x: f32,
-    pub scale_y: f32,
-    pub offset_x: f32,
-    pub offset_y: f32,
-}
-
-impl ScaleOffsetKey {
-    fn new(scale_offset: &ScaleOffset) -> Self {
-        // TODO(gw): Since these are quantized, it might make sense in the future to
-        //           convert these to ints to remove the need for custom hash impl.
-        ScaleOffsetKey {
-            scale_x: quantize(scale_offset.scale.x),
-            scale_y: quantize(scale_offset.scale.y),
-            offset_x: quantize(scale_offset.offset.x),
-            offset_y: quantize(scale_offset.offset.y),
-        }
-    }
-}
-
-impl Eq for ScaleOffsetKey {}
-
-impl hash::Hash for ScaleOffsetKey {
-    fn hash<H: hash::Hasher>(&self, state: &mut H) {
-        self.scale_x.to_bits().hash(state);
-        self.scale_y.to_bits().hash(state);
-        self.offset_x.to_bits().hash(state);
-        self.offset_y.to_bits().hash(state);
-    }
-}
-
-/// A quantized, hashable version of PictureTransform that
-/// can be used as a cache key.
-#[cfg_attr(feature = "capture", derive(Serialize))]
-#[cfg_attr(feature = "replay", derive(Deserialize))]
-#[derive(Debug, PartialEq, Clone)]
-pub struct MatrixKey {
-    values: [f32; 16],
-}
-
-impl MatrixKey {
-    fn new<Src, Dst>(transform: &TypedTransform3D<f32, Src, Dst>) -> Self {
-        let mut values = transform.to_row_major_array();
-
-        // TODO(gw): Since these are quantized, it might make sense in the future to
-        //           convert these to ints to remove the need for custom hash impl.
-        for value in &mut values {
-            *value = quantize(*value);
-        }
-
-        MatrixKey {
-            values,
-        }
-    }
-}
-
-impl Eq for MatrixKey {}
-
-impl hash::Hash for MatrixKey {
-    fn hash<H: hash::Hasher>(&self, state: &mut H) {
-        for value in &self.values {
-            value.to_bits().hash(state);
-        }
-    }
-}
-
-/// A quantized, hashable version of CoordinateSpaceMapping that
-/// can be used as a cache key.
-#[cfg_attr(feature = "capture", derive(Serialize))]
-#[cfg_attr(feature = "replay", derive(Deserialize))]
-#[derive(Debug, PartialEq, Clone, Hash, Eq)]
-pub enum TransformKey {
-    Local,
-    ScaleOffset(ScaleOffsetKey),
-    Transform(MatrixKey),
-}
-
-impl TransformKey {
-    pub fn local() -> Self {
-        TransformKey::Local
-    }
-}
-
-impl<F, T> From<CoordinateSpaceMapping<F, T>> for TransformKey {
-    /// Construct a transform cache key from a coordinate space mapping.
-    fn from(mapping: CoordinateSpaceMapping<F, T>) -> TransformKey {
-        match mapping {
-            CoordinateSpaceMapping::Local => {
-                TransformKey::Local
-            }
-            CoordinateSpaceMapping::ScaleOffset(ref scale_offset) => {
-                TransformKey::ScaleOffset(ScaleOffsetKey::new(scale_offset))
-            }
-            CoordinateSpaceMapping::Transform(ref transform) => {
-                TransformKey::Transform(MatrixKey::new(transform))
-            }
-        }
-    }
-}
-
-/// This key uniquely identifies the contents of a cached
-/// picture surface.
-#[cfg_attr(feature = "capture", derive(Serialize))]
-#[cfg_attr(feature = "replay", derive(Deserialize))]
-#[derive(Debug, Eq, PartialEq, Hash, Clone)]
-pub struct SurfaceCacheKey {
-    /// The list of primitives that are part of this surface.
-    /// The uid uniquely identifies the content of the primitive.
-    pub primitive_ids: Vec<ItemUid>,
-    /// The list of clips that affect the primitives on this surface.
-    /// The uid uniquely identifies the content of the clip.
-    pub clip_ids: Vec<ItemUid>,
-    /// A list of transforms that can affect the contents of primitives
-    /// and/or clips on this picture surface.
-    pub transforms: Vec<TransformKey>,
-    /// Information about the transform of the picture surface itself. If we are
-    /// drawing in screen-space, then the value of this affects the contents
-    /// of the cached surface. If we're drawing in local space, then the transform
-    /// of the surface in its parent is not relevant to the contents.
-    pub raster_transform: TransformKey,
-}
-
-/// A descriptor for the contents of a picture surface.
-#[cfg_attr(feature = "capture", derive(Serialize))]
-#[cfg_attr(feature = "replay", derive(Deserialize))]
-pub struct SurfaceDescriptor {
-    /// The cache key identifies the contents or primitives, clips and the current
-    /// state of relevant transforms.
-    pub cache_key: SurfaceCacheKey,
-
-    /// The spatial nodes array is used to update the cache key each frame, without
-    /// relying on the value of a spatial node index (these may change, if other parts of the
-    /// display list result in a different clip-scroll tree).
-    pub spatial_nodes: Vec<SpatialNodeIndex>,
-}
-
-impl SurfaceDescriptor {
-    /// Construct a new surface descriptor for this list of primitives.
-    /// This method is fallible - it will return None if this picture
-    /// contains primitives that can't currently be cached safely.
-    pub fn new(
-        prim_instances: &[PrimitiveInstance],
-        pic_spatial_node_index: SpatialNodeIndex,
-        clip_store: &ClipStore,
-    ) -> Option<Self> {
-        let mut relevant_spatial_nodes = FastHashSet::default();
-        let mut primitive_ids = Vec::new();
-        let mut clip_ids = Vec::new();
-
-        for prim_instance in prim_instances {
-            // If the prim has the same spatial node as the surface,
-            // then the content can't move relative to it, so we don't
-            // care if the transform changes.
-            if pic_spatial_node_index != prim_instance.spatial_node_index {
-                relevant_spatial_nodes.insert(prim_instance.spatial_node_index);
-            }
-
-            // Collect clip node transforms that we care about.
-            let mut clip_chain_id = prim_instance.clip_chain_id;
-            while clip_chain_id != ClipChainId::NONE {
-                let clip_chain_node = &clip_store.clip_chain_nodes[clip_chain_id.0 as usize];
-
-                // TODO(gw): This needs to be a bit more careful once we create
-                //           descriptors for pictures that might be pass-through.
-
-                // Ignore clip chain nodes that will be handled by the clip node collector.
-                if clip_chain_node.spatial_node_index > pic_spatial_node_index {
-                    relevant_spatial_nodes.insert(prim_instance.spatial_node_index);
-
-                    clip_ids.push(clip_chain_node.handle.uid());
-                }
-
-                clip_chain_id = clip_chain_node.parent_clip_chain_id;
-            }
-
-            // For now, we only handle interned primitives. If we encounter
-            // a legacy primitive or picture, then fail to create a cache
-            // descriptor.
-            if let PrimitiveInstanceKind::Picture { .. } = prim_instance.kind {
-                return None;
-            }
-
-            // Record the unique identifier for the content represented
-            // by this primitive.
-            primitive_ids.push(prim_instance.uid());
-        }
-
-        // Get a list of spatial nodes that are relevant for the contents
-        // of this picture. Sort them to ensure that for a given clip-scroll
-        // tree, we end up with the same transform ordering.
-        let mut spatial_nodes: Vec<SpatialNodeIndex> = relevant_spatial_nodes
-            .into_iter()
-            .collect();
-        spatial_nodes.sort();
-
-        // Create the array of transform values that gets built each
-        // frame during update.
-        let transforms = vec![TransformKey::local(); spatial_nodes.len()];
-
-        let cache_key = SurfaceCacheKey {
-            primitive_ids,
-            clip_ids,
-            transforms,
-            raster_transform: TransformKey::local(),
-        };
-
-        Some(SurfaceDescriptor {
-            cache_key,
-            spatial_nodes,
-        })
-    }
-
-    /// Update the transforms for this cache key, by extracting the current
-    /// values from the clip-scroll tree state.
-    pub fn update(
-        &mut self,
-        surface_spatial_node_index: SpatialNodeIndex,
-        raster_spatial_node_index: SpatialNodeIndex,
-        clip_scroll_tree: &ClipScrollTree,
-        raster_space: RasterSpace,
-    ) {
-        // Update the state of the transform for compositing this picture.
-        self.cache_key.raster_transform = match raster_space {
-            RasterSpace::Screen => {
-                // In general cases, if we're rasterizing a picture in screen space, then the
-                // value of the surface spatial node will affect the contents of the picture
-                // itself. However, if the surface and raster spatial nodes are in the same
-                // coordinate system (which is the common case!) then we are effectively drawing
-                // in a local space anyway, so don't care about that transform for the purposes
-                // of validating the surface cache contents.
-                let raster_spatial_node = &clip_scroll_tree.spatial_nodes[raster_spatial_node_index.0 as usize];
-                let surface_spatial_node = &clip_scroll_tree.spatial_nodes[surface_spatial_node_index.0 as usize];
-
-                let mut key = CoordinateSpaceMapping::<LayoutPixel, PicturePixel>::new(
-                    raster_spatial_node_index,
-                    surface_spatial_node_index,
-                    clip_scroll_tree,
-                ).expect("bug: unable to get coord mapping").into();
-
-                if let TransformKey::ScaleOffset(ref mut key) = key {
-                    if raster_spatial_node.coordinate_system_id == surface_spatial_node.coordinate_system_id {
-                        key.offset_x = 0.0;
-                        key.offset_y = 0.0;
-                    }
-                }
-
-                key
-            }
-            RasterSpace::Local(..) => {
-                TransformKey::local()
-            }
-        };
-
-        // Update the state of any relevant transforms for this picture.
-        for (spatial_node_index, transform) in self.spatial_nodes
-            .iter()
-            .zip(self.cache_key.transforms.iter_mut())
-        {
-            *transform = CoordinateSpaceMapping::<LayoutPixel, PicturePixel>::new(
-                raster_spatial_node_index,
-                *spatial_node_index,
-                clip_scroll_tree,
-            ).expect("bug: unable to get coord mapping").into();
-        }
-    }
-}
index 28fe2195f7dfb4ec07ba8c89b5a321924ee01616..4c2d561da1dd99ce4106bf0fc2e638fa0773940b
GIT binary patch
literal 48931
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%0AMco04pCUZ+ce-@=3
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