Allocate layers from the layers pool.
Bug #3413433

This change will be beneficial to Launcher to avoid hiccups when
swiping pages of icons. When a layer is discarded, it is kept
in the layers pool instead of being destroyed right away. This
favors memory reuse over allocations.

Change-Id: Ifb6944ba83d6ceb67c331527c0827b26ce648eb1
diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp
index bffab95..ebf7aa0 100644
--- a/libs/hwui/Caches.cpp
+++ b/libs/hwui/Caches.cpp
@@ -20,6 +20,7 @@
 
 #include "Caches.h"
 #include "Properties.h"
+#include "LayerRenderer.h"
 
 namespace android {
 
@@ -116,12 +117,7 @@
     size_t count = mLayerGarbage.size();
     for (size_t i = 0; i < count; i++) {
         Layer* layer = mLayerGarbage.itemAt(i);
-        if (layer) {
-            if (layer->fbo) glDeleteFramebuffers(1, &layer->fbo);
-            if (layer->texture) glDeleteTextures(1, &layer->texture);
-
-            delete layer;
-        }
+        LayerRenderer::destroyLayer(layer);
     }
     mLayerGarbage.clear();
 }