summaryrefslogtreecommitdiff
authorTellen 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)
commit186bbb0682799a5768ec7cf00a4fb9a4dde4fb25 (patch)
treeb08c6365a2b15e2b4c42d5df50fe3de94f3e0508
parentce9e0c15993b9693c104550265803ba012bb80bf (diff)
downloadhwcomposer-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>
Diffstat
-rw-r--r--common/base/include/DrmTypes.h1
-rw-r--r--common/display/ConnectorHdmi.cpp37
-rw-r--r--hwc2/Hwc2Display.cpp6
-rw-r--r--hwc2/MesonHwc2.cpp7
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;