Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit efbac1be authored by Romain Guy's avatar Romain Guy Committed by Android Git Automerger
Browse files

am a852ff3a: Merge changes I9873540e,I4f6c38e3 into jb-mr1-dev

* commit 'a852ff3a':
  Skia's ColorMatrix vector is in the 0..255 range not 0..1 Bug #7248980
  Don't use the QCOM_tiled_rendering extension with functors Bug #7247880
parents 9ab25942 a852ff3a
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -87,6 +87,8 @@ void Caches::init() {
    lastDstMode = GL_ZERO;
    currentProgram = NULL;

    mFunctorsCount = 0;

    mInitialized = true;
}

@@ -458,6 +460,22 @@ void Caches::endTiling() {
    }
}

bool Caches::hasRegisteredFunctors() {
    return mFunctorsCount > 0;
}

void Caches::registerFunctors(uint32_t functorCount) {
    mFunctorsCount += functorCount;
}

void Caches::unregisterFunctors(uint32_t functorCount) {
    if (functorCount > mFunctorsCount) {
        mFunctorsCount = 0;
    } else {
        mFunctorsCount -= functorCount;
    }
}

///////////////////////////////////////////////////////////////////////////////
// Regions
///////////////////////////////////////////////////////////////////////////////
+6 −0
Original line number Diff line number Diff line
@@ -226,6 +226,10 @@ public:
    void dumpMemoryUsage();
    void dumpMemoryUsage(String8& log);

    bool hasRegisteredFunctors();
    void registerFunctors(uint32_t functorCount);
    void unregisterFunctors(uint32_t functorCount);

    bool blend;
    GLenum lastSrcMode;
    GLenum lastDstMode;
@@ -316,6 +320,8 @@ private:

    DebugLevel mDebugLevel;
    bool mInitialized;

    uint32_t mFunctorsCount;
}; // class Caches

}; // namespace uirenderer
+9 −1
Original line number Diff line number Diff line
@@ -157,6 +157,7 @@ void DisplayList::clearResources() {
    mAnimationMatrix = NULL;

    Caches& caches = Caches::getInstance();
    caches.unregisterFunctors(mFunctorCount);
    caches.resourceCache.lock();

    for (size_t i = 0; i < mBitmapResources.size(); i++) {
@@ -218,6 +219,7 @@ void DisplayList::initFromDisplayListRenderer(const DisplayListRenderer& recorde
    init();

    if (writer.size() == 0) {
        mFunctorCount = 0;
        return;
    }

@@ -232,7 +234,10 @@ void DisplayList::initFromDisplayListRenderer(const DisplayListRenderer& recorde
    writer.flatten(buffer);
    mReader.setMemory(buffer, mSize);

    mFunctorCount = recorder.getFunctorCount();

    Caches& caches = Caches::getInstance();
    caches.registerFunctors(mFunctorCount);
    caches.resourceCache.lock();

    const Vector<SkBitmap*>& bitmapResources = recorder.getBitmapResources();
@@ -1340,7 +1345,8 @@ status_t DisplayList::replay(OpenGLRenderer& renderer, Rect& dirty, int32_t flag

DisplayListRenderer::DisplayListRenderer():
        mCaches(Caches::getInstance()), mWriter(MIN_WRITER_SIZE),
        mTranslateX(0.0f), mTranslateY(0.0f), mHasTranslate(false), mHasDrawOps(false) {
        mTranslateX(0.0f), mTranslateY(0.0f), mHasTranslate(false),
        mHasDrawOps(false), mFunctorCount(0) {
}

DisplayListRenderer::~DisplayListRenderer() {
@@ -1397,6 +1403,7 @@ void DisplayListRenderer::reset() {
    mLayers.clear();

    mHasDrawOps = false;
    mFunctorCount = 0;
}

///////////////////////////////////////////////////////////////////////////////
@@ -1453,6 +1460,7 @@ status_t DisplayListRenderer::callDrawGLFunction(Functor *functor, Rect& dirty)
    // Ignore dirty during recording, it matters only when we replay
    addOp(DisplayList::DrawGLFunction);
    addInt((int) functor);
    mFunctorCount++;
    return DrawGlInfo::kStatusDone; // No invalidate needed at record-time
}

+7 −0
Original line number Diff line number Diff line
@@ -503,6 +503,7 @@ private:
    size_t mSize;

    bool mIsRenderable;
    uint32_t mFunctorCount;

    String8 mName;

@@ -661,6 +662,10 @@ public:
        return mMatrices;
    }

    uint32_t getFunctorCount() const {
        return mFunctorCount;
    }

private:
    void insertRestoreToCount() {
        if (mRestoreSaveCount >= 0) {
@@ -887,6 +892,8 @@ private:
    bool mHasTranslate;
    bool mHasDrawOps;

    uint32_t mFunctorCount;

    friend class DisplayList;

}; // class DisplayListRenderer
+14 −7
Original line number Diff line number Diff line
@@ -193,6 +193,11 @@ int OpenGLRenderer::prepareDirty(float left, float top, float right, float botto

    syncState();

    // 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();

    mTilingSnapshot = mSnapshot;
    startTiling(mTilingSnapshot, true);

@@ -221,6 +226,7 @@ void OpenGLRenderer::syncState() {
}

void OpenGLRenderer::startTiling(const sp<Snapshot>& s, bool opaque) {
    if (!mSuppressTiling) {
        Rect* clip = mTilingSnapshot->clipRect;
        if (s->flags & Snapshot::kFlagIsFboLayer) {
            clip = s->clipRect;
@@ -229,9 +235,10 @@ void OpenGLRenderer::startTiling(const sp<Snapshot>& s, bool opaque) {
        mCaches.startTiling(clip->left, s->height - clip->bottom,
                clip->right - clip->left, clip->bottom - clip->top, opaque);
    }
}

void OpenGLRenderer::endTiling() {
    mCaches.endTiling();
    if (!mSuppressTiling) mCaches.endTiling();
}

void OpenGLRenderer::finish() {
Loading