Loading libs/hwui/DeferredLayerUpdater.cpp +5 −18 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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); } } Loading @@ -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() { Loading libs/hwui/DeferredLayerUpdater.h +1 −1 Original line number Diff line number Diff line Loading @@ -101,7 +101,7 @@ public: void detachSurfaceTexture(); void updateLayer(bool forceFilter, GLenum renderTarget, const float* textureTransform); void updateLayer(bool forceFilter, const float* textureTransform); void destroyLayer(); Loading libs/hwui/GlLayer.cpp +9 −3 Original line number Diff line number Diff line Loading @@ -55,10 +55,16 @@ void GlLayer::onGlContextLost() { texture.deleteTexture(); } void GlLayer::bindTexture() const { void GlLayer::setRenderTarget(GLenum renderTarget) { if (renderTarget != getRenderTarget()) { // new render target: bind with new target, and update filter/wrap texture.mTarget = renderTarget; if (texture.mId) { caches.textureState().bindTexture(texture.target(), texture.mId); } texture.setFilter(GL_NEAREST, false, true); texture.setWrap(GL_CLAMP_TO_EDGE, false, true); } } void GlLayer::generateTexture() { Loading libs/hwui/GlLayer.h +1 −12 Original line number Diff line number Diff line Loading @@ -68,23 +68,12 @@ public: return texture.target(); } inline void setRenderTarget(GLenum renderTarget) { texture.mTarget = renderTarget; } inline bool isRenderable() const { return texture.target() != GL_NONE; } void setWrap(GLenum wrap, bool bindTexture = false, bool force = false) { texture.setWrap(wrap, bindTexture, force); } void setFilter(GLenum filter, bool bindTexture = false, bool force = false) { texture.setFilter(filter, bindTexture, force); } void setRenderTarget(GLenum renderTarget); void bindTexture() const; void generateTexture(); /** Loading libs/hwui/tests/common/TestUtils.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,11 @@ sp<DeferredLayerUpdater> TestUtils::createTextureLayerUpdater( layerUpdater->setTransform(&transform); // updateLayer so it's ready to draw layerUpdater->updateLayer(true, GL_TEXTURE_EXTERNAL_OES, Matrix4::identity().data); layerUpdater->updateLayer(true, Matrix4::identity().data); if (layerUpdater->backingLayer()->getApi() == Layer::Api::OpenGL) { static_cast<GlLayer*>(layerUpdater->backingLayer())->setRenderTarget( GL_TEXTURE_EXTERNAL_OES); } return layerUpdater; } Loading Loading
libs/hwui/DeferredLayerUpdater.cpp +5 −18 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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); } } Loading @@ -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() { Loading
libs/hwui/DeferredLayerUpdater.h +1 −1 Original line number Diff line number Diff line Loading @@ -101,7 +101,7 @@ public: void detachSurfaceTexture(); void updateLayer(bool forceFilter, GLenum renderTarget, const float* textureTransform); void updateLayer(bool forceFilter, const float* textureTransform); void destroyLayer(); Loading
libs/hwui/GlLayer.cpp +9 −3 Original line number Diff line number Diff line Loading @@ -55,10 +55,16 @@ void GlLayer::onGlContextLost() { texture.deleteTexture(); } void GlLayer::bindTexture() const { void GlLayer::setRenderTarget(GLenum renderTarget) { if (renderTarget != getRenderTarget()) { // new render target: bind with new target, and update filter/wrap texture.mTarget = renderTarget; if (texture.mId) { caches.textureState().bindTexture(texture.target(), texture.mId); } texture.setFilter(GL_NEAREST, false, true); texture.setWrap(GL_CLAMP_TO_EDGE, false, true); } } void GlLayer::generateTexture() { Loading
libs/hwui/GlLayer.h +1 −12 Original line number Diff line number Diff line Loading @@ -68,23 +68,12 @@ public: return texture.target(); } inline void setRenderTarget(GLenum renderTarget) { texture.mTarget = renderTarget; } inline bool isRenderable() const { return texture.target() != GL_NONE; } void setWrap(GLenum wrap, bool bindTexture = false, bool force = false) { texture.setWrap(wrap, bindTexture, force); } void setFilter(GLenum filter, bool bindTexture = false, bool force = false) { texture.setFilter(filter, bindTexture, force); } void setRenderTarget(GLenum renderTarget); void bindTexture() const; void generateTexture(); /** Loading
libs/hwui/tests/common/TestUtils.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,11 @@ sp<DeferredLayerUpdater> TestUtils::createTextureLayerUpdater( layerUpdater->setTransform(&transform); // updateLayer so it's ready to draw layerUpdater->updateLayer(true, GL_TEXTURE_EXTERNAL_OES, Matrix4::identity().data); layerUpdater->updateLayer(true, Matrix4::identity().data); if (layerUpdater->backingLayer()->getApi() == Layer::Api::OpenGL) { static_cast<GlLayer*>(layerUpdater->backingLayer())->setRenderTarget( GL_TEXTURE_EXTERNAL_OES); } return layerUpdater; } Loading