author | Tellen Yu <tellen.yu@amlogic.com> | 2019-12-11 07:52:54 (GMT) |
---|---|---|
committer | sky zhou <sky.zhou@amlogic.com> | 2020-05-21 11:07:43 (GMT) |
commit | 186bbb0682799a5768ec7cf00a4fb9a4dde4fb25 (patch) | |
tree | b08c6365a2b15e2b4c42d5df50fe3de94f3e0508 | |
parent | ce9e0c15993b9693c104550265803ba012bb80bf (diff) | |
download | hwcomposer-186bbb0682799a5768ec7cf00a4fb9a4dde4fb25.zip hwcomposer-186bbb0682799a5768ec7cf00a4fb9a4dde4fb25.tar.gz hwcomposer-186bbb0682799a5768ec7cf00a4fb9a4dde4fb25.tar.bz2 |
hdr: add hdr10+ support [1/1]
PD#SWPL-18324
BUG=145978921
Problem:
We do not report hdr10+ status to framework, so
app can not get this information.
Solution:
add hdr10+ support in hwc.
Verify:
newton
Change-Id: I0a2a51ec93b975b575986a9c8895d35a2a465282
Signed-off-by: Tellen Yu <tellen.yu@amlogic.com>
-rw-r--r-- | common/base/include/DrmTypes.h | 1 | ||||
-rw-r--r-- | common/display/ConnectorHdmi.cpp | 37 | ||||
-rw-r--r-- | hwc2/Hwc2Display.cpp | 6 | ||||
-rw-r--r-- | hwc2/MesonHwc2.cpp | 7 |
4 files changed, 36 insertions, 15 deletions
diff --git a/common/base/include/DrmTypes.h b/common/base/include/DrmTypes.h index cf31b58..1900610 100644 --- a/common/base/include/DrmTypes.h +++ b/common/base/include/DrmTypes.h @@ -123,6 +123,7 @@ typedef struct drm_hdr_capabilities { bool DolbyVisionSupported; bool HLGSupported; bool HDR10Supported; + bool HDR10PlusSupported; int maxLuminance; int avgLuminance; diff --git a/common/display/ConnectorHdmi.cpp b/common/display/ConnectorHdmi.cpp index c7f7226..13a07f9 100644 --- a/common/display/ConnectorHdmi.cpp +++ b/common/display/ConnectorHdmi.cpp @@ -243,9 +243,12 @@ void ConnectorHdmi::dump(String8 & dumpstr) { dumpstr.append(" HDR Capabilities:\n"); dumpstr.appendFormat(" DolbyVision1=%d\n", mHdrCapabilities.DolbyVisionSupported ? 1 : 0); - dumpstr.appendFormat(" HDR10=%d, maxLuminance=%d," - "avgLuminance=%d, minLuminance=%d\n", + dumpstr.appendFormat(" HLG=%d\n", + mHdrCapabilities.HLGSupported ? 1 : 0); + dumpstr.appendFormat(" HDR10=%d, HDR10+=%d, " + "maxLuminance=%d, avgLuminance=%d, minLuminance=%d\n", mHdrCapabilities.HDR10Supported ? 1 : 0, + mHdrCapabilities.HDR10PlusSupported ? 1 : 0, mHdrCapabilities.maxLuminance, mHdrCapabilities.avgLuminance, mHdrCapabilities.minLuminance); @@ -278,16 +281,18 @@ int32_t ConnectorHdmi::getLineValue(const char *lineStr, const char *magicStr) { /******************************************* * cat /sys/class/amhdmitx/amhdmitx0/hdr_cap -* Supported EOTF: -* Traditional SDR: 1 -* Traditional HDR: 0 -* SMPTE ST 2084: 1 -* Hybrif Log-Gamma: 1 -* Supported SMD type1: 1 -* Luminance Data -* Max: 0 -* Avg: 0 -* Min: 0 +* HDR10Plus Supported: 1 +* HDR Static Metadata: +* Supported EOTF: +* Traditional SDR: 1 +* Traditional HDR: 0 +* SMPTE ST 2084: 1 +* Hybrif Log-Gamma: 1 +* Supported SMD type1: 1 +* Luminance Data +* Max: 0 +* Avg: 0 +* Min: 0 * cat /sys/class/amhdmitx/amhdmitx0/dv_cap * DolbyVision1 RX support list: * 2160p30hz: 1 @@ -335,6 +340,11 @@ int32_t ConnectorHdmi::parseHdrCapabilities() { goto exit; } + pos = strstr(pos, "HDR10Plus Supported: "); + if ((NULL != pos) && ('1' == *(pos + strlen("HDR10Plus Supported: ")))) { + mHdrCapabilities.HDR10PlusSupported = true; + } + pos = strstr(pos, "SMPTE ST 2084: "); if ((NULL != pos) && ('1' == *(pos + strlen("SMPTE ST 2084: ")))) { mHdrCapabilities.HDR10Supported = true; @@ -349,10 +359,11 @@ int32_t ConnectorHdmi::parseHdrCapabilities() { mHdrCapabilities.HLGSupported = true; } - MESON_LOGD("dolby version:%d, hlg:%d, hdr:%d max:%d, avg:%d, min:%d\n", + MESON_LOGD("dolby version:%d, hlg:%d, hdr10:%d, hdr10+:%d max:%d, avg:%d, min:%d\n", mHdrCapabilities.DolbyVisionSupported ? 1:0, mHdrCapabilities.HLGSupported ? 1:0, mHdrCapabilities.HDR10Supported ? 1:0, + mHdrCapabilities.HDR10PlusSupported ? 1:0, mHdrCapabilities.maxLuminance, mHdrCapabilities.avgLuminance, mHdrCapabilities.minLuminance); diff --git a/hwc2/Hwc2Display.cpp b/hwc2/Hwc2Display.cpp index 295bfe5..51a1ef6 100644 --- a/hwc2/Hwc2Display.cpp +++ b/hwc2/Hwc2Display.cpp @@ -1093,12 +1093,14 @@ void Hwc2Display::dump(String8 & dumpstr) { mHdrCaps.DolbyVisionSupported ? 1 : 0); dumpstr.appendFormat(" HLG=%d\n", mHdrCaps.HLGSupported ? 1 : 0); - dumpstr.appendFormat(" HDR10=%d, maxLuminance=%d," - "avgLuminance=%d, minLuminance=%d\n", + dumpstr.appendFormat(" HDR10=%d, HDR10+=%d, " + "maxLuminance=%d, avgLuminance=%d, minLuminance=%d\n", mHdrCaps.HDR10Supported ? 1 : 0, + mHdrCaps.HDR10PlusSupported ? 1 : 0, mHdrCaps.maxLuminance, mHdrCaps.avgLuminance, mHdrCaps.minLuminance); + dumpstr.append("\n"); /* dump display configs*/ diff --git a/hwc2/MesonHwc2.cpp b/hwc2/MesonHwc2.cpp index afc4aea..9b6f476 100644 --- a/hwc2/MesonHwc2.cpp +++ b/hwc2/MesonHwc2.cpp @@ -250,6 +250,13 @@ int32_t MesonHwc2::getHdrCapabilities(hwc2_display_t display, } } + if (caps->HDR10PlusSupported) { + *outNumTypes = *outNumTypes + 1; + if (getInfo) { + *outTypes++ = HAL_HDR_HDR10_PLUS; + } + } + if (getInfo) { *outMaxLuminance = caps->maxLuminance; *outMaxAverageLuminance = caps->avgLuminance; |