diff options
author | Derek Sollenberger <djsollen@google.com> | 2016-11-04 10:46:18 -0400 |
---|---|---|
committer | Derek Sollenberger <djsollen@google.com> | 2016-11-07 10:05:56 -0500 |
commit | b7d34b64dd32e3d84bd43344c9c3d9ad098129af (patch) | |
tree | bf7125fc5a53b95f4bffd81cc724eef6b478e5fa /libs/hwui/renderthread/OpenGLPipeline.cpp | |
parent | 3d36fac2350cbce6dbdcd7502dc9adb0210d3d8b (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.cpp | 16 |
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); |