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

Commit 265eed73 authored by Mathias Agopian's avatar Mathias Agopian Committed by Android (Google) Code Review
Browse files

Merge "Make sure set GL state properly" into ics-mr0

parents 70b9281f c492e678
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -280,33 +280,33 @@ void Layer::onDraw(const Region& clip) const
        return;
    }

    GLenum target = GL_TEXTURE_EXTERNAL_OES;
    if (!isProtected()) {
        glBindTexture(target, mTextureName);
        glBindTexture(GL_TEXTURE_EXTERNAL_OES, mTextureName);
        GLenum filter = GL_NEAREST;
        if (getFiltering() || needsFiltering() || isFixedSize() || isCropped()) {
            // TODO: we could be more subtle with isFixedSize()
            glTexParameterx(target, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
            glTexParameterx(target, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        } else {
            glTexParameterx(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
            glTexParameterx(target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
            filter = GL_LINEAR;
        }
        glEnable(target);
        glTexParameterx(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MAG_FILTER, filter);
        glTexParameterx(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MIN_FILTER, filter);
        glMatrixMode(GL_TEXTURE);
        glLoadMatrixf(mTextureMatrix);
        glMatrixMode(GL_MODELVIEW);
        glEnable(GL_TEXTURE_EXTERNAL_OES);
        glDisable(GL_TEXTURE_2D);
    } else {
        target = GL_TEXTURE_2D;
        glBindTexture(target, mFlinger->getProtectedTexName());
        glEnable(target);
        glBindTexture(GL_TEXTURE_2D, mFlinger->getProtectedTexName());
        glMatrixMode(GL_TEXTURE);
        glLoadIdentity();
        glMatrixMode(GL_MODELVIEW);
        glDisable(GL_TEXTURE_EXTERNAL_OES);
        glEnable(GL_TEXTURE_2D);
    }

    drawWithOpenGL(clip);

    glDisable(target);
    glDisable(GL_TEXTURE_EXTERNAL_OES);
    glDisable(GL_TEXTURE_2D);
}

// As documented in libhardware header, formats in the range
+2 −12
Original line number Diff line number Diff line
@@ -388,14 +388,9 @@ void LayerBase::clearWithOpenGL(const Region& clip, GLclampf red,
    const uint32_t fbHeight = hw.getHeight();
    glColor4f(red,green,blue,alpha);

#if defined(GL_OES_EGL_image_external)
        if (GLExtensions::getInstance().haveTextureExternal()) {
    glDisable(GL_TEXTURE_EXTERNAL_OES);
        }
#endif
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_BLEND);
    glDisable(GL_DITHER);

    Region::const_iterator it = clip.begin();
    Region::const_iterator const end = clip.end();
@@ -457,12 +452,6 @@ void LayerBase::drawWithOpenGL(const Region& clip) const
    texCoords[3].u = 1;
    texCoords[3].v = 1;

    if (needsDithering()) {
        glEnable(GL_DITHER);
    } else {
        glDisable(GL_DITHER);
    }

    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    glVertexPointer(2, GL_FLOAT, 0, mVertices);
    glTexCoordPointer(2, GL_FLOAT, 0, texCoords);
@@ -476,6 +465,7 @@ void LayerBase::drawWithOpenGL(const Region& clip) const
        glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
    }
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDisable(GL_BLEND);
}

void LayerBase::dump(String8& result, char* buffer, size_t SIZE) const
+4 −7
Original line number Diff line number Diff line
@@ -49,7 +49,8 @@ void LayerDim::onDraw(const Region& clip) const
        const DisplayHardware& hw(graphicPlane(0).displayHardware());
        const GLfloat alpha = s.alpha/255.0f;
        const uint32_t fbHeight = hw.getHeight();
        glDisable(GL_DITHER);
        glDisable(GL_TEXTURE_EXTERNAL_OES);
        glDisable(GL_TEXTURE_2D);

        if (s.alpha == 0xFF) {
            glDisable(GL_BLEND);
@@ -60,11 +61,6 @@ void LayerDim::onDraw(const Region& clip) const

        glColor4f(0, 0, 0, alpha);

#if defined(GL_OES_EGL_image_external)
        if (GLExtensions::getInstance().haveTextureExternal()) {
            glDisable(GL_TEXTURE_EXTERNAL_OES);
        }
#endif
        glVertexPointer(2, GL_FLOAT, 0, mVertices);

        while (it != end) {
@@ -73,9 +69,10 @@ void LayerDim::onDraw(const Region& clip) const
            glScissor(r.left, sy, r.width(), r.height());
            glDrawArrays(GL_TRIANGLE_FAN, 0, 4); 
        }
    }
        glDisable(GL_BLEND);
        glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    }
}

// ---------------------------------------------------------------------------

+12 −9
Original line number Diff line number Diff line
@@ -1029,8 +1029,9 @@ void SurfaceFlinger::debugFlashRegions()
        composeSurfaces(repaint);
    }

    glDisable(GL_TEXTURE_EXTERNAL_OES);
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_BLEND);
    glDisable(GL_DITHER);
    glDisable(GL_SCISSOR_TEST);

    static int toggle = 0;
@@ -1073,9 +1074,6 @@ void SurfaceFlinger::drawWormhole() const
    const int32_t width = hw.getWidth();
    const int32_t height = hw.getHeight();

    glDisable(GL_BLEND);
    glDisable(GL_DITHER);

    if (LIKELY(!mDebugBackground)) {
        glClearColor(0,0,0,0);
        Region::const_iterator it = region.begin();
@@ -1090,19 +1088,20 @@ void SurfaceFlinger::drawWormhole() const
        const GLshort vertices[][2] = { { 0, 0 }, { width, 0 },
                { width, height }, { 0, height }  };
        const GLshort tcoords[][2] = { { 0, 0 }, { 1, 0 },  { 1, 1 }, { 0, 1 } };

        glVertexPointer(2, GL_SHORT, 0, vertices);
        glTexCoordPointer(2, GL_SHORT, 0, tcoords);
        glEnableClientState(GL_TEXTURE_COORD_ARRAY);
#if defined(GL_OES_EGL_image_external)
        if (GLExtensions::getInstance().haveTextureExternal()) {

        glDisable(GL_TEXTURE_EXTERNAL_OES);
        }
#endif
        glEnable(GL_TEXTURE_2D);
        glBindTexture(GL_TEXTURE_2D, mWormholeTexName);
        glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
        glMatrixMode(GL_TEXTURE);
        glLoadIdentity();

        glDisable(GL_BLEND);

        glScalef(width*(1.0f/32.0f), height*(1.0f/32.0f), 1);
        Region::const_iterator it = region.begin();
        Region::const_iterator const end = region.end();
@@ -1813,6 +1812,8 @@ status_t SurfaceFlinger::renderScreenToTextureLocked(DisplayID dpy,
            GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, tname, 0);

    // redraw the screen entirely...
    glDisable(GL_TEXTURE_EXTERNAL_OES);
    glDisable(GL_TEXTURE_2D);
    glClearColor(0,0,0,1);
    glClear(GL_COLOR_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
@@ -2004,6 +2005,7 @@ status_t SurfaceFlinger::electronBeamOffAnimationImplLocked()
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDeleteTextures(1, &tname);
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_BLEND);
    return NO_ERROR;
}

@@ -2148,6 +2150,7 @@ status_t SurfaceFlinger::electronBeamOnAnimationImplLocked()
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDeleteTextures(1, &tname);
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_BLEND);

    return NO_ERROR;
}