Merge "Fix performance issue in Launcher Bug #3515248" into honeycomb-mr1

This commit is contained in:
Romain Guy
2011-03-15 18:23:48 -07:00
committed by Android (Google) Code Review
3 changed files with 12 additions and 0 deletions

View File

@@ -92,7 +92,11 @@ Region* LayerRenderer::getRegion() {
void LayerRenderer::generateMesh() { void LayerRenderer::generateMesh() {
#if RENDER_LAYERS_AS_REGIONS #if RENDER_LAYERS_AS_REGIONS
#if RENDER_LAYERS_RECT_AS_RECT
if (mLayer->region.isRect() || mLayer->region.isEmpty()) { if (mLayer->region.isRect() || mLayer->region.isEmpty()) {
#else
if (mLayer->region.isEmpty()) {
#endif
if (mLayer->mesh) { if (mLayer->mesh) {
delete mLayer->mesh; delete mLayer->mesh;
delete mLayer->meshIndices; delete mLayer->meshIndices;

View File

@@ -636,11 +636,13 @@ void OpenGLRenderer::composeLayerRect(Layer* layer, const Rect& rect, bool swap)
void OpenGLRenderer::composeLayerRegion(Layer* layer, const Rect& rect) { void OpenGLRenderer::composeLayerRegion(Layer* layer, const Rect& rect) {
#if RENDER_LAYERS_AS_REGIONS #if RENDER_LAYERS_AS_REGIONS
#if RENDER_LAYERS_RECT_AS_RECT
if (layer->region.isRect()) { if (layer->region.isRect()) {
composeLayerRect(layer, rect); composeLayerRect(layer, rect);
layer->region.clear(); layer->region.clear();
return; return;
} }
#endif
if (!layer->region.isEmpty()) { if (!layer->region.isEmpty()) {
size_t count; size_t count;
@@ -1646,10 +1648,14 @@ void OpenGLRenderer::drawLayer(Layer* layer, float x, float y, SkPaint* paint) {
#if RENDER_LAYERS_AS_REGIONS #if RENDER_LAYERS_AS_REGIONS
if (!layer->region.isEmpty()) { if (!layer->region.isEmpty()) {
#if RENDER_LAYERS_RECT_AS_RECT
if (layer->region.isRect()) { if (layer->region.isRect()) {
const Rect r(x, y, x + layer->layer.getWidth(), y + layer->layer.getHeight()); const Rect r(x, y, x + layer->layer.getWidth(), y + layer->layer.getHeight());
composeLayerRect(layer, r); composeLayerRect(layer, r);
} else if (layer->mesh) { } else if (layer->mesh) {
#else
if (layer->mesh) {
#endif
const float a = alpha / 255.0f; const float a = alpha / 255.0f;
const Rect& rect = layer->layer; const Rect& rect = layer->layer;

View File

@@ -27,6 +27,8 @@
// If turned on, layers drawn inside FBOs are optimized with regions // If turned on, layers drawn inside FBOs are optimized with regions
#define RENDER_LAYERS_AS_REGIONS 1 #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. * Debug level for app developers.