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 Original line Diff line number Diff line
@@ -280,33 +280,33 @@ void Layer::onDraw(const Region& clip) const
        return;
        return;
    }
    }


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


    drawWithOpenGL(clip);
    drawWithOpenGL(clip);


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


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


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


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


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

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


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


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


        glColor4f(0, 0, 0, alpha);
        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);
        glVertexPointer(2, GL_FLOAT, 0, mVertices);


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


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


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


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


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


    glDisable(GL_BLEND);
    glDisable(GL_DITHER);

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

        glVertexPointer(2, GL_SHORT, 0, vertices);
        glVertexPointer(2, GL_SHORT, 0, vertices);
        glTexCoordPointer(2, GL_SHORT, 0, tcoords);
        glTexCoordPointer(2, GL_SHORT, 0, tcoords);
        glEnableClientState(GL_TEXTURE_COORD_ARRAY);
        glEnableClientState(GL_TEXTURE_COORD_ARRAY);
#if defined(GL_OES_EGL_image_external)

        if (GLExtensions::getInstance().haveTextureExternal()) {
        glDisable(GL_TEXTURE_EXTERNAL_OES);
        glDisable(GL_TEXTURE_EXTERNAL_OES);
        }
#endif
        glEnable(GL_TEXTURE_2D);
        glEnable(GL_TEXTURE_2D);
        glBindTexture(GL_TEXTURE_2D, mWormholeTexName);
        glBindTexture(GL_TEXTURE_2D, mWormholeTexName);
        glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
        glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
        glMatrixMode(GL_TEXTURE);
        glMatrixMode(GL_TEXTURE);
        glLoadIdentity();
        glLoadIdentity();

        glDisable(GL_BLEND);

        glScalef(width*(1.0f/32.0f), height*(1.0f/32.0f), 1);
        glScalef(width*(1.0f/32.0f), height*(1.0f/32.0f), 1);
        Region::const_iterator it = region.begin();
        Region::const_iterator it = region.begin();
        Region::const_iterator const end = region.end();
        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);
            GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, tname, 0);


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


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


    return NO_ERROR;
    return NO_ERROR;
}
}