diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-03-11 04:25:48 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-03-11 04:25:48 +0000 |
commit | e900332d6589dd5b25a0d5eb354ee402c55b2376 (patch) | |
tree | e40caa739e1f837f4c2ab5848c74595c05b6bb5c | |
parent | 58b5e577e66276787edc84445f9bab35debf71d0 (diff) | |
parent | e6f8ced56ecc80b00288a21576d376dc02caee7c (diff) |
Snap for 9728260 from e6f8ced56ecc80b00288a21576d376dc02caee7c to udc-release
Change-Id: If89d6769c363ddfd9f6a5dc13f7090ade595736a
-rw-r--r-- | libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp | 8 | ||||
-rw-r--r-- | libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.h | 4 |
2 files changed, 11 insertions, 1 deletions
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp index 7f565e4..6a2be7d 100644 --- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp +++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp @@ -431,7 +431,8 @@ int32_t ExynosDisplayDrmInterface::getDefaultModeId(int32_t *modeId) { return NO_ERROR; } -ExynosDisplayDrmInterface::ExynosDisplayDrmInterface(ExynosDisplay *exynosDisplay) +ExynosDisplayDrmInterface::ExynosDisplayDrmInterface(ExynosDisplay *exynosDisplay): + mMonitorDescription{0} { mType = INTERFACE_TYPE_DRM; init(exynosDisplay); @@ -2423,6 +2424,11 @@ int32_t ExynosDisplayDrmInterface::getDisplayFakeEdid(uint8_t &outPort, uint32_t edid_buf[59] = height & 0xff; edid_buf[61] = (height >> 4) & 0xf0; + if (mMonitorDescription[0] != 0) { + /* Descriptor block 3 starts at address 90, data offset is 5 bytes */ + memcpy(&edid_buf[95], mMonitorDescription.data(), mMonitorDescription.size()); + } + unsigned int sum = std::accumulate(edid_buf.begin(), edid_buf.end() - 1, 0); edid_buf[127] = (0x100 - (sum & 0xFF)) & 0xFF; if (outData) { diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.h b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.h index d3e9e66..bf5c9aa 100644 --- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.h +++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.h @@ -37,6 +37,9 @@ /* Max plane number of buffer object */ #define HWC_DRM_BO_MAX_PLANES 4 +/* Monitor Descriptor data is 13 bytes in VESA EDID Standard */ +#define MONITOR_DESCRIPTOR_DATA_LENGTH 13 + #ifndef HWC_FORCE_PANIC_PATH #define HWC_FORCE_PANIC_PATH "/d/dpu/panic" #endif @@ -492,6 +495,7 @@ class ExynosDisplayDrmInterface : DrmReadbackInfo mReadbackInfo; FramebufferManager mFBManager; + std::array<uint8_t, MONITOR_DESCRIPTOR_DATA_LENGTH> mMonitorDescription; private: int32_t getDisplayFakeEdid(uint8_t &outPort, uint32_t &outDataSize, uint8_t *outData); |