summaryrefslogtreecommitdiff
path: root/libs/hwui/renderthread/OpenGLPipeline.cpp
diff options
context:
space:
mode:
authorDerek Sollenberger <djsollen@google.com>2016-11-04 10:46:18 -0400
committerDerek Sollenberger <djsollen@google.com>2016-11-07 10:05:56 -0500
commitb7d34b64dd32e3d84bd43344c9c3d9ad098129af (patch)
treebf7125fc5a53b95f4bffd81cc724eef6b478e5fa /libs/hwui/renderthread/OpenGLPipeline.cpp
parent3d36fac2350cbce6dbdcd7502dc9adb0210d3d8b (diff)
Refactor pin/unpinImages to work across pipelines.
Test: existing CTS tests still pass Change-Id: Ib2607e9853396bad42f298829b5c5da0d210af32
Diffstat (limited to 'libs/hwui/renderthread/OpenGLPipeline.cpp')
-rw-r--r--libs/hwui/renderthread/OpenGLPipeline.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/libs/hwui/renderthread/OpenGLPipeline.cpp b/libs/hwui/renderthread/OpenGLPipeline.cpp
index cca0fca41817..afeeef86d22c 100644
--- a/libs/hwui/renderthread/OpenGLPipeline.cpp
+++ b/libs/hwui/renderthread/OpenGLPipeline.cpp
@@ -31,7 +31,8 @@ namespace uirenderer {
namespace renderthread {
OpenGLPipeline::OpenGLPipeline(RenderThread& thread)
- : mEglManager(thread.eglManager()), mRenderThread(thread) {
+ : mEglManager(thread.eglManager())
+ , mRenderThread(thread) {
}
MakeCurrentResult OpenGLPipeline::makeCurrent() {
@@ -222,6 +223,19 @@ bool OpenGLPipeline::createOrUpdateLayer(RenderNode* node,
return transformUpdateNeeded;
}
+bool OpenGLPipeline::pinImages(LsaVector<sk_sp<Bitmap>>& images) {
+ TextureCache& cache = Caches::getInstance().textureCache;
+ bool prefetchSucceeded = true;
+ for (auto& bitmapResource : images) {
+ prefetchSucceeded &= cache.prefetchAndMarkInUse(this, bitmapResource.get());
+ }
+ return prefetchSucceeded;
+}
+
+void OpenGLPipeline::unpinImages() {
+ Caches::getInstance().textureCache.resetMarkInUse(this);
+}
+
void OpenGLPipeline::destroyLayer(RenderNode* node) {
if (OffscreenBuffer* layer = node->getLayer()) {
layer->renderState.layerPool().putOrDelete(layer);