diff options
author | 2017-02-14 12:37:49 -0800 | |
---|---|---|
committer | 2017-02-15 17:22:22 +0000 | |
commit | 09df887c9078a34f2bda32c83734b7f75c0a60ff (patch) | |
tree | 721240c45b25a85008be24301cbb81fd96721b0e /libs/hwui/DeferredLayerUpdater.cpp | |
parent | 4211358c7448147388c5e4af3e0e5472def83a3b (diff) |
Always flush renderstate in DeferredLayerUpdater::apply
Bug: 34206215
Test: hwui unit tests passing, manual test of TextureView video playback
Always flush renderstate to the GlLayer's texture, regardless of
whether updateTexImage has ever been called.
Change-Id: I3974dce9d90633a0299e6bc4259b76c622717c90
Diffstat (limited to 'libs/hwui/DeferredLayerUpdater.cpp')
-rw-r--r-- | libs/hwui/DeferredLayerUpdater.cpp | 23 |
1 files changed, 5 insertions, 18 deletions
diff --git a/libs/hwui/DeferredLayerUpdater.cpp b/libs/hwui/DeferredLayerUpdater.cpp index 00e8c05c21c3..ff90160b8855 100644 --- a/libs/hwui/DeferredLayerUpdater.cpp +++ b/libs/hwui/DeferredLayerUpdater.cpp @@ -98,6 +98,8 @@ void DeferredLayerUpdater::apply() { mUpdateTexImage = false; doUpdateTexImage(); } + GLenum renderTarget = mSurfaceTexture->getCurrentTextureTarget(); + static_cast<GlLayer*>(mLayer)->setRenderTarget(renderTarget); } if (mTransform) { mLayer->getTransform().load(*mTransform); @@ -140,12 +142,8 @@ void DeferredLayerUpdater::doUpdateTexImage() { } #endif mSurfaceTexture->getTransformMatrix(transform); - GLenum renderTarget = mSurfaceTexture->getCurrentTextureTarget(); - LOG_ALWAYS_FATAL_IF(renderTarget != GL_TEXTURE_2D && renderTarget != GL_TEXTURE_EXTERNAL_OES, - "doUpdateTexImage target %x, 2d %x, EXT %x", - renderTarget, GL_TEXTURE_2D, GL_TEXTURE_EXTERNAL_OES); - updateLayer(forceFilter, renderTarget, transform); + updateLayer(forceFilter, transform); } } @@ -155,28 +153,17 @@ void DeferredLayerUpdater::doUpdateVkTexImage() { mLayer->getApi(), Layer::Api::OpenGL, Layer::Api::Vulkan); static const mat4 identityMatrix; - updateLayer(false, GL_NONE, identityMatrix.data); + updateLayer(false, identityMatrix.data); VkLayer* vkLayer = static_cast<VkLayer*>(mLayer); vkLayer->updateTexture(); } -void DeferredLayerUpdater::updateLayer(bool forceFilter, GLenum renderTarget, - const float* textureTransform) { +void DeferredLayerUpdater::updateLayer(bool forceFilter, const float* textureTransform) { mLayer->setBlend(mBlend); mLayer->setForceFilter(forceFilter); mLayer->setSize(mWidth, mHeight); mLayer->getTexTransform().load(textureTransform); - - if (mLayer->getApi() == Layer::Api::OpenGL) { - GlLayer* glLayer = static_cast<GlLayer*>(mLayer); - if (renderTarget != glLayer->getRenderTarget()) { - glLayer->setRenderTarget(renderTarget); - glLayer->bindTexture(); - glLayer->setFilter(GL_NEAREST, false, true); - glLayer->setWrap(GL_CLAMP_TO_EDGE, false, true); - } - } } void DeferredLayerUpdater::detachSurfaceTexture() { |