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

Commit 81bd735a authored by Chris Craik's avatar Chris Craik Committed by Android (Google) Code Review
Browse files

Merge "Require minimum 4 bit stencil for layers." into mnc-dev

parents b2cec86a e1450131
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -1262,7 +1262,7 @@ void OpenGLRenderer::attachStencilBufferToLayer(Layer* layer) {
        endTiling();
        endTiling();


        RenderBuffer* buffer = mCaches.renderBufferCache.get(
        RenderBuffer* buffer = mCaches.renderBufferCache.get(
                Stencil::getSmallestStencilFormat(),
                Stencil::getLayerStencilFormat(),
                layer->getWidth(), layer->getHeight());
                layer->getWidth(), layer->getHeight());
        layer->setStencilRenderBuffer(buffer);
        layer->setStencilRenderBuffer(buffer);


+9 −4
Original line number Original line Diff line number Diff line
@@ -42,12 +42,17 @@ uint8_t Stencil::getStencilSize() {
    return STENCIL_BUFFER_SIZE;
    return STENCIL_BUFFER_SIZE;
}
}


GLenum Stencil::getSmallestStencilFormat() {
/**
 * This method will return either GL_STENCIL_INDEX4_OES if supported,
 * GL_STENCIL_INDEX8 if not.
 *
 * Layers can't use a single bit stencil because multi-rect ClipArea needs a high enough
 * stencil resolution to represent the summation of multiple intersecting rect geometries.
 */
GLenum Stencil::getLayerStencilFormat() {
#if !DEBUG_STENCIL
#if !DEBUG_STENCIL
    const Extensions& extensions = Caches::getInstance().extensions();
    const Extensions& extensions = Caches::getInstance().extensions();
    if (extensions.has1BitStencil()) {
    if (extensions.has4BitStencil()) {
        return GL_STENCIL_INDEX1_OES;
    } else if (extensions.has4BitStencil()) {
        return GL_STENCIL_INDEX4_OES;
        return GL_STENCIL_INDEX4_OES;
    }
    }
#endif
#endif
+1 −4
Original line number Original line Diff line number Diff line
@@ -42,10 +42,7 @@ public:
     */
     */
    ANDROID_API static uint8_t getStencilSize();
    ANDROID_API static uint8_t getStencilSize();


    /**
    static GLenum getLayerStencilFormat();
     * Returns the smallest stencil format accepted by render buffers.
     */
    static GLenum getSmallestStencilFormat();


    /**
    /**
     * Clears the stencil buffer.
     * Clears the stencil buffer.