diff options
| author | 2011-03-15 23:44:30 -0700 | |
|---|---|---|
| committer | 2011-03-15 23:44:30 -0700 | |
| commit | 0f7d2ec37fc514c08dde977d55489af16355efa0 (patch) | |
| tree | 80421805cc67acbd2edb1b736d68c2b82220695c | |
| parent | 6ad9cc9afd1229db0ee68a889979feffbbcba557 (diff) | |
| parent | 46fc25171af8bbaf4594946ce406a667ce2ec27a (diff) | |
am 46fc2517: Merge "Fix performance issue in Launcher Bug #3515248" into honeycomb-mr1
* commit '46fc25171af8bbaf4594946ce406a667ce2ec27a':
Fix performance issue in Launcher Bug #3515248
| -rw-r--r-- | libs/hwui/LayerRenderer.cpp | 4 | ||||
| -rw-r--r-- | libs/hwui/OpenGLRenderer.cpp | 6 | ||||
| -rw-r--r-- | libs/hwui/Properties.h | 2 |
3 files changed, 12 insertions, 0 deletions
diff --git a/libs/hwui/LayerRenderer.cpp b/libs/hwui/LayerRenderer.cpp index b1eb164a9631..f92e20b841f9 100644 --- a/libs/hwui/LayerRenderer.cpp +++ b/libs/hwui/LayerRenderer.cpp @@ -92,7 +92,11 @@ Region* LayerRenderer::getRegion() { void LayerRenderer::generateMesh() { #if RENDER_LAYERS_AS_REGIONS +#if RENDER_LAYERS_RECT_AS_RECT if (mLayer->region.isRect() || mLayer->region.isEmpty()) { +#else + if (mLayer->region.isEmpty()) { +#endif if (mLayer->mesh) { delete mLayer->mesh; delete mLayer->meshIndices; diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index b8bd7d6758d2..e01e072ee5e3 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -636,11 +636,13 @@ void OpenGLRenderer::composeLayerRect(Layer* layer, const Rect& rect, bool swap) void OpenGLRenderer::composeLayerRegion(Layer* layer, const Rect& rect) { #if RENDER_LAYERS_AS_REGIONS +#if RENDER_LAYERS_RECT_AS_RECT if (layer->region.isRect()) { composeLayerRect(layer, rect); layer->region.clear(); return; } +#endif if (!layer->region.isEmpty()) { size_t count; @@ -1646,10 +1648,14 @@ void OpenGLRenderer::drawLayer(Layer* layer, float x, float y, SkPaint* paint) { #if RENDER_LAYERS_AS_REGIONS if (!layer->region.isEmpty()) { +#if RENDER_LAYERS_RECT_AS_RECT if (layer->region.isRect()) { const Rect r(x, y, x + layer->layer.getWidth(), y + layer->layer.getHeight()); composeLayerRect(layer, r); } else if (layer->mesh) { +#else + if (layer->mesh) { +#endif const float a = alpha / 255.0f; const Rect& rect = layer->layer; diff --git a/libs/hwui/Properties.h b/libs/hwui/Properties.h index 2d8b6f3950f6..1aef99b53f68 100644 --- a/libs/hwui/Properties.h +++ b/libs/hwui/Properties.h @@ -27,6 +27,8 @@ // If turned on, layers drawn inside FBOs are optimized with regions #define RENDER_LAYERS_AS_REGIONS 1 +// If turned on, layers that map to a single rect are drawn as a rect +#define RENDER_LAYERS_RECT_AS_RECT 0 /** * Debug level for app developers. |