Bug 1355791 - Instead of pushing a scroll layer, put the clip mask into the existing item clip. r=jrmuizel

MozReview-Commit-ID: jdKEkamSs4
This commit is contained in:
Kartikaya Gupta 2017-04-12 11:08:39 -04:00
Родитель 2807504086
Коммит 94b7025994
4 изменённых файлов: 8 добавлений и 31 удалений

Просмотреть файл

@ -63,13 +63,11 @@ WebRenderCanvasLayer::RenderLayer(wr::DisplayListBuilder& aBuilder)
} }
gfx::Rect relBounds = GetWrRelBounds(); gfx::Rect relBounds = GetWrRelBounds();
gfx::Rect overflow(0, 0, relBounds.width, relBounds.height);
gfx::Rect rect = RelativeToVisible(gfx::Rect(0, 0, mBounds.width, mBounds.height)); gfx::Rect rect = RelativeToVisible(gfx::Rect(0, 0, mBounds.width, mBounds.height));
gfx::Rect clipRect = GetWrClipRect(rect);
gfx::Rect clipRect = GetWrClipRect(rect);
Maybe<WrImageMask> mask = BuildWrMaskLayer(); Maybe<WrImageMask> mask = BuildWrMaskLayer();
WrClipRegion clip = aBuilder.BuildClipRegion(wr::ToWrRect(clipRect)); WrClipRegion clip = aBuilder.BuildClipRegion(wr::ToWrRect(clipRect), mask.ptrOr(nullptr));
wr::ImageRendering filter = wr::ToImageRendering(mSamplingFilter); wr::ImageRendering filter = wr::ToImageRendering(mSamplingFilter);
wr::MixBlendMode mixBlendMode = wr::ToWrMixBlendMode(GetMixBlendMode()); wr::MixBlendMode mixBlendMode = wr::ToWrMixBlendMode(GetMixBlendMode());
@ -91,11 +89,7 @@ WebRenderCanvasLayer::RenderLayer(wr::DisplayListBuilder& aBuilder)
//GetAnimations(), //GetAnimations(),
transform, transform,
mixBlendMode); mixBlendMode);
aBuilder.PushScrollLayer(wr::ToWrRect(overflow),
wr::ToWrRect(overflow),
mask.ptrOr(nullptr));
aBuilder.PushImage(wr::ToWrRect(rect), clip, filter, key); aBuilder.PushImage(wr::ToWrRect(rect), clip, filter, key);
aBuilder.PopScrollLayer();
aBuilder.PopStackingContext(); aBuilder.PopStackingContext();
} }

Просмотреть файл

@ -21,13 +21,11 @@ WebRenderColorLayer::RenderLayer(wr::DisplayListBuilder& aBuilder)
{ {
gfx::Matrix4x4 transform = GetTransform(); gfx::Matrix4x4 transform = GetTransform();
gfx::Rect relBounds = GetWrRelBounds(); gfx::Rect relBounds = GetWrRelBounds();
gfx::Rect overflow(0, 0, relBounds.width, relBounds.height);
gfx::Rect rect = GetWrBoundsRect(); gfx::Rect rect = GetWrBoundsRect();
gfx::Rect clipRect = GetWrClipRect(rect);
gfx::Rect clipRect = GetWrClipRect(rect);
Maybe<WrImageMask> mask = BuildWrMaskLayer(); Maybe<WrImageMask> mask = BuildWrMaskLayer();
WrClipRegion clip = aBuilder.BuildClipRegion(wr::ToWrRect(clipRect)); WrClipRegion clip = aBuilder.BuildClipRegion(wr::ToWrRect(clipRect), mask.ptrOr(nullptr));
wr::MixBlendMode mixBlendMode = wr::ToWrMixBlendMode(GetMixBlendMode()); wr::MixBlendMode mixBlendMode = wr::ToWrMixBlendMode(GetMixBlendMode());
@ -38,11 +36,7 @@ WebRenderColorLayer::RenderLayer(wr::DisplayListBuilder& aBuilder)
//GetAnimations(), //GetAnimations(),
transform, transform,
mixBlendMode); mixBlendMode);
aBuilder.PushScrollLayer(wr::ToWrRect(overflow),
wr::ToWrRect(overflow),
mask.ptrOr(nullptr));
aBuilder.PushRect(wr::ToWrRect(rect), clip, wr::ToWrColor(mColor)); aBuilder.PushRect(wr::ToWrRect(rect), clip, wr::ToWrColor(mColor));
aBuilder.PopScrollLayer();
aBuilder.PopStackingContext(); aBuilder.PopStackingContext();
} }

Просмотреть файл

@ -129,7 +129,6 @@ WebRenderImageLayer::RenderLayer(wr::DisplayListBuilder& aBuilder)
gfx::Matrix4x4 transform = GetTransform(); gfx::Matrix4x4 transform = GetTransform();
gfx::Rect relBounds = GetWrRelBounds(); gfx::Rect relBounds = GetWrRelBounds();
gfx::Rect overflow(0, 0, relBounds.width, relBounds.height);
gfx::Rect rect = gfx::Rect(0, 0, size.width, size.height); gfx::Rect rect = gfx::Rect(0, 0, size.width, size.height);
if (mScaleMode != ScaleMode::SCALE_NONE) { if (mScaleMode != ScaleMode::SCALE_NONE) {
@ -138,10 +137,10 @@ WebRenderImageLayer::RenderLayer(wr::DisplayListBuilder& aBuilder)
rect = gfx::Rect(0, 0, mScaleToSize.width, mScaleToSize.height); rect = gfx::Rect(0, 0, mScaleToSize.width, mScaleToSize.height);
} }
rect = RelativeToVisible(rect); rect = RelativeToVisible(rect);
gfx::Rect clipRect = GetWrClipRect(rect);
gfx::Rect clipRect = GetWrClipRect(rect);
Maybe<WrImageMask> mask = BuildWrMaskLayer(); Maybe<WrImageMask> mask = BuildWrMaskLayer();
WrClipRegion clip = aBuilder.BuildClipRegion(wr::ToWrRect(clipRect)); WrClipRegion clip = aBuilder.BuildClipRegion(wr::ToWrRect(clipRect), mask.ptrOr(nullptr));
wr::ImageRendering filter = wr::ToImageRendering(mSamplingFilter); wr::ImageRendering filter = wr::ToImageRendering(mSamplingFilter);
wr::MixBlendMode mixBlendMode = wr::ToWrMixBlendMode(GetMixBlendMode()); wr::MixBlendMode mixBlendMode = wr::ToWrMixBlendMode(GetMixBlendMode());
@ -163,11 +162,7 @@ WebRenderImageLayer::RenderLayer(wr::DisplayListBuilder& aBuilder)
//GetAnimations(), //GetAnimations(),
transform, transform,
mixBlendMode); mixBlendMode);
aBuilder.PushScrollLayer(wr::ToWrRect(overflow),
wr::ToWrRect(overflow),
mask.ptrOr(nullptr));
aBuilder.PushImage(wr::ToWrRect(rect), clip, filter, key); aBuilder.PushImage(wr::ToWrRect(rect), clip, filter, key);
aBuilder.PopScrollLayer();
aBuilder.PopStackingContext(); aBuilder.PopStackingContext();
} }

Просмотреть файл

@ -186,13 +186,11 @@ WebRenderPaintedLayer::RenderLayer(wr::DisplayListBuilder& aBuilder)
gfx::Matrix4x4 transform = GetTransform(); gfx::Matrix4x4 transform = GetTransform();
gfx::Rect relBounds = GetWrRelBounds(); gfx::Rect relBounds = GetWrRelBounds();
gfx::Rect overflow(0, 0, relBounds.width, relBounds.height);
gfx::Rect rect(0, 0, size.width, size.height); gfx::Rect rect(0, 0, size.width, size.height);
gfx::Rect clipRect = GetWrClipRect(rect);
gfx::Rect clipRect = GetWrClipRect(rect);
Maybe<WrImageMask> mask = BuildWrMaskLayer(); Maybe<WrImageMask> mask = BuildWrMaskLayer();
WrClipRegion clip = aBuilder.BuildClipRegion(wr::ToWrRect(clipRect)); WrClipRegion clip = aBuilder.BuildClipRegion(wr::ToWrRect(clipRect), mask.ptrOr(nullptr));
wr::MixBlendMode mixBlendMode = wr::ToWrMixBlendMode(GetMixBlendMode()); wr::MixBlendMode mixBlendMode = wr::ToWrMixBlendMode(GetMixBlendMode());
@ -208,11 +206,7 @@ WebRenderPaintedLayer::RenderLayer(wr::DisplayListBuilder& aBuilder)
//GetAnimations(), //GetAnimations(),
transform, transform,
mixBlendMode); mixBlendMode);
aBuilder.PushScrollLayer(wr::ToWrRect(overflow),
wr::ToWrRect(overflow),
mask.ptrOr(nullptr));
aBuilder.PushImage(wr::ToWrRect(rect), clip, wr::ImageRendering::Auto, key); aBuilder.PushImage(wr::ToWrRect(rect), clip, wr::ImageRendering::Auto, key);
aBuilder.PopScrollLayer();
aBuilder.PopStackingContext(); aBuilder.PopStackingContext();
} }