Loading libs/hwui/OpenGLRenderer.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -134,6 +134,8 @@ OpenGLRenderer::OpenGLRenderer(RenderState& renderState) , mExtensions(Extensions::getInstance()) , mRenderState(renderState) , mScissorOptimizationDisabled(false) , mSuppressTiling(false) , mFirstFrameAfterResize(true) , mCountOverdraw(false) , mLightCenter((Vector3){FLT_MIN, FLT_MIN, FLT_MIN}) , mLightRadius(FLT_MIN) Loading Loading @@ -179,6 +181,7 @@ void OpenGLRenderer::onViewportInitialized() { glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glEnableVertexAttribArray(Program::kBindingPosition); mFirstFrameAfterResize = true; } void OpenGLRenderer::setupFrameState(float left, float top, Loading @@ -202,7 +205,9 @@ status_t OpenGLRenderer::startFrame() { // Functors break the tiling extension in pretty spectacular ways // This ensures we don't use tiling when a functor is going to be // invoked during the frame mSuppressTiling = mCaches.hasRegisteredFunctors(); mSuppressTiling = mCaches.hasRegisteredFunctors() || mFirstFrameAfterResize; mFirstFrameAfterResize = false; startTilingCurrentClip(true); Loading libs/hwui/OpenGLRenderer.h +1 −0 Original line number Diff line number Diff line Loading @@ -1013,6 +1013,7 @@ private: // No-ops start/endTiling when set bool mSuppressTiling; bool mFirstFrameAfterResize; // If true, this renderer will setup drawing to emulate // an increment stencil buffer in the color buffer Loading libs/hwui/StatefulBaseRenderer.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,13 @@ void StatefulBaseRenderer::setViewport(int width, int height) { mHeight = height; mFirstSnapshot->initializeViewport(width, height); onViewportInitialized(); // create a temporary 1st snapshot, so old snapshots are released, // and viewport can be queried safely. // TODO: remove, combine viewport + save stack initialization mSnapshot = new Snapshot(mFirstSnapshot, SkCanvas::kMatrix_SaveFlag | SkCanvas::kClip_SaveFlag); mSaveCount = 1; } /////////////////////////////////////////////////////////////////////////////// Loading libs/hwui/renderthread/CanvasContext.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -119,10 +119,10 @@ void CanvasContext::pauseSurface(ANativeWindow* window) { stopDrawing(); } // TODO: don't pass viewport size, it's automatic via EGL void CanvasContext::setup(int width, int height, const Vector3& lightCenter, float lightRadius, uint8_t ambientShadowAlpha, uint8_t spotShadowAlpha) { if (!mCanvas) return; mCanvas->setViewport(width, height); mCanvas->initLight(lightCenter, lightRadius, ambientShadowAlpha, spotShadowAlpha); } Loading Loading
libs/hwui/OpenGLRenderer.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -134,6 +134,8 @@ OpenGLRenderer::OpenGLRenderer(RenderState& renderState) , mExtensions(Extensions::getInstance()) , mRenderState(renderState) , mScissorOptimizationDisabled(false) , mSuppressTiling(false) , mFirstFrameAfterResize(true) , mCountOverdraw(false) , mLightCenter((Vector3){FLT_MIN, FLT_MIN, FLT_MIN}) , mLightRadius(FLT_MIN) Loading Loading @@ -179,6 +181,7 @@ void OpenGLRenderer::onViewportInitialized() { glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glEnableVertexAttribArray(Program::kBindingPosition); mFirstFrameAfterResize = true; } void OpenGLRenderer::setupFrameState(float left, float top, Loading @@ -202,7 +205,9 @@ status_t OpenGLRenderer::startFrame() { // Functors break the tiling extension in pretty spectacular ways // This ensures we don't use tiling when a functor is going to be // invoked during the frame mSuppressTiling = mCaches.hasRegisteredFunctors(); mSuppressTiling = mCaches.hasRegisteredFunctors() || mFirstFrameAfterResize; mFirstFrameAfterResize = false; startTilingCurrentClip(true); Loading
libs/hwui/OpenGLRenderer.h +1 −0 Original line number Diff line number Diff line Loading @@ -1013,6 +1013,7 @@ private: // No-ops start/endTiling when set bool mSuppressTiling; bool mFirstFrameAfterResize; // If true, this renderer will setup drawing to emulate // an increment stencil buffer in the color buffer Loading
libs/hwui/StatefulBaseRenderer.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,13 @@ void StatefulBaseRenderer::setViewport(int width, int height) { mHeight = height; mFirstSnapshot->initializeViewport(width, height); onViewportInitialized(); // create a temporary 1st snapshot, so old snapshots are released, // and viewport can be queried safely. // TODO: remove, combine viewport + save stack initialization mSnapshot = new Snapshot(mFirstSnapshot, SkCanvas::kMatrix_SaveFlag | SkCanvas::kClip_SaveFlag); mSaveCount = 1; } /////////////////////////////////////////////////////////////////////////////// Loading
libs/hwui/renderthread/CanvasContext.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -119,10 +119,10 @@ void CanvasContext::pauseSurface(ANativeWindow* window) { stopDrawing(); } // TODO: don't pass viewport size, it's automatic via EGL void CanvasContext::setup(int width, int height, const Vector3& lightCenter, float lightRadius, uint8_t ambientShadowAlpha, uint8_t spotShadowAlpha) { if (!mCanvas) return; mCanvas->setViewport(width, height); mCanvas->initLight(lightCenter, lightRadius, ambientShadowAlpha, spotShadowAlpha); } Loading