Merge "Fix performance issue in Launcher Bug #3515248" into honeycomb-mr1
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user