summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Romain Guy <romainguy@google.com> 2011-03-15 23:50:43 -0700
committer Android Git Automerger <android-git-automerger@android.com> 2011-03-15 23:50:43 -0700
commit89cc2b6422ce28bf3de1ac79b1daa0147b0eca88 (patch)
tree229a7902f5499ffe2132d4bc185a414693a77a90
parentf97e147e510afa25b4d933d8bfa1044f4996f128 (diff)
parentf8c4c12802b15da068d164fd44c9b9f12e7ed916 (diff)
am f8c4c128: am 0f7d2ec3: am 46fc2517: Merge "Fix performance issue in Launcher Bug #3515248" into honeycomb-mr1
* commit 'f8c4c12802b15da068d164fd44c9b9f12e7ed916': Fix performance issue in Launcher Bug #3515248
-rw-r--r--libs/hwui/LayerRenderer.cpp4
-rw-r--r--libs/hwui/OpenGLRenderer.cpp6
-rw-r--r--libs/hwui/Properties.h2
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.