From 537b99244797175981a0bf91f5f64bfd9119fd79 Mon Sep 17 00:00:00 2001 From: Chris Lord <chrislord.net@gmail.com> Date: Mon, 31 Mar 2014 17:42:32 +0100 Subject: [PATCH] Bug 988370 - Don't use progressive/low precision rendering on fixed layers. r=mattwoodrow Fixed layers don't async scroll, so it doesn't make sense for them to have a low precision region or for them to be rendered progressively. --- gfx/layers/client/ClientTiledThebesLayer.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gfx/layers/client/ClientTiledThebesLayer.cpp b/gfx/layers/client/ClientTiledThebesLayer.cpp index d46dc0be1432a..2c0fddadfc106 100644 --- a/gfx/layers/client/ClientTiledThebesLayer.cpp +++ b/gfx/layers/client/ClientTiledThebesLayer.cpp @@ -216,13 +216,17 @@ ClientTiledThebesLayer::RenderLayer() ToClientLayer(GetMaskLayer())->RenderLayer(); } + bool isFixed = GetIsFixedPosition() || GetParent()->GetIsFixedPosition(); + // Fast path for no progressive updates, no low-precision updates and no - // critical display-port set, or no display-port set. + // critical display-port set, or no display-port set, or this is a fixed + // position layer/contained in a fixed position layer const FrameMetrics& parentMetrics = GetParent()->GetFrameMetrics(); if ((!gfxPrefs::UseProgressiveTilePainting() && !gfxPrefs::UseLowPrecisionBuffer() && parentMetrics.mCriticalDisplayPort.IsEmpty()) || - parentMetrics.mDisplayPort.IsEmpty()) { + parentMetrics.mDisplayPort.IsEmpty() || + isFixed) { mValidRegion = mVisibleRegion; NS_ASSERTION(!ClientManager()->IsRepeatTransaction(), "Didn't paint our mask layer"); -- GitLab