Loading libs/hwui/Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -255,6 +255,7 @@ LOCAL_SRC_FILES += \ tests/unit/MatrixTests.cpp \ tests/unit/OffscreenBufferPoolTests.cpp \ tests/unit/RenderNodeTests.cpp \ tests/unit/RenderPropertiesTests.cpp \ tests/unit/SkiaBehaviorTests.cpp \ tests/unit/SnapshotTests.cpp \ tests/unit/StringUtilsTests.cpp \ Loading libs/hwui/BakedOpRenderer.cpp +7 −2 Original line number Diff line number Diff line Loading @@ -66,8 +66,13 @@ void BakedOpRenderer::startRepaintLayer(OffscreenBuffer* offscreenBuffer, const offscreenBuffer->texture.id(), 0); GL_CHECKPOINT(LOW); LOG_ALWAYS_FATAL_IF(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, "framebuffer incomplete!"); int status = glCheckFramebufferStatus(GL_FRAMEBUFFER); LOG_ALWAYS_FATAL_IF(status != GL_FRAMEBUFFER_COMPLETE, "framebuffer incomplete, status %d, textureId %d, size %dx%d", status, offscreenBuffer->texture.id(), offscreenBuffer->texture.width(), offscreenBuffer->texture.height()); // Change the viewport & ortho projection setViewport(offscreenBuffer->viewportWidth, offscreenBuffer->viewportHeight); Loading libs/hwui/FrameBuilder.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -86,7 +86,9 @@ void FrameBuilder::deferLayers(const LayerUpdateQueue& layers) { ATRACE_FORMAT("Optimize HW Layer DisplayList %s %ux%u", layerNode->getName(), layerNode->getWidth(), layerNode->getHeight()); const Rect& layerDamage = layers.entries()[i].damage; Rect layerDamage = layers.entries()[i].damage; // TODO: ensure layer damage can't be larger than layer layerDamage.doIntersect(0, 0, layer->viewportWidth, layer->viewportHeight); layerNode->computeOrdering(); // map current light center into RenderNode's coordinate space Loading libs/hwui/RenderNode.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -319,6 +319,8 @@ void RenderNode::pushLayerUpdate(TreeInfo& info) { transformUpdateNeeded = true; } else if (!layerMatchesWidthAndHeight(mLayer, getWidth(), getHeight())) { #if HWUI_NEW_OPS // TODO: remove now irrelevant, currently enqueued damage (respecting damage ordering) // Or, ideally, maintain damage between frames on node/layer so ordering is always correct RenderState& renderState = mLayer->renderState; if (properties().fitsOnLayer()) { mLayer = renderState.layerPool().resize(mLayer, getWidth(), getHeight()); Loading libs/hwui/RenderProperties.h +3 −1 Original line number Diff line number Diff line Loading @@ -611,7 +611,9 @@ public: bool fitsOnLayer() const { const DeviceInfo* deviceInfo = DeviceInfo::get(); return mPrimitiveFields.mWidth <= deviceInfo->maxTextureSize() && mPrimitiveFields.mHeight <= deviceInfo->maxTextureSize(); && mPrimitiveFields.mHeight <= deviceInfo->maxTextureSize() && mPrimitiveFields.mWidth > 0 && mPrimitiveFields.mHeight > 0; } bool promotedToLayer() const { Loading Loading
libs/hwui/Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -255,6 +255,7 @@ LOCAL_SRC_FILES += \ tests/unit/MatrixTests.cpp \ tests/unit/OffscreenBufferPoolTests.cpp \ tests/unit/RenderNodeTests.cpp \ tests/unit/RenderPropertiesTests.cpp \ tests/unit/SkiaBehaviorTests.cpp \ tests/unit/SnapshotTests.cpp \ tests/unit/StringUtilsTests.cpp \ Loading
libs/hwui/BakedOpRenderer.cpp +7 −2 Original line number Diff line number Diff line Loading @@ -66,8 +66,13 @@ void BakedOpRenderer::startRepaintLayer(OffscreenBuffer* offscreenBuffer, const offscreenBuffer->texture.id(), 0); GL_CHECKPOINT(LOW); LOG_ALWAYS_FATAL_IF(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, "framebuffer incomplete!"); int status = glCheckFramebufferStatus(GL_FRAMEBUFFER); LOG_ALWAYS_FATAL_IF(status != GL_FRAMEBUFFER_COMPLETE, "framebuffer incomplete, status %d, textureId %d, size %dx%d", status, offscreenBuffer->texture.id(), offscreenBuffer->texture.width(), offscreenBuffer->texture.height()); // Change the viewport & ortho projection setViewport(offscreenBuffer->viewportWidth, offscreenBuffer->viewportHeight); Loading
libs/hwui/FrameBuilder.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -86,7 +86,9 @@ void FrameBuilder::deferLayers(const LayerUpdateQueue& layers) { ATRACE_FORMAT("Optimize HW Layer DisplayList %s %ux%u", layerNode->getName(), layerNode->getWidth(), layerNode->getHeight()); const Rect& layerDamage = layers.entries()[i].damage; Rect layerDamage = layers.entries()[i].damage; // TODO: ensure layer damage can't be larger than layer layerDamage.doIntersect(0, 0, layer->viewportWidth, layer->viewportHeight); layerNode->computeOrdering(); // map current light center into RenderNode's coordinate space Loading
libs/hwui/RenderNode.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -319,6 +319,8 @@ void RenderNode::pushLayerUpdate(TreeInfo& info) { transformUpdateNeeded = true; } else if (!layerMatchesWidthAndHeight(mLayer, getWidth(), getHeight())) { #if HWUI_NEW_OPS // TODO: remove now irrelevant, currently enqueued damage (respecting damage ordering) // Or, ideally, maintain damage between frames on node/layer so ordering is always correct RenderState& renderState = mLayer->renderState; if (properties().fitsOnLayer()) { mLayer = renderState.layerPool().resize(mLayer, getWidth(), getHeight()); Loading
libs/hwui/RenderProperties.h +3 −1 Original line number Diff line number Diff line Loading @@ -611,7 +611,9 @@ public: bool fitsOnLayer() const { const DeviceInfo* deviceInfo = DeviceInfo::get(); return mPrimitiveFields.mWidth <= deviceInfo->maxTextureSize() && mPrimitiveFields.mHeight <= deviceInfo->maxTextureSize(); && mPrimitiveFields.mHeight <= deviceInfo->maxTextureSize() && mPrimitiveFields.mWidth > 0 && mPrimitiveFields.mHeight > 0; } bool promotedToLayer() const { Loading