From 5b19e14034bc492716a44d02266ceb279c7b3183 Mon Sep 17 00:00:00 2001 From: Oleg Romashin Date: Mon, 14 Jan 2013 20:21:02 -0800 Subject: [PATCH] Bug 824428 - Add Environment option which would allow to use Tiled Thebes Layers. r=bgirard --- gfx/layers/Layers.cpp | 7 +++++++ gfx/layers/Layers.h | 2 ++ gfx/layers/TiledLayerBuffer.h | 5 ----- gfx/layers/basic/BasicLayerManager.cpp | 5 ++--- gfx/layers/opengl/LayerManagerOGL.cpp | 6 ++---- gfx/layers/opengl/ThebesLayerOGL.cpp | 5 ++--- mobile/android/app/mobile.js | 3 +++ 7 files changed, 18 insertions(+), 15 deletions(-) diff --git a/gfx/layers/Layers.cpp b/gfx/layers/Layers.cpp index f138f10c1b5..e93a9d4c93e 100644 --- a/gfx/layers/Layers.cpp +++ b/gfx/layers/Layers.cpp @@ -260,6 +260,13 @@ LayerManager::GetScrollableLayers(nsTArray& aArray) } } +bool ThebesLayer::UseTiledThebes() +{ + static bool useTiledThebesLayer = + Preferences::GetBool("gfx.use_tiled_thebes", false); + return useTiledThebesLayer; +} + already_AddRefed LayerManager::CreateOptimalSurface(const gfxIntSize &aSize, gfxASurface::gfxImageFormat aFormat) diff --git a/gfx/layers/Layers.h b/gfx/layers/Layers.h index e8e34f0ee0e..03ab79580ef 100644 --- a/gfx/layers/Layers.h +++ b/gfx/layers/Layers.h @@ -1248,6 +1248,8 @@ public: */ gfxPoint GetResidualTranslation() const { return mResidualTranslation; } + static bool UseTiledThebes(); + protected: ThebesLayer(LayerManager* aManager, void* aImplData) : Layer(aManager, aImplData) diff --git a/gfx/layers/TiledLayerBuffer.h b/gfx/layers/TiledLayerBuffer.h index 70f9f3c559e..0c9001a91a1 100644 --- a/gfx/layers/TiledLayerBuffer.h +++ b/gfx/layers/TiledLayerBuffer.h @@ -8,11 +8,6 @@ #define TILEDLAYERBUFFER_TILE_SIZE 256 // Debug defines -#ifdef MOZ_ANDROID_OMTC - // This needs to go away as we enabled tiled - // layers everywhere. - #define FORCE_BASICTILEDTHEBESLAYER -#endif //#define GFX_TILEDLAYER_DEBUG_OVERLAY //#define GFX_TILEDLAYER_PREF_WARNINGS diff --git a/gfx/layers/basic/BasicLayerManager.cpp b/gfx/layers/basic/BasicLayerManager.cpp index a984708371c..6ec2d76c51e 100644 --- a/gfx/layers/basic/BasicLayerManager.cpp +++ b/gfx/layers/basic/BasicLayerManager.cpp @@ -1341,8 +1341,8 @@ already_AddRefed BasicShadowLayerManager::CreateThebesLayer() { NS_ASSERTION(InConstruction(), "Only allowed in construction phase"); -#ifdef FORCE_BASICTILEDTHEBESLAYER - if (HasShadowManager() && GetParentBackendType() == LAYERS_OPENGL) { + if (HasShadowManager() && GetParentBackendType() == LAYERS_OPENGL && + ThebesLayer::UseTiledThebes()) { // BasicTiledThebesLayer doesn't support main // thread compositing so only return this layer // type if we have a shadow manager. @@ -1351,7 +1351,6 @@ BasicShadowLayerManager::CreateThebesLayer() MAYBE_CREATE_SHADOW(Thebes); return layer.forget(); } else -#endif { nsRefPtr layer = new BasicShadowableThebesLayer(this); diff --git a/gfx/layers/opengl/LayerManagerOGL.cpp b/gfx/layers/opengl/LayerManagerOGL.cpp index 2f1463b262f..beaf6d5f7a9 100644 --- a/gfx/layers/opengl/LayerManagerOGL.cpp +++ b/gfx/layers/opengl/LayerManagerOGL.cpp @@ -1553,11 +1553,9 @@ LayerManagerOGL::CreateShadowThebesLayer() NS_WARNING("Call on destroyed layer manager"); return nullptr; } -#ifdef FORCE_BASICTILEDTHEBESLAYER - return nsRefPtr(new TiledThebesLayerOGL(this)).forget(); -#else + if (ThebesLayer::UseTiledThebes()) + return nsRefPtr(new TiledThebesLayerOGL(this)).forget(); return nsRefPtr(new ShadowThebesLayerOGL(this)).forget(); -#endif } already_AddRefed diff --git a/gfx/layers/opengl/ThebesLayerOGL.cpp b/gfx/layers/opengl/ThebesLayerOGL.cpp index 432ada089aa..ee339f9084a 100644 --- a/gfx/layers/opengl/ThebesLayerOGL.cpp +++ b/gfx/layers/opengl/ThebesLayerOGL.cpp @@ -1027,9 +1027,8 @@ ShadowThebesLayerOGL::ShadowThebesLayerOGL(LayerManagerOGL *aManager) : ShadowThebesLayer(aManager, nullptr) , LayerOGL(aManager) { -#ifdef FORCE_BASICTILEDTHEBESLAYER - NS_ABORT(); -#endif + if (ThebesLayer::UseTiledThebes()) + NS_ABORT(); mImplData = static_cast(this); } diff --git a/mobile/android/app/mobile.js b/mobile/android/app/mobile.js index 8d4fe1876f4..93b80fffeca 100644 --- a/mobile/android/app/mobile.js +++ b/mobile/android/app/mobile.js @@ -671,3 +671,6 @@ pref("app.orientation.default", ""); // On memory pressure, release dirty but unused pages held by jemalloc // back to the system. pref("memory.free_dirty_pages", true); + +// Enable tiled layers rendering by default on android +pref("gfx.use_tiled_thebes", true);