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

Commit d7d78a28 authored by Chia-I Wu's avatar Chia-I Wu Committed by android-build-merger
Browse files

[SurfaceFlinger] Apply legacy saturation matrix globally for Display P3.

am: 6d84411a

Change-Id: I60b8b0acc4b63255842040ba5b99b29a7677bfb6
parents 87f4b0e5 6d84411a
Loading
Loading
Loading
Loading
+0 −9
Original line number Diff line number Diff line
@@ -51,10 +51,6 @@ void Description::setProjectionMatrix(const mat4& mtx) {
    mProjectionMatrix = mtx;
}

void Description::setSaturationMatrix(const mat4& mtx) {
    mSaturationMatrix = mtx;
}

void Description::setColorMatrix(const mat4& mtx) {
    mColorMatrix = mtx;
}
@@ -82,11 +78,6 @@ bool Description::hasColorMatrix() const {
    return mColorMatrix != identity;
}

bool Description::hasSaturationMatrix() const {
    const mat4 identity;
    return mSaturationMatrix != identity;
}

const mat4& Description::getColorMatrix() const {
    return mColorMatrix;
}
+0 −3
Original line number Diff line number Diff line
@@ -42,14 +42,12 @@ public:
    void disableTexture();
    void setColor(const half4& color);
    void setProjectionMatrix(const mat4& mtx);
    void setSaturationMatrix(const mat4& mtx);
    void setColorMatrix(const mat4& mtx);
    void setInputTransformMatrix(const mat3& matrix);
    void setOutputTransformMatrix(const mat4& matrix);
    bool hasInputTransformMatrix() const;
    bool hasOutputTransformMatrix() const;
    bool hasColorMatrix() const;
    bool hasSaturationMatrix() const;
    const mat4& getColorMatrix() const;

    void setY410BT2020(bool enable);
@@ -92,7 +90,6 @@ private:
    // projection matrix
    mat4 mProjectionMatrix;
    mat4 mColorMatrix;
    mat4 mSaturationMatrix;
    mat3 mInputTransformMatrix;
    mat4 mOutputTransformMatrix;
};
+2 −7
Original line number Diff line number Diff line
@@ -267,10 +267,6 @@ void GLES20RenderEngine::setupColorTransform(const mat4& colorTransform) {
    mState.setColorMatrix(colorTransform);
}

void GLES20RenderEngine::setSaturationMatrix(const mat4& saturationMatrix) {
    mState.setSaturationMatrix(saturationMatrix);
}

void GLES20RenderEngine::disableTexturing() {
    mState.disableTexture();
}
@@ -383,11 +379,10 @@ void GLES20RenderEngine::drawMesh(const Mesh& mesh) {

        // we need to convert the RGB value to linear space and convert it back when:
        // - there is a color matrix that is not an identity matrix, or
        // - there is a saturation matrix that is not an identity matrix, or
        // - there is an output transform matrix that is not an identity matrix, or
        // - the input transfer function doesn't match the output transfer function.
        if (wideColorState.hasColorMatrix() || wideColorState.hasSaturationMatrix() ||
            wideColorState.hasOutputTransformMatrix() || inputTransfer != outputTransfer) {
        if (wideColorState.hasColorMatrix() || wideColorState.hasOutputTransformMatrix() ||
            inputTransfer != outputTransfer) {
            switch (inputTransfer) {
                case Dataspace::TRANSFER_ST2084:
                    wideColorState.setInputTransferFunction(Description::TransferFunction::ST2084);
+0 −1
Original line number Diff line number Diff line
@@ -81,7 +81,6 @@ protected:
    virtual void setupLayerBlackedOut();
    virtual void setupFillWithColor(float r, float g, float b, float a);
    virtual void setupColorTransform(const mat4& colorTransform);
    virtual void setSaturationMatrix(const mat4& saturationMatrix);
    virtual void disableTexturing();
    virtual void disableBlending();

+1 −10
Original line number Diff line number Diff line
@@ -135,22 +135,13 @@ void Program::setUniforms(const Description& desc) {
        glUniform4fv(mColorLoc, 1, color);
    }
    if (mInputTransformMatrixLoc >= 0) {
        // If the input transform matrix is not identity matrix, we want to merge
        // the saturation matrix with input transform matrix so that the saturation
        // matrix is applied at the correct stage.
        mat4 inputTransformMatrix = mat4(desc.mInputTransformMatrix) * desc.mSaturationMatrix;
        mat4 inputTransformMatrix = mat4(desc.mInputTransformMatrix);
        glUniformMatrix4fv(mInputTransformMatrixLoc, 1, GL_FALSE, inputTransformMatrix.asArray());
    }
    if (mOutputTransformMatrixLoc >= 0) {
        // The output transform matrix and color matrix can be combined as one matrix
        // that is applied right before applying OETF.
        mat4 outputTransformMatrix = desc.mColorMatrix * desc.mOutputTransformMatrix;
        // If there is no input transform matrix, we want to merge the saturation
        // matrix with output transform matrix to avoid extra matrix multiplication
        // in shader.
        if (mInputTransformMatrixLoc < 0) {
            outputTransformMatrix *= desc.mSaturationMatrix;
        }
        glUniformMatrix4fv(mOutputTransformMatrixLoc, 1, GL_FALSE,
                           outputTransformMatrix.asArray());
    }
Loading