surfaceflinger: support BT2020_ITU_PQ
Games use BT2020_PQ while videos use BT2020_ITU_PQ usually. We can
support both and treat them as the same, since the YUV->RGB
conversion happens before the pixel data are uploaded to texture, or
happens inside the GLES driver.
The only caveat is that we treat RGBA1010102/BT2020_ITU_PQ from
media specially. The hack is also updated in this change.
Test: manual
Change-Id: I1e4b8e0d907af5e5a95cf7fde1a7ea67a4e7da0b
diff --git a/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp b/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp
index 323cec7..5133bac 100644
--- a/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp
+++ b/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp
@@ -326,11 +326,12 @@
if (usesWideColor()) {
Description wideColorState = mState;
- switch (mDataSpace) {
+ switch (int(mDataSpace)) {
case HAL_DATASPACE_DISPLAY_P3:
// input matches output
break;
case HAL_DATASPACE_BT2020_PQ:
+ case HAL_DATASPACE_BT2020_ITU_PQ:
wideColorState.setColorMatrix(mState.getColorMatrix() * mBt2020ToDisplayP3);
wideColorState.setInputTransferFunction(Description::TransferFunction::ST2084);
wideColorState.setOutputTransferFunction(Description::TransferFunction::SRGB);