Loading libs/ui/DisplayIdentification.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -394,7 +394,8 @@ std::optional<PnpId> getPnpId(uint16_t manufacturerId) { } std::optional<DisplayIdentificationInfo> parseDisplayIdentificationData( uint8_t port, const DisplayIdentificationData& data) { uint8_t port, const DisplayIdentificationData& data, android::ScreenPartStatus screenPartStatus) { if (data.empty()) { ALOGI("Display identification data is empty."); return {}; Loading @@ -417,6 +418,7 @@ std::optional<DisplayIdentificationInfo> parseDisplayIdentificationData( .port = port, .deviceProductInfo = buildDeviceProductInfo(*edid), .preferredDetailedTimingDescriptor = edid->preferredDetailedTimingDescriptor, .screenPartStatus = screenPartStatus, }; } Loading libs/ui/include/ui/DisplayIdentification.h +1 −1 Original line number Diff line number Diff line Loading @@ -105,7 +105,7 @@ std::optional<Edid> parseEdid(const DisplayIdentificationData&); std::optional<PnpId> getPnpId(uint16_t manufacturerId); std::optional<DisplayIdentificationInfo> parseDisplayIdentificationData( uint8_t port, const DisplayIdentificationData&); uint8_t port, const DisplayIdentificationData&, android::ScreenPartStatus screenPartStatus); PhysicalDisplayId getVirtualDisplayId(uint32_t id); Loading libs/ui/tests/DisplayIdentification_test.cpp +26 −9 Original line number Diff line number Diff line Loading @@ -361,13 +361,18 @@ TEST(DisplayIdentificationTest, getPnpId) { } TEST(DisplayIdentificationTest, parseDisplayIdentificationData) { const auto primaryInfo = parseDisplayIdentificationData(0, getInternalEdid()); const auto primaryInfo = parseDisplayIdentificationData(0, getInternalEdid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(primaryInfo); const auto secondaryInfo = parseDisplayIdentificationData(1, getExternalEdid()); const auto secondaryInfo = parseDisplayIdentificationData(1, getExternalEdid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(secondaryInfo); const auto tertiaryInfo = parseDisplayIdentificationData(2, getExternalEedid()); const auto tertiaryInfo = parseDisplayIdentificationData(2, getExternalEedid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(tertiaryInfo); // Display IDs should be unique. Loading Loading @@ -398,7 +403,9 @@ TEST(DisplayIdentificationTest, deviceProductInfo) { using ModelYear = DeviceProductInfo::ModelYear; { const auto displayIdInfo = parseDisplayIdentificationData(0, getInternalEdid()); const auto displayIdInfo = parseDisplayIdentificationData(0, getInternalEdid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(displayIdInfo); ASSERT_TRUE(displayIdInfo->deviceProductInfo); const auto& info = *displayIdInfo->deviceProductInfo; Loading @@ -410,7 +417,9 @@ TEST(DisplayIdentificationTest, deviceProductInfo) { EXPECT_TRUE(info.relativeAddress.empty()); } { const auto displayIdInfo = parseDisplayIdentificationData(0, getExternalEdid()); const auto displayIdInfo = parseDisplayIdentificationData(0, getExternalEdid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(displayIdInfo); ASSERT_TRUE(displayIdInfo->deviceProductInfo); const auto& info = *displayIdInfo->deviceProductInfo; Loading @@ -424,7 +433,9 @@ TEST(DisplayIdentificationTest, deviceProductInfo) { EXPECT_TRUE(info.relativeAddress.empty()); } { const auto displayIdInfo = parseDisplayIdentificationData(0, getExternalEedid()); const auto displayIdInfo = parseDisplayIdentificationData(0, getExternalEedid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(displayIdInfo); ASSERT_TRUE(displayIdInfo->deviceProductInfo); const auto& info = *displayIdInfo->deviceProductInfo; Loading @@ -438,7 +449,9 @@ TEST(DisplayIdentificationTest, deviceProductInfo) { EXPECT_THAT(info.relativeAddress, ElementsAre(2, 0, 0, 0)); } { const auto displayIdInfo = parseDisplayIdentificationData(0, getPanasonicTvEdid()); const auto displayIdInfo = parseDisplayIdentificationData(0, getPanasonicTvEdid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(displayIdInfo); ASSERT_TRUE(displayIdInfo->deviceProductInfo); const auto& info = *displayIdInfo->deviceProductInfo; Loading @@ -451,7 +464,9 @@ TEST(DisplayIdentificationTest, deviceProductInfo) { EXPECT_THAT(info.relativeAddress, ElementsAre(2, 0, 0, 0)); } { const auto displayIdInfo = parseDisplayIdentificationData(0, getHisenseTvEdid()); const auto displayIdInfo = parseDisplayIdentificationData(0, getHisenseTvEdid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(displayIdInfo); ASSERT_TRUE(displayIdInfo->deviceProductInfo); const auto& info = *displayIdInfo->deviceProductInfo; Loading @@ -465,7 +480,9 @@ TEST(DisplayIdentificationTest, deviceProductInfo) { EXPECT_THAT(info.relativeAddress, ElementsAre(1, 2, 3, 4)); } { const auto displayIdInfo = parseDisplayIdentificationData(0, getCtlDisplayEdid()); const auto displayIdInfo = parseDisplayIdentificationData(0, getCtlDisplayEdid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(displayIdInfo); ASSERT_TRUE(displayIdInfo->deviceProductInfo); const auto& info = *displayIdInfo->deviceProductInfo; Loading services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <common/trace.h> #include <fmt/core.h> #include <log/log.h> #include <ui/DisplayIdentification.h> #include <aidl/android/hardware/graphics/composer3/BnComposerCallback.h> Loading Loading @@ -1271,7 +1272,8 @@ Error AidlComposer::getDataspaceSaturationMatrix(Dataspace dataspace, mat4* outM } Error AidlComposer::getDisplayIdentificationData(Display display, uint8_t* outPort, std::vector<uint8_t>* outData) { std::vector<uint8_t>* outData, android::ScreenPartStatus* outScreenPartStatus) { AidlDisplayIdentification displayIdentification; const auto status = mAidlComposerClient->getDisplayIdentificationData(translate<int64_t>(display), Loading @@ -1283,6 +1285,8 @@ Error AidlComposer::getDisplayIdentificationData(Display display, uint8_t* outPo *outPort = static_cast<uint8_t>(displayIdentification.port); *outData = displayIdentification.data; *outScreenPartStatus = static_cast<android::ScreenPartStatus>(displayIdentification.screenPartStatus); return Error::NONE; } Loading services/surfaceflinger/DisplayHardware/AidlComposerHal.h +3 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include "ComposerHal.h" #include <ftl/shared_mutex.h> #include <ui/DisplayIdentification.h> #include <ui/DisplayMap.h> #include <functional> Loading Loading @@ -180,7 +181,8 @@ public: // Composer HAL 2.3 Error getDisplayIdentificationData(Display display, uint8_t* outPort, std::vector<uint8_t>* outData) override; std::vector<uint8_t>* outData, android::ScreenPartStatus* outScreenPartStatus) override; Error setLayerColorTransform(Display display, Layer layer, const float* matrix) override; Error getDisplayedContentSamplingAttributes(Display display, PixelFormat* outFormat, Dataspace* outDataspace, Loading Loading
libs/ui/DisplayIdentification.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -394,7 +394,8 @@ std::optional<PnpId> getPnpId(uint16_t manufacturerId) { } std::optional<DisplayIdentificationInfo> parseDisplayIdentificationData( uint8_t port, const DisplayIdentificationData& data) { uint8_t port, const DisplayIdentificationData& data, android::ScreenPartStatus screenPartStatus) { if (data.empty()) { ALOGI("Display identification data is empty."); return {}; Loading @@ -417,6 +418,7 @@ std::optional<DisplayIdentificationInfo> parseDisplayIdentificationData( .port = port, .deviceProductInfo = buildDeviceProductInfo(*edid), .preferredDetailedTimingDescriptor = edid->preferredDetailedTimingDescriptor, .screenPartStatus = screenPartStatus, }; } Loading
libs/ui/include/ui/DisplayIdentification.h +1 −1 Original line number Diff line number Diff line Loading @@ -105,7 +105,7 @@ std::optional<Edid> parseEdid(const DisplayIdentificationData&); std::optional<PnpId> getPnpId(uint16_t manufacturerId); std::optional<DisplayIdentificationInfo> parseDisplayIdentificationData( uint8_t port, const DisplayIdentificationData&); uint8_t port, const DisplayIdentificationData&, android::ScreenPartStatus screenPartStatus); PhysicalDisplayId getVirtualDisplayId(uint32_t id); Loading
libs/ui/tests/DisplayIdentification_test.cpp +26 −9 Original line number Diff line number Diff line Loading @@ -361,13 +361,18 @@ TEST(DisplayIdentificationTest, getPnpId) { } TEST(DisplayIdentificationTest, parseDisplayIdentificationData) { const auto primaryInfo = parseDisplayIdentificationData(0, getInternalEdid()); const auto primaryInfo = parseDisplayIdentificationData(0, getInternalEdid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(primaryInfo); const auto secondaryInfo = parseDisplayIdentificationData(1, getExternalEdid()); const auto secondaryInfo = parseDisplayIdentificationData(1, getExternalEdid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(secondaryInfo); const auto tertiaryInfo = parseDisplayIdentificationData(2, getExternalEedid()); const auto tertiaryInfo = parseDisplayIdentificationData(2, getExternalEedid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(tertiaryInfo); // Display IDs should be unique. Loading Loading @@ -398,7 +403,9 @@ TEST(DisplayIdentificationTest, deviceProductInfo) { using ModelYear = DeviceProductInfo::ModelYear; { const auto displayIdInfo = parseDisplayIdentificationData(0, getInternalEdid()); const auto displayIdInfo = parseDisplayIdentificationData(0, getInternalEdid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(displayIdInfo); ASSERT_TRUE(displayIdInfo->deviceProductInfo); const auto& info = *displayIdInfo->deviceProductInfo; Loading @@ -410,7 +417,9 @@ TEST(DisplayIdentificationTest, deviceProductInfo) { EXPECT_TRUE(info.relativeAddress.empty()); } { const auto displayIdInfo = parseDisplayIdentificationData(0, getExternalEdid()); const auto displayIdInfo = parseDisplayIdentificationData(0, getExternalEdid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(displayIdInfo); ASSERT_TRUE(displayIdInfo->deviceProductInfo); const auto& info = *displayIdInfo->deviceProductInfo; Loading @@ -424,7 +433,9 @@ TEST(DisplayIdentificationTest, deviceProductInfo) { EXPECT_TRUE(info.relativeAddress.empty()); } { const auto displayIdInfo = parseDisplayIdentificationData(0, getExternalEedid()); const auto displayIdInfo = parseDisplayIdentificationData(0, getExternalEedid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(displayIdInfo); ASSERT_TRUE(displayIdInfo->deviceProductInfo); const auto& info = *displayIdInfo->deviceProductInfo; Loading @@ -438,7 +449,9 @@ TEST(DisplayIdentificationTest, deviceProductInfo) { EXPECT_THAT(info.relativeAddress, ElementsAre(2, 0, 0, 0)); } { const auto displayIdInfo = parseDisplayIdentificationData(0, getPanasonicTvEdid()); const auto displayIdInfo = parseDisplayIdentificationData(0, getPanasonicTvEdid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(displayIdInfo); ASSERT_TRUE(displayIdInfo->deviceProductInfo); const auto& info = *displayIdInfo->deviceProductInfo; Loading @@ -451,7 +464,9 @@ TEST(DisplayIdentificationTest, deviceProductInfo) { EXPECT_THAT(info.relativeAddress, ElementsAre(2, 0, 0, 0)); } { const auto displayIdInfo = parseDisplayIdentificationData(0, getHisenseTvEdid()); const auto displayIdInfo = parseDisplayIdentificationData(0, getHisenseTvEdid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(displayIdInfo); ASSERT_TRUE(displayIdInfo->deviceProductInfo); const auto& info = *displayIdInfo->deviceProductInfo; Loading @@ -465,7 +480,9 @@ TEST(DisplayIdentificationTest, deviceProductInfo) { EXPECT_THAT(info.relativeAddress, ElementsAre(1, 2, 3, 4)); } { const auto displayIdInfo = parseDisplayIdentificationData(0, getCtlDisplayEdid()); const auto displayIdInfo = parseDisplayIdentificationData(0, getCtlDisplayEdid(), android::ScreenPartStatus::UNSUPPORTED); ASSERT_TRUE(displayIdInfo); ASSERT_TRUE(displayIdInfo->deviceProductInfo); const auto& info = *displayIdInfo->deviceProductInfo; Loading
services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <common/trace.h> #include <fmt/core.h> #include <log/log.h> #include <ui/DisplayIdentification.h> #include <aidl/android/hardware/graphics/composer3/BnComposerCallback.h> Loading Loading @@ -1271,7 +1272,8 @@ Error AidlComposer::getDataspaceSaturationMatrix(Dataspace dataspace, mat4* outM } Error AidlComposer::getDisplayIdentificationData(Display display, uint8_t* outPort, std::vector<uint8_t>* outData) { std::vector<uint8_t>* outData, android::ScreenPartStatus* outScreenPartStatus) { AidlDisplayIdentification displayIdentification; const auto status = mAidlComposerClient->getDisplayIdentificationData(translate<int64_t>(display), Loading @@ -1283,6 +1285,8 @@ Error AidlComposer::getDisplayIdentificationData(Display display, uint8_t* outPo *outPort = static_cast<uint8_t>(displayIdentification.port); *outData = displayIdentification.data; *outScreenPartStatus = static_cast<android::ScreenPartStatus>(displayIdentification.screenPartStatus); return Error::NONE; } Loading
services/surfaceflinger/DisplayHardware/AidlComposerHal.h +3 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include "ComposerHal.h" #include <ftl/shared_mutex.h> #include <ui/DisplayIdentification.h> #include <ui/DisplayMap.h> #include <functional> Loading Loading @@ -180,7 +181,8 @@ public: // Composer HAL 2.3 Error getDisplayIdentificationData(Display display, uint8_t* outPort, std::vector<uint8_t>* outData) override; std::vector<uint8_t>* outData, android::ScreenPartStatus* outScreenPartStatus) override; Error setLayerColorTransform(Display display, Layer layer, const float* matrix) override; Error getDisplayedContentSamplingAttributes(Display display, PixelFormat* outFormat, Dataspace* outDataspace, Loading