Add a render buffer cache to reuse stencil buffers
Bug #7146141
This new cache is used in a similar way to LayerCache. It helps
reuse already allocated stencil buffers and thus avoid churning
memory on every frame.
Change-Id: I19551d72da52c40039e65904563600e492c8b193
diff --git a/libs/hwui/LayerCache.h b/libs/hwui/LayerCache.h
index 7720b42..221bfe0 100644
--- a/libs/hwui/LayerCache.h
+++ b/libs/hwui/LayerCache.h
@@ -19,7 +19,6 @@
#include "Debug.h"
#include "Layer.h"
-#include "Properties.h"
#include "utils/SortedList.h"
namespace android {
@@ -54,7 +53,7 @@
* size of the cache goes down.
*
* @param width The desired width of the layer
- * @param width The desired height of the layer
+ * @param height The desired height of the layer
*/
Layer* get(const uint32_t width, const uint32_t height);
@@ -91,6 +90,7 @@
*/
void dump();
+private:
struct LayerEntry {
LayerEntry():
mLayer(NULL), mWidth(0), mHeight(0) {
@@ -115,12 +115,19 @@
return compare(*this, other) != 0;
}
+ friend inline int strictly_order_type(const LayerEntry& lhs, const LayerEntry& rhs) {
+ return LayerEntry::compare(lhs, rhs) < 0;
+ }
+
+ friend inline int compare_type(const LayerEntry& lhs, const LayerEntry& rhs) {
+ return LayerEntry::compare(lhs, rhs);
+ }
+
Layer* mLayer;
uint32_t mWidth;
uint32_t mHeight;
}; // struct LayerEntry
-private:
void deleteLayer(Layer* layer);
SortedList<LayerEntry> mCache;
@@ -129,15 +136,6 @@
uint32_t mMaxSize;
}; // class LayerCache
-inline int strictly_order_type(const LayerCache::LayerEntry& lhs,
- const LayerCache::LayerEntry& rhs) {
- return LayerCache::LayerEntry::compare(lhs, rhs) < 0;
-}
-
-inline int compare_type(const LayerCache::LayerEntry& lhs, const LayerCache::LayerEntry& rhs) {
- return LayerCache::LayerEntry::compare(lhs, rhs);
-}
-
}; // namespace uirenderer
}; // namespace android