From 7bce32d7f3a8547b9ee64a3473367a414b7d14ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Wed, 12 Dec 2018 13:52:03 +0100 Subject: [PATCH 1/3] Update euclid. --- Cargo.lock | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e1fd8437c7..42db48a152 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -334,7 +334,7 @@ dependencies = [ name = "direct-composition" version = "0.1.0" dependencies = [ - "euclid 0.19.3 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.19.4 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", "mozangle 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "webrender 0.57.2", @@ -391,7 +391,7 @@ dependencies = [ [[package]] name = "euclid" -version = "0.19.3" +version = "0.19.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -728,7 +728,7 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.19.3 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.19.4 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -953,7 +953,7 @@ dependencies = [ "app_units 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 13.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.19.3 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.19.4 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -968,7 +968,7 @@ name = "pathfinder_gfx_utils" version = "0.2.0" source = "git+https://github.com/pcwalton/pathfinder?branch=webrender#e8805413321edf85870deee5678751746ed61316" dependencies = [ - "euclid 0.19.3 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.19.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -981,7 +981,7 @@ dependencies = [ "bit-vec 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.19.3 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.19.4 (registry+https://github.com/rust-lang/crates.io-index)", "half 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "lyon_geom 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1018,7 +1018,7 @@ version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "binary-space-partition 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.19.3 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.19.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1575,7 +1575,7 @@ version = "0.1.0" dependencies = [ "app_units 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.19.3 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.19.4 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", "glutin 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1594,7 +1594,7 @@ dependencies = [ "core-foundation 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)", "dwrote 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.19.3 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.19.4 (registry+https://github.com/rust-lang/crates.io-index)", "ipc-channel 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_bytes 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1674,7 +1674,7 @@ dependencies = [ "crossbeam 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", "dwrote 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.19.3 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.19.4 (registry+https://github.com/rust-lang/crates.io-index)", "font-loader 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", "glutin 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1803,7 +1803,7 @@ dependencies = [ "checksum dwrote 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7b46afd0d0bbbea88fc083ea293e40865e26a75ec9d38cf5d05a23ac3e2ffe02" "checksum either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3be565ca5c557d7f59e7cfcf1844f9e3033650c929c6566f511e8005f205c1d0" "checksum env_logger 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0e6e40ebb0e66918a37b38c7acab4e10d299e0463fe2af5d29b9cc86710cfd2a" -"checksum euclid 0.19.3 (registry+https://github.com/rust-lang/crates.io-index)" = "600657e7e5c03bfbccdc68721bc3b5abcb761553973387124eae9c9e4f02c210" +"checksum euclid 0.19.4 (registry+https://github.com/rust-lang/crates.io-index)" = "dbbf962bb6f877239a34491f2e0a12c6b824f389bc789eb90f1d70d4780b0727" "checksum expat-sys 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c470ccb972f2088549b023db8029ed9da9426f5affbf9b62efff7009ab8ed5b1" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" From 0cb14df3c8b4860f21f586a727865e33ed7e4dbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Fri, 7 Dec 2018 14:40:23 -0500 Subject: [PATCH 2/3] spatial-node: Flatten transforms properly. This fixes Gecko bug 1512537. Fixes #3394 --- examples/animation.rs | 1 + examples/iframe.rs | 1 + webrender/src/clip_scroll_tree.rs | 5 +++- webrender/src/display_list_flattener.rs | 5 ++++ webrender/src/spatial_node.rs | 16 ++++++++++- webrender/src/util.rs | 18 +++++++++++- webrender_api/src/display_item.rs | 1 + webrender_api/src/display_list.rs | 2 ++ .../transforms/nested-rotate-x-flat.yaml | 27 ++++++++++++++++++ .../reftests/transforms/nested-rotate-x.png | Bin 3832 -> 3842 bytes .../reftests/transforms/nested-rotate-x.yaml | 1 + wrench/reftests/transforms/reftest.list | 1 + wrench/src/yaml_frame_reader.rs | 11 ++++++- 13 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 wrench/reftests/transforms/nested-rotate-x-flat.yaml diff --git a/examples/animation.rs b/examples/animation.rs index 5991a40e82..221f39390e 100644 --- a/examples/animation.rs +++ b/examples/animation.rs @@ -48,6 +48,7 @@ impl App { let reference_frame_id = builder.push_reference_frame( &LayoutPrimitiveInfo::new(LayoutRect::new(bounds.origin, LayoutSize::zero())), + TransformStyle::Flat, Some(PropertyBinding::Binding(property_key, LayoutTransform::identity())), None, ); diff --git a/examples/iframe.rs b/examples/iframe.rs index 9c4d5a0f93..1512383931 100644 --- a/examples/iframe.rs +++ b/examples/iframe.rs @@ -63,6 +63,7 @@ impl Example for App { let info = LayoutPrimitiveInfo::new(sub_bounds); let reference_frame_id = builder.push_reference_frame( &info, + TransformStyle::Flat, Some(PropertyBinding::Binding(PropertyBindingKey::new(42), LayoutTransform::identity())), None, ); diff --git a/webrender/src/clip_scroll_tree.rs b/webrender/src/clip_scroll_tree.rs index feb5ce1db9..5e4d9c2527 100644 --- a/webrender/src/clip_scroll_tree.rs +++ b/webrender/src/clip_scroll_tree.rs @@ -4,7 +4,7 @@ use api::{ExternalScrollId, LayoutPoint, LayoutRect, LayoutVector2D}; use api::{PipelineId, ScrollClamping, ScrollNodeState, ScrollLocation}; -use api::{LayoutSize, LayoutTransform, PropertyBinding, ScrollSensitivity, WorldPoint}; +use api::{TransformStyle, LayoutSize, LayoutTransform, PropertyBinding, ScrollSensitivity, WorldPoint}; use gpu_types::TransformPalette; use internal_types::{FastHashMap, FastHashSet}; use print_tree::{PrintTree, PrintTreePrinter}; @@ -343,6 +343,7 @@ impl ClipScrollTree { pub fn add_reference_frame( &mut self, parent_index: Option, + transform_style: TransformStyle, source_transform: Option>, source_perspective: Option, origin_in_parent_reference_frame: LayoutVector2D, @@ -350,6 +351,7 @@ impl ClipScrollTree { ) -> SpatialNodeIndex { let node = SpatialNode::new_reference_frame( parent_index, + transform_style, source_transform, source_perspective, origin_in_parent_reference_frame, @@ -495,6 +497,7 @@ fn add_reference_frame( ) -> SpatialNodeIndex { cst.add_reference_frame( parent, + TransformStyle::Preserve3D, Some(PropertyBinding::Value(transform)), None, origin_in_parent_reference_frame, diff --git a/webrender/src/display_list_flattener.rs b/webrender/src/display_list_flattener.rs index abc442166e..b0f4ddb250 100644 --- a/webrender/src/display_list_flattener.rs +++ b/webrender/src/display_list_flattener.rs @@ -590,6 +590,7 @@ impl<'a> DisplayListFlattener<'a> { Some(clip_and_scroll_ids.scroll_node_id), clip_and_scroll_ids.clip_node_id, pipeline_id, + reference_frame.transform_style, reference_frame.transform, reference_frame.perspective, reference_frame_relative_offset + item.rect().origin.to_vector(), @@ -676,6 +677,7 @@ impl<'a> DisplayListFlattener<'a> { Some(info.clip_id), None, iframe_pipeline_id, + TransformStyle::Flat, None, None, origin, @@ -1568,6 +1570,7 @@ impl<'a> DisplayListFlattener<'a> { parent_scroll_id: Option, parent_clip_id: Option, pipeline_id: PipelineId, + transform_style: TransformStyle, source_transform: Option>, source_perspective: Option, origin_in_parent_reference_frame: LayoutVector2D, @@ -1575,6 +1578,7 @@ impl<'a> DisplayListFlattener<'a> { let parent_index = parent_scroll_id.map(|id| self.id_to_index_mapper.get_spatial_node_index(id)); let index = self.clip_scroll_tree.add_reference_frame( parent_index, + transform_style, source_transform, source_perspective, origin_in_parent_reference_frame, @@ -1606,6 +1610,7 @@ impl<'a> DisplayListFlattener<'a> { None, None, pipeline_id, + TransformStyle::Flat, None, None, LayoutVector2D::zero(), diff --git a/webrender/src/spatial_node.rs b/webrender/src/spatial_node.rs index fa9b7005eb..fe093e5b8a 100644 --- a/webrender/src/spatial_node.rs +++ b/webrender/src/spatial_node.rs @@ -5,7 +5,7 @@ use api::{ExternalScrollId, LayoutPixel, LayoutPoint, LayoutRect, LayoutSize, LayoutTransform}; use api::{LayoutVector2D, PipelineId, PropertyBinding, ScrollClamping, ScrollLocation}; -use api::{ScrollSensitivity, StickyOffsetBounds}; +use api::{TransformStyle, ScrollSensitivity, StickyOffsetBounds}; use clip_scroll_tree::{CoordinateSystem, CoordinateSystemId, SpatialNodeIndex, TransformUpdateState}; use euclid::SideOffsets2D; use gpu_types::TransformPalette; @@ -115,6 +115,7 @@ impl SpatialNode { pub fn new_reference_frame( parent_index: Option, + transform_style: TransformStyle, source_transform: Option>, source_perspective: Option, origin_in_parent_reference_frame: LayoutVector2D, @@ -124,6 +125,7 @@ impl SpatialNode { let source_perspective = source_perspective.map_or_else( LayoutFastTransform::identity, |perspective| perspective.into()); let info = ReferenceFrameInfo { + transform_style, source_transform: source_transform.unwrap_or(PropertyBinding::Value(identity)), source_perspective, origin_in_parent_reference_frame, @@ -256,6 +258,7 @@ impl SpatialNode { SpatialNodeType::ReferenceFrame(ref mut info) => { // Resolve the transform against any property bindings. let source_transform = scene_properties.resolve_layout_transform(&info.source_transform); + // Do a change-basis operation on the perspective matrix using // the scroll offset. let scrolled_perspective = info.source_perspective @@ -274,6 +277,7 @@ impl SpatialNode { .post_translate(state.parent_accumulated_scroll_offset) .to_transform() .with_destination::(); + self.world_viewport_transform = state.parent_reference_frame_transform.pre_mul(&relative_transform.into()); self.world_content_transform = self.world_viewport_transform; @@ -485,6 +489,15 @@ impl SpatialNode { } SpatialNodeType::ReferenceFrame(ref info) => { state.parent_reference_frame_transform = self.world_viewport_transform; + + let should_flatten = + info.transform_style == TransformStyle::Flat && + info.source_perspective.is_identity(); + + if should_flatten { + state.parent_reference_frame_transform = state.parent_reference_frame_transform.project_to_2d(); + } + state.parent_accumulated_scroll_offset = LayoutVector2D::zero(); state.coordinate_system_relative_scale_offset = self.coordinate_system_relative_scale_offset; let translation = -info.origin_in_parent_reference_frame; @@ -644,6 +657,7 @@ pub struct ReferenceFrameInfo { /// here so that we can resolve the animated transform and update the tree each /// frame. pub source_transform: PropertyBinding, + pub transform_style: TransformStyle, pub source_perspective: LayoutFastTransform, /// The original, not including the transform and relative to the parent reference frame, diff --git a/webrender/src/util.rs b/webrender/src/util.rs index 298bc88579..70a59b260f 100644 --- a/webrender/src/util.rs +++ b/webrender/src/util.rs @@ -556,7 +556,7 @@ impl MaxRect for TypedRect { /// An enum that tries to avoid expensive transformation matrix calculations /// when possible when dealing with non-perspective axis-aligned transformations. -#[derive(Debug, Clone, Copy)] +#[derive(Debug)] pub enum FastTransform { /// A simple offset, which can be used without doing any matrix math. Offset(TypedVector2D), @@ -569,6 +569,14 @@ pub enum FastTransform { }, } +impl Clone for FastTransform { + fn clone(&self) -> Self { + *self + } +} + +impl Copy for FastTransform { } + impl FastTransform { pub fn identity() -> Self { FastTransform::Offset(TypedVector2D::zero()) @@ -651,6 +659,14 @@ impl FastTransform { } } + #[inline(always)] + pub fn project_to_2d(&self) -> Self { + match *self { + FastTransform::Offset(..) => self.clone(), + FastTransform::Transform { ref transform, .. } => FastTransform::with_transform(transform.project_to_2d()), + } + } + #[inline(always)] pub fn is_backface_visible(&self) -> bool { match *self { diff --git a/webrender_api/src/display_item.rs b/webrender_api/src/display_item.rs index 494f832e64..6c7c118111 100644 --- a/webrender_api/src/display_item.rs +++ b/webrender_api/src/display_item.rs @@ -529,6 +529,7 @@ pub struct CacheMarkerDisplayItem { #[derive(Clone, Copy, Debug, Deserialize, PartialEq, Serialize)] pub struct ReferenceFrame { + pub transform_style: TransformStyle, pub transform: Option>, pub perspective: Option, pub id: ClipId, diff --git a/webrender_api/src/display_list.rs b/webrender_api/src/display_list.rs index f79db2d82b..759d519599 100644 --- a/webrender_api/src/display_list.rs +++ b/webrender_api/src/display_list.rs @@ -1250,12 +1250,14 @@ impl DisplayListBuilder { pub fn push_reference_frame( &mut self, info: &LayoutPrimitiveInfo, + transform_style: TransformStyle, transform: Option>, perspective: Option, ) -> ClipId { let id = self.generate_spatial_index(); let item = SpecificDisplayItem::PushReferenceFrame(PushReferenceFrameDisplayListItem { reference_frame: ReferenceFrame { + transform_style, transform, perspective, id, diff --git a/wrench/reftests/transforms/nested-rotate-x-flat.yaml b/wrench/reftests/transforms/nested-rotate-x-flat.yaml new file mode 100644 index 0000000000..ed25c8f09d --- /dev/null +++ b/wrench/reftests/transforms/nested-rotate-x-flat.yaml @@ -0,0 +1,27 @@ +# This is the same as nested-rotate-x.yaml but without the preserve-3d. +--- +root: + items: + - + bounds: [260, 260, 231, 231] + "clip-rect": [260, 260, 231, 231] + type: border + width: 3 + "border-type": normal + color: 0 0 255 1.0000 + style: dashed + - + bounds: [300, 300, 0, 0] + "clip-rect": [300, 300, 0, 0] + type: "stacking-context" + transform: [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 75, -75, 1] + items: + - + type: "stacking-context" + transform: [1, 0, 0, 0, 0, 0.8660254, -0.5, 0, 0, 0.5, 0.8660254, 0, 0, 10.048096, 37.5, 1] + items: + - + bounds: [0, 0, 150, 150] + "clip-rect": [0, 0, 150, 150] + type: rect + color: 255 255 0 0.4000 diff --git a/wrench/reftests/transforms/nested-rotate-x.png b/wrench/reftests/transforms/nested-rotate-x.png index dba46d8899047ff1a09ca3b7ab8cd17ded292138..df1e3e58cf74fb5c0d4a1619fcf775cf23aa4879 100644 GIT binary patch delta 1098 zcmXxjdrVqa90zdF$`!OSV~eh>-p!fn5*=iJsEG<$)1{*iHdl>pt=h$PF5<*xtg)48gk&Y}3g$2uiy*XXLq5b!~)brS&fHJ7d~$Nm?|gsf zxFV~f?!;t`b5FjPA*{0)$EBHEhGr=)vlhwp3yb(c{V7W_a^SUJk>KMj;nW+iCbzFL zUq4HdAeDV@J(_!S=JC#*;`*P<0I|b87I22K>Z!ilw>ydTQAnPdt{O7KzpH~BLB@t{ zlT2}ueeFCS^Gu^Db({tL2i}QjsUHEIsk*mbG&2h5M01O_S>aXZ+FQK>IMJnb~%_=lYc(*$DL zCB&@3buQaOV4|G>yg+)`-%QbLSovoc3T&-A={Ctj_q-8Y59A`bLmT<#r}x2V;AupW zXU#W{+yV^hC1n3pP)1D&C3#{Fpd`OQHY*h~X~w<|+RI~mjhzTPv!6$-%Xg%lsAVo% zv(&OGdhn1}s~MYX7n4Ni_vQ-(^S7&&-WI^3BmoaX3tIBx>_lGO%m4FKmG{b|u^+z5 z^Pm?O7a3I3{{;lde$j`AZToE@ub+b*W3w`_i7+rsVFF9g;e%VNxK3#Qk$y$cvXc%Z zIC|J4Pd zGhZ%tO`)6;kC2aYoEk=ZuCnx#7iY2c67Nku9fi_UtSnvSVe2-}4SqNiLNib4d~pu0 z_(-vU2`uwHzIzEKHQ)04x3HSc6>S6CB1_mX@-1Uh2zIkpkqhBjJ#H8Dr?|*!4zUhO bLarT(IrT+b)&1~`BsjS5^G+>&emOIEzqK delta 1133 zcmY+CdrVVT9LI~qUS0)Fkcnb%ge5Rs7~3+aL0VB4hlzIBvT7^q7|GCGUVF8L(pDJ3 zID;2=vaxKAO58>mLV2|1QD{M(&BCPHDs6*M%Gg9oON&Aal-uq=Aj@uY{%Q>Il z`TnY@D+lUd%++O|$YP6bIw$8^zB(VHpUz|FlE0|6?W#T=5_vFbJeF2ttIs;LZ}XQ{ zbL%2GdD3@xu5Rg{xal_4{6LT25S*e$i4IfL^fT*}-}nZ}hMw+zHAoZ;%7WCg2pwV4 z$MCgEf#aOaQMUL#rr>+^G0aA#z{!<4-0pm=rxXHCyVB!055Zyq*35)J7qE`^lxhNl z$Y^7+lkoX1fBkaJl#*x14=h-Voqhs>2X!WDCInV(v2%SDg8NrZbcr43)5^P42Dz`` zT48!AH$&LY5cHOJtMoV|8A7f`s9*?0t6i#*1_)j+ZsdfW@@cP5f&N&OKWe2|aC0-O>a z`8gW5Cg&5Esi~Z0df1Jo_>k1Nb+sn2ItF6NXDLgU(EaB2qc`;LC2 z5&A5>LIpmyyYho`h3-~wj=QR9jnxRAhGrurR!70iAGZN5>=a_vItykd`oPsNE^@fM z3$J6!fjuk(P{Wb!wWp@V-^IxsF0B2GtlL!iSvQ#nszb67=VN->==byB&yZ8dlZW&) z7#&Cmj&x z6d$oyD}}O_&W&pTm7F4z(o+Mjkp_Oi_WN+Dw}R+rs723yP+{h^f-6^|cp8a@q3-?o zM^&K#0vzRKNMOYZ;WcR`j|o?1nWqSIO~K)N6+{ShDrIzk)W2e*)zVlpDwM`#vE$?>+pkEmI1~M4xedPz=FHLtCB}f}4kp z;~F6ZS$+QXZWYQ{%OJp^+3?f yaml["perspective"].as_matrix4d(), }; - let reference_frame_id = dl.push_reference_frame(info, transform.into(), perspective); + let reference_frame_id = dl.push_reference_frame( + info, + transform_style, + transform.into(), + perspective, + ); let numeric_id = yaml["id"].as_i64(); if let Some(numeric_id) = numeric_id { From e7511006e6d9ac059521fd45162f063963010d5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Wed, 12 Dec 2018 17:18:36 +0100 Subject: [PATCH 3/3] Add an extra reftest for this. --- .../reftests/transforms/nested-rotate-x-flat.png | Bin 0 -> 4593 bytes wrench/reftests/transforms/reftest.list | 1 + 2 files changed, 1 insertion(+) create mode 100644 wrench/reftests/transforms/nested-rotate-x-flat.png diff --git a/wrench/reftests/transforms/nested-rotate-x-flat.png b/wrench/reftests/transforms/nested-rotate-x-flat.png new file mode 100644 index 0000000000000000000000000000000000000000..2134a8ff77d885f7d7cb0edea81f137051ff54b6 GIT binary patch literal 4593 zcmeAS@N?(olHy`uVBq!ia0y~yU@8LQ*&J*@k;2sU`wR?%J3L(+Ln`LHy?Z-XEeBLtnw<>}DN4vR9aNNfD8R#a@BxruWRYaBTCVf;=BB>ov#Sz!)n%@2 zU;F4H|L*VR$_4+w&R@sKAmDz2k)cHhXw$+L83qRpMRo=OuTi1VkQhx9qgi1{77A1L z|9h3(nSVcOcj03Du!=uBw(`sWO77gAAAS4QtA5dM-=nKPF0!9i@oUT0#f$$%Jp8j~ z>+bU3$({TE=e<4Nf7Skd>+kQ;zrU;mD*3-}Yj5wrh{W>kTf^4_&3Jx3+S=kpzo?&o zboGx7_S1HhuHLF2|Ld`N-u=9{udn}$c=Y)AH8~rgif!AYt3NLT8u4?}*1dayw*1(! zRox$GMD_P5YwOqjqI!DQzrJ4k_t(|`8;(3bzxM9V%ktVedE36di>=rB_^UMA+WPOt zLk|_CLPo41CU#Q4or;M4MWWwGz%E~P=0Wy3u+G|r%Q|#H`t%HGjbxf5_tOYv7MNo-!F!1$H2OdhBFAZ4v^%y)Z)$kt&11K%p@*HI9S@hPkwlgx-NNoYpb1D-M=@?5z>$_ zIz69l`u}`}5AQdFd`qOuc7noa^JbWT9CrS>{kYcXK-Epu2p~DYjvuep$;tV`xTY7J zz8E-EpD-{uaauAo1UT_AC`_5aj78|wyF7XB>grmC>|{vfXg9(VBfivu*Kw!5mC19n zv%}0J>=Oy+HX5b8lD-^H;^tEr_fJQui zd~Kf1%YM~&ceCHVSz{lzV@J&O_1nL_4*!2xXukdSvgdyFYc}k>d24q$uz~RU`r5Z| zz8vRjZ(nO$eNEomrs~SAlb-c!3O@2n=iPhLuc}uU_d^|6>90QIb|O~w$vUB;a8ApA zD!{5YG*KDC1-2|?>L+0>xUm#jqe6Hpy3xQH$$@jFp0V-kl+V7JrN4kfISihzelF{r G5}E*dZONek literal 0 HcmV?d00001 diff --git a/wrench/reftests/transforms/reftest.list b/wrench/reftests/transforms/reftest.list index 00f7dfcdc9..5d488347c5 100644 --- a/wrench/reftests/transforms/reftest.list +++ b/wrench/reftests/transforms/reftest.list @@ -18,6 +18,7 @@ platform(linux,mac) fuzzy(1,331) color_targets(1) alpha_targets(0) == screen-spa platform(linux) fuzzy(11,4592) == screen-space-blur.yaml screen-space-blur.png platform(linux,mac) == nested-rotate-x.yaml nested-rotate-x.png platform(linux,mac) != nested-rotate-x.yaml nested-rotate-x-flat.yaml +platform(linux,mac) == nested-rotate-x-flat.yaml nested-rotate-x-flat.png platform(linux,mac) == nested-preserve-3d.yaml nested-preserve-3d.png platform(linux,mac) fuzzy(1,283) == near-plane-clip.yaml near-plane-clip.png platform(linux,mac) == perspective-mask.yaml perspective-mask.png