surfaceflinger: generalize Description::mIsWideGamut
Generalize the mIsWideGamut bool into input and output transfer
functions. In most cases, the transfer functions are LINEAR,
meaning EOTF() and OETF() are no-op.
Test: manual
Change-Id: I18bfa97ffa950190b553a2ebb18f68b72ab296dd
diff --git a/services/surfaceflinger/RenderEngine/Description.h b/services/surfaceflinger/RenderEngine/Description.h
index 1811952..b0b08fe 100644
--- a/services/surfaceflinger/RenderEngine/Description.h
+++ b/services/surfaceflinger/RenderEngine/Description.h
@@ -32,6 +32,27 @@
* Program and ProgramCache are friends and access the state directly
*/
class Description {
+public:
+ Description() = default;
+ ~Description() = default;
+
+ void setPremultipliedAlpha(bool premultipliedAlpha);
+ void setOpaque(bool opaque);
+ void setTexture(const Texture& texture);
+ void disableTexture();
+ void setColor(const half4& color);
+ void setProjectionMatrix(const mat4& mtx);
+ void setColorMatrix(const mat4& mtx);
+ const mat4& getColorMatrix() const;
+
+ enum class TransferFunction : int {
+ LINEAR,
+ SRGB,
+ };
+ void setInputTransferFunction(TransferFunction transferFunction);
+ void setOutputTransferFunction(TransferFunction transferFunction);
+
+private:
friend class Program;
friend class ProgramCache;
@@ -52,21 +73,9 @@
bool mColorMatrixEnabled = false;
mat4 mColorMatrix;
- bool mIsWideGamut = false;
-
-public:
- Description() = default;
- ~Description() = default;
-
- void setPremultipliedAlpha(bool premultipliedAlpha);
- void setOpaque(bool opaque);
- void setTexture(const Texture& texture);
- void disableTexture();
- void setColor(const half4& color);
- void setProjectionMatrix(const mat4& mtx);
- void setColorMatrix(const mat4& mtx);
- const mat4& getColorMatrix() const;
- void setWideGamut(bool wideGamut);
+ // transfer functions for the input/output
+ TransferFunction mInputTransferFunction = TransferFunction::LINEAR;
+ TransferFunction mOutputTransferFunction = TransferFunction::LINEAR;
};
} /* namespace android */