Loading libs/hwui/DisplayList.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -351,9 +351,9 @@ void DisplayList::outputViewProperties(const int level) { level * 2, "", mTransformMatrix, MATRIX_ARGS(mTransformMatrix)); } } if (mAlpha < 1 && !mCaching) { if (!mHasOverlappingRendering) { ALOGD("%*sSetAlpha %.2f", level * 2, "", mAlpha); if (mAlpha < 1) { if (mCaching || !mHasOverlappingRendering) { ALOGD("%*sScaleAlpha %.2f", level * 2, "", mAlpha); } else { int flags = SkCanvas::kHasAlphaLayer_SaveFlag; if (mClipChildren) { Loading libs/hwui/OpenGLRenderer.cpp +6 −6 Original line number Diff line number Diff line Loading @@ -193,6 +193,7 @@ status_t OpenGLRenderer::prepareDirty(float left, float top, mSaveCount = 1; mSnapshot->setClip(left, top, right, bottom); mTilingClip.set(left, top, right, bottom); mDirtyClip = true; updateLayers(); Loading @@ -206,8 +207,7 @@ status_t OpenGLRenderer::prepareDirty(float left, float top, // invoked during the frame mSuppressTiling = mCaches.hasRegisteredFunctors(); mTilingSnapshot = mSnapshot; startTiling(mTilingSnapshot, true); startTiling(mSnapshot, true); debugOverdraw(true, true); Loading Loading @@ -252,9 +252,9 @@ void OpenGLRenderer::syncState() { void OpenGLRenderer::startTiling(const sp<Snapshot>& s, bool opaque) { if (!mSuppressTiling) { Rect* clip = mTilingSnapshot->clipRect; Rect* clip = &mTilingClip; if (s->flags & Snapshot::kFlagFboTarget) { clip = &s->layer->clipRect; clip = &(s->layer->clipRect); } startTiling(*clip, s->height, opaque); Loading Loading @@ -480,10 +480,10 @@ void OpenGLRenderer::debugOverdraw(bool enable, bool clear) { void OpenGLRenderer::renderOverdraw() { if (mCaches.debugOverdraw && getTargetFbo() == 0) { const Rect* clip = mTilingSnapshot->clipRect; const Rect* clip = &mTilingClip; mCaches.enableScissor(); mCaches.setScissor(clip->left, mTilingSnapshot->height - clip->bottom, mCaches.setScissor(clip->left, mFirstSnapshot->height - clip->bottom, clip->right - clip->left, clip->bottom - clip->top); mCaches.stencil.enableDebugTest(2); Loading libs/hwui/OpenGLRenderer.h +1 −1 Original line number Diff line number Diff line Loading @@ -947,7 +947,7 @@ private: // Current state sp<Snapshot> mSnapshot; // State used to define the clipping region sp<Snapshot> mTilingSnapshot; Rect mTilingClip; // Used to draw textured quads TextureVertex mMeshVertices[4]; Loading libs/hwui/Snapshot.cpp +11 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ * limitations under the License. */ #define LOG_TAG "OpenGLRenderer" #include "Snapshot.h" #include <SkCanvas.h> Loading Loading @@ -199,5 +201,14 @@ bool Snapshot::isIgnored() const { return invisible || empty; } void Snapshot::dump() const { ALOGD("Snapshot %p, flags %x, prev %p, height %d, ignored %d, hasComplexClip %d", this, flags, previous.get(), height, isIgnored(), clipRegion && !clipRegion->isEmpty()); ALOGD(" ClipRect (at %p) %.1f %.1f %.1f %.1f", clipRect, clipRect->left, clipRect->top, clipRect->right, clipRect->bottom); ALOGD(" Transform (at %p):", transform); transform->dump(); } }; // namespace uirenderer }; // namespace android libs/hwui/Snapshot.h +2 −0 Original line number Diff line number Diff line Loading @@ -228,6 +228,8 @@ public: */ float alpha; void dump() const; private: void ensureClipRegion(); void copyClipRectFromRegion(); Loading Loading
libs/hwui/DisplayList.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -351,9 +351,9 @@ void DisplayList::outputViewProperties(const int level) { level * 2, "", mTransformMatrix, MATRIX_ARGS(mTransformMatrix)); } } if (mAlpha < 1 && !mCaching) { if (!mHasOverlappingRendering) { ALOGD("%*sSetAlpha %.2f", level * 2, "", mAlpha); if (mAlpha < 1) { if (mCaching || !mHasOverlappingRendering) { ALOGD("%*sScaleAlpha %.2f", level * 2, "", mAlpha); } else { int flags = SkCanvas::kHasAlphaLayer_SaveFlag; if (mClipChildren) { Loading
libs/hwui/OpenGLRenderer.cpp +6 −6 Original line number Diff line number Diff line Loading @@ -193,6 +193,7 @@ status_t OpenGLRenderer::prepareDirty(float left, float top, mSaveCount = 1; mSnapshot->setClip(left, top, right, bottom); mTilingClip.set(left, top, right, bottom); mDirtyClip = true; updateLayers(); Loading @@ -206,8 +207,7 @@ status_t OpenGLRenderer::prepareDirty(float left, float top, // invoked during the frame mSuppressTiling = mCaches.hasRegisteredFunctors(); mTilingSnapshot = mSnapshot; startTiling(mTilingSnapshot, true); startTiling(mSnapshot, true); debugOverdraw(true, true); Loading Loading @@ -252,9 +252,9 @@ void OpenGLRenderer::syncState() { void OpenGLRenderer::startTiling(const sp<Snapshot>& s, bool opaque) { if (!mSuppressTiling) { Rect* clip = mTilingSnapshot->clipRect; Rect* clip = &mTilingClip; if (s->flags & Snapshot::kFlagFboTarget) { clip = &s->layer->clipRect; clip = &(s->layer->clipRect); } startTiling(*clip, s->height, opaque); Loading Loading @@ -480,10 +480,10 @@ void OpenGLRenderer::debugOverdraw(bool enable, bool clear) { void OpenGLRenderer::renderOverdraw() { if (mCaches.debugOverdraw && getTargetFbo() == 0) { const Rect* clip = mTilingSnapshot->clipRect; const Rect* clip = &mTilingClip; mCaches.enableScissor(); mCaches.setScissor(clip->left, mTilingSnapshot->height - clip->bottom, mCaches.setScissor(clip->left, mFirstSnapshot->height - clip->bottom, clip->right - clip->left, clip->bottom - clip->top); mCaches.stencil.enableDebugTest(2); Loading
libs/hwui/OpenGLRenderer.h +1 −1 Original line number Diff line number Diff line Loading @@ -947,7 +947,7 @@ private: // Current state sp<Snapshot> mSnapshot; // State used to define the clipping region sp<Snapshot> mTilingSnapshot; Rect mTilingClip; // Used to draw textured quads TextureVertex mMeshVertices[4]; Loading
libs/hwui/Snapshot.cpp +11 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ * limitations under the License. */ #define LOG_TAG "OpenGLRenderer" #include "Snapshot.h" #include <SkCanvas.h> Loading Loading @@ -199,5 +201,14 @@ bool Snapshot::isIgnored() const { return invisible || empty; } void Snapshot::dump() const { ALOGD("Snapshot %p, flags %x, prev %p, height %d, ignored %d, hasComplexClip %d", this, flags, previous.get(), height, isIgnored(), clipRegion && !clipRegion->isEmpty()); ALOGD(" ClipRect (at %p) %.1f %.1f %.1f %.1f", clipRect, clipRect->left, clipRect->top, clipRect->right, clipRect->bottom); ALOGD(" Transform (at %p):", transform); transform->dump(); } }; // namespace uirenderer }; // namespace android
libs/hwui/Snapshot.h +2 −0 Original line number Diff line number Diff line Loading @@ -228,6 +228,8 @@ public: */ float alpha; void dump() const; private: void ensureClipRegion(); void copyClipRectFromRegion(); Loading