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

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

Merge "Fix unsafety in SkiaShader storage, and texture unit accounting" into mnc-dev

parents 10633c96 e310f83d
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -370,7 +370,11 @@ void SkiaShader::store(Caches& caches, const SkShader& shader, const Matrix4& mo
    if (tryStoreLayer(caches, shader, modelViewMatrix,
            textureUnit, description, &outData->layerData)) {
        outData->skiaShaderType = kLayer_SkiaShaderType;
        return;
    }

    // Unknown/unsupported type, so explicitly ignore shader
    outData->skiaShaderType = kNone_SkiaShaderType;
}

void SkiaShader::apply(Caches& caches, const SkiaShaderData& data) {
+6 −2
Original line number Diff line number Diff line
@@ -22,7 +22,8 @@ namespace uirenderer {
const GLenum kTextureUnits[] = {
    GL_TEXTURE0,
    GL_TEXTURE1,
    GL_TEXTURE2
    GL_TEXTURE2,
    GL_TEXTURE3
};

TextureState::TextureState()
@@ -37,6 +38,9 @@ TextureState::TextureState()
}

void TextureState::activateTexture(GLuint textureUnit) {
    LOG_ALWAYS_FATAL_IF(textureUnit >= kTextureUnitsCount,
            "Tried to use texture unit index %d, only %d exist",
            textureUnit, kTextureUnitsCount);
    if (mTextureUnit != textureUnit) {
        glActiveTexture(kTextureUnits[textureUnit]);
        mTextureUnit = textureUnit;
+1 −1
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ public:
    void unbindTexture(GLuint texture);
private:
    // total number of texture units available for use
    static const int kTextureUnitsCount = 3;
    static const int kTextureUnitsCount = 4;

    TextureState();
    GLuint mTextureUnit;