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

Commit d392b87e authored by Romain Guy's avatar Romain Guy Committed by Android (Google) Code Review
Browse files

Merge changes Ib0a0b7d1,Ibec4b2aa into jb-mr1-dev

* changes:
  Fix overdraw debug on QCOM
  Make sure we never bind to texture #0 Bug #7195815
parents c0e1f268 4285de3c
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -435,15 +435,13 @@ void Caches::resetScissor() {
///////////////////////////////////////////////////////////////////////////////

void Caches::startTiling(GLuint x, GLuint y, GLuint width, GLuint height, bool opaque) {
    if (extensions.hasTiledRendering()) {
        glStartTilingQCOM(x, y, width, height,
                (opaque ? GL_NONE : GL_COLOR_BUFFER_BIT0_QCOM) |
                (debugOverdraw ? GL_STENCIL_BUFFER_BIT0_QCOM : 0));
    if (extensions.hasTiledRendering() && !debugOverdraw) {
        glStartTilingQCOM(x, y, width, height, (opaque ? GL_NONE : GL_COLOR_BUFFER_BIT0_QCOM));
    }
}

void Caches::endTiling() {
    if (extensions.hasTiledRendering()) {
    if (extensions.hasTiledRendering() && !debugOverdraw) {
        glEndTilingQCOM(GL_COLOR_BUFFER_BIT0_QCOM);
    }
}
+21 −23
Original line number Diff line number Diff line
@@ -78,12 +78,7 @@ public:
    }

    ~CacheTexture() {
        if (mTexture) {
            delete[] mTexture;
        }
        if (mTextureId) {
            glDeleteTextures(1, &mTextureId);
        }
        releaseTexture();
        reset();
    }

@@ -106,30 +101,31 @@ public:

    void releaseTexture() {
        if (mTexture) {
            glDeleteTextures(1, &mTextureId);
            delete[] mTexture;
            mTexture = NULL;
        }
        if (mTextureId) {
            glDeleteTextures(1, &mTextureId);
            mTextureId = 0;
        }
        mDirty = false;
    }

    /**
     * This method assumes that the proper texture unit is active.
     */
    void allocateTexture() {
        int width = mWidth;
        int height = mHeight;

        mTexture = new uint8_t[width * height];
        if (!mTexture) {
            mTexture = new uint8_t[mWidth * mHeight];
        }

        if (!mTextureId) {
            glGenTextures(1, &mTextureId);
        }

            glBindTexture(GL_TEXTURE_2D, mTextureId);
            glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
            // Initialize texture dimensions
        glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, width, height, 0,
            glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, mWidth, mHeight, 0,
                    GL_ALPHA, GL_UNSIGNED_BYTE, 0);

            const GLenum filtering = getLinearFiltering() ? GL_LINEAR : GL_NEAREST;
@@ -139,6 +135,7 @@ public:
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
        }
    }

    bool fitBitmap(const SkGlyph& glyph, uint32_t* retOriginX, uint32_t* retOriginY);

@@ -158,7 +155,8 @@ public:
        return mTexture;
    }

    inline GLuint getTextureId() const {
    GLuint getTextureId() {
        allocateTexture();
        return mTextureId;
    }