Loading libs/ui/include/ui/GraphicTypes.h +1 −1 Original line number Diff line number Diff line Loading @@ -25,11 +25,11 @@ namespace android { namespace ui { using android::hardware::graphics::common::V1_0::Hdr; using android::hardware::graphics::common::V1_1::PixelFormat; using android::hardware::graphics::common::V1_1::RenderIntent; using android::hardware::graphics::common::V1_2::ColorMode; using android::hardware::graphics::common::V1_2::Dataspace; using android::hardware::graphics::common::V1_2::Hdr; } // namespace ui } // namespace android services/surfaceflinger/DisplayDevice.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -239,6 +239,7 @@ DisplayDevice::DisplayDevice(DisplayDeviceCreationArgs&& args) mActiveConfig(0), mColorTransform(HAL_COLOR_TRANSFORM_IDENTITY), mHasWideColorGamut(args.hasWideColorGamut), mHasHdr10Plus(false), mHasHdr10(false), mHasHLG(false), mHasDolbyVision(false), Loading @@ -252,6 +253,9 @@ DisplayDevice::DisplayDevice(DisplayDeviceCreationArgs&& args) std::vector<Hdr> types = args.hdrCapabilities.getSupportedHdrTypes(); for (Hdr hdrType : types) { switch (hdrType) { case Hdr::HDR10_PLUS: mHasHdr10Plus = true; break; case Hdr::HDR10: mHasHdr10 = true; break; Loading Loading @@ -748,8 +752,11 @@ void DisplayDevice::dump(std::string& result) const { tr[2][1], tr[0][2], tr[1][2], tr[2][2]); auto const surface = static_cast<Surface*>(window); ui::Dataspace dataspace = surface->getBuffersDataSpace(); StringAppendF(&result, " wideColorGamut=%d, hdr10=%d, colorMode=%s, dataspace: %s (%d)\n", mHasWideColorGamut, mHasHdr10, decodeColorMode(mActiveColorMode).c_str(), StringAppendF(&result, " wideColorGamut=%d, hdr10plus =%d, hdr10=%d, colorMode=%s, dataspace: %s " "(%d)\n", mHasWideColorGamut, mHasHdr10Plus, mHasHdr10, decodeColorMode(mActiveColorMode).c_str(), dataspaceDetails(static_cast<android_dataspace>(dataspace)).c_str(), dataspace); String8 surfaceDump; Loading services/surfaceflinger/DisplayDevice.h +2 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,7 @@ public: bool hasWideColorGamut() const { return mHasWideColorGamut; } // Whether h/w composer has native support for specific HDR type. bool hasHDR10PlusSupport() const { return mHasHdr10Plus; } bool hasHDR10Support() const { return mHasHdr10; } bool hasHLGSupport() const { return mHasHLG; } bool hasDolbyVisionSupport() const { return mHasDolbyVision; } Loading Loading @@ -276,6 +277,7 @@ private: // Initialized by SurfaceFlinger when the DisplayDevice is created. // Fed to RenderEngine during composition. bool mHasWideColorGamut; bool mHasHdr10Plus; bool mHasHdr10; bool mHasHLG; bool mHasDolbyVision; Loading services/surfaceflinger/DisplayHardware/ComposerHal.cpp +76 −23 Original line number Diff line number Diff line Loading @@ -487,7 +487,8 @@ Error Composer::getHdrCapabilities(Display display, float* outMaxAverageLuminance, float* outMinLuminance) { Error error = kDefaultError; mClient->getHdrCapabilities(display, if (mClient_2_3) { mClient_2_3->getHdrCapabilities_2_3(display, [&](const auto& tmpError, const auto& tmpTypes, const auto& tmpMaxLuminance, const auto& tmpMaxAverageLuminance, Loading @@ -502,6 +503,27 @@ Error Composer::getHdrCapabilities(Display display, *outMaxAverageLuminance = tmpMaxAverageLuminance; *outMinLuminance = tmpMinLuminance; }); } else { mClient->getHdrCapabilities(display, [&](const auto& tmpError, const auto& tmpTypes, const auto& tmpMaxLuminance, const auto& tmpMaxAverageLuminance, const auto& tmpMinLuminance) { error = tmpError; if (error != Error::NONE) { return; } outTypes->clear(); for (auto type : tmpTypes) { outTypes->push_back(static_cast<Hdr>(type)); } *outMaxLuminance = tmpMaxLuminance; *outMaxAverageLuminance = tmpMaxAverageLuminance; *outMinLuminance = tmpMinLuminance; }); } return error; } Loading Loading @@ -926,15 +948,33 @@ std::vector<IComposerClient::PerFrameMetadataKey> Composer::getPerFrameMetadataK } Error error = kDefaultError; mClient_2_2->getPerFrameMetadataKeys(display, [&](const auto& tmpError, const auto& tmpKeys) { if (mClient_2_3) { mClient_2_3->getPerFrameMetadataKeys_2_3(display, [&](const auto& tmpError, const auto& tmpKeys) { error = tmpError; if (error != Error::NONE) { ALOGW("getPerFrameMetadataKeys failed " "with %d", tmpError); return; } keys = tmpKeys; }); } else { mClient_2_2 ->getPerFrameMetadataKeys(display, [&](const auto& tmpError, const auto& tmpKeys) { error = tmpError; if (error != Error::NONE) { ALOGW("getPerFrameMetadataKeys failed with %d", tmpError); return; } keys = tmpKeys; keys.clear(); for (auto key : tmpKeys) { keys.push_back(static_cast<IComposerClient::PerFrameMetadataKey>(key)); } }); } return keys; } Loading Loading @@ -1104,6 +1144,19 @@ Error Composer::getDisplayedContentSample(Display display, uint64_t maxFrames, u return error; } Error Composer::setLayerPerFrameMetadataBlobs( Display display, Layer layer, const std::vector<IComposerClient::PerFrameMetadataBlob>& metadata) { if (!mClient_2_3) { return Error::UNSUPPORTED; } mWriter.selectDisplay(display); mWriter.selectLayer(layer); mWriter.setLayerPerFrameMetadataBlobs(metadata); return Error::NONE; } CommandReader::~CommandReader() { resetData(); Loading services/surfaceflinger/DisplayHardware/ComposerHal.h +8 −1 Original line number Diff line number Diff line Loading @@ -47,12 +47,13 @@ namespace V2_2 = hardware::graphics::composer::V2_2; namespace V2_3 = hardware::graphics::composer::V2_3; using types::V1_0::ColorTransform; using types::V1_0::Hdr; using types::V1_0::Transform; using types::V1_1::PixelFormat; using types::V1_1::RenderIntent; using types::V1_2::ColorMode; using types::V1_2::Dataspace; using types::V1_2::Hdr; using V2_1::Config; using V2_1::Display; using V2_1::Error; Loading @@ -65,6 +66,7 @@ using V2_3::IComposerClient; using DisplayCapability = IComposerClient::DisplayCapability; using PerFrameMetadata = IComposerClient::PerFrameMetadata; using PerFrameMetadataKey = IComposerClient::PerFrameMetadataKey; using PerFrameMetadataBlob = IComposerClient::PerFrameMetadataBlob; class Composer { public: Loading Loading @@ -199,6 +201,8 @@ public: DisplayedFrameStats* outStats) = 0; virtual Error getDisplayCapabilities(Display display, std::vector<DisplayCapability>* outCapabilities) = 0; virtual Error setLayerPerFrameMetadataBlobs( Display display, Layer layer, const std::vector<PerFrameMetadataBlob>& metadata) = 0; }; namespace impl { Loading Loading @@ -407,6 +411,9 @@ public: DisplayedFrameStats* outStats) override; Error getDisplayCapabilities(Display display, std::vector<DisplayCapability>* outCapabilities) override; Error setLayerPerFrameMetadataBlobs( Display display, Layer layer, const std::vector<IComposerClient::PerFrameMetadataBlob>& metadata) override; private: class CommandWriter : public CommandWriterBase { Loading Loading
libs/ui/include/ui/GraphicTypes.h +1 −1 Original line number Diff line number Diff line Loading @@ -25,11 +25,11 @@ namespace android { namespace ui { using android::hardware::graphics::common::V1_0::Hdr; using android::hardware::graphics::common::V1_1::PixelFormat; using android::hardware::graphics::common::V1_1::RenderIntent; using android::hardware::graphics::common::V1_2::ColorMode; using android::hardware::graphics::common::V1_2::Dataspace; using android::hardware::graphics::common::V1_2::Hdr; } // namespace ui } // namespace android
services/surfaceflinger/DisplayDevice.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -239,6 +239,7 @@ DisplayDevice::DisplayDevice(DisplayDeviceCreationArgs&& args) mActiveConfig(0), mColorTransform(HAL_COLOR_TRANSFORM_IDENTITY), mHasWideColorGamut(args.hasWideColorGamut), mHasHdr10Plus(false), mHasHdr10(false), mHasHLG(false), mHasDolbyVision(false), Loading @@ -252,6 +253,9 @@ DisplayDevice::DisplayDevice(DisplayDeviceCreationArgs&& args) std::vector<Hdr> types = args.hdrCapabilities.getSupportedHdrTypes(); for (Hdr hdrType : types) { switch (hdrType) { case Hdr::HDR10_PLUS: mHasHdr10Plus = true; break; case Hdr::HDR10: mHasHdr10 = true; break; Loading Loading @@ -748,8 +752,11 @@ void DisplayDevice::dump(std::string& result) const { tr[2][1], tr[0][2], tr[1][2], tr[2][2]); auto const surface = static_cast<Surface*>(window); ui::Dataspace dataspace = surface->getBuffersDataSpace(); StringAppendF(&result, " wideColorGamut=%d, hdr10=%d, colorMode=%s, dataspace: %s (%d)\n", mHasWideColorGamut, mHasHdr10, decodeColorMode(mActiveColorMode).c_str(), StringAppendF(&result, " wideColorGamut=%d, hdr10plus =%d, hdr10=%d, colorMode=%s, dataspace: %s " "(%d)\n", mHasWideColorGamut, mHasHdr10Plus, mHasHdr10, decodeColorMode(mActiveColorMode).c_str(), dataspaceDetails(static_cast<android_dataspace>(dataspace)).c_str(), dataspace); String8 surfaceDump; Loading
services/surfaceflinger/DisplayDevice.h +2 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,7 @@ public: bool hasWideColorGamut() const { return mHasWideColorGamut; } // Whether h/w composer has native support for specific HDR type. bool hasHDR10PlusSupport() const { return mHasHdr10Plus; } bool hasHDR10Support() const { return mHasHdr10; } bool hasHLGSupport() const { return mHasHLG; } bool hasDolbyVisionSupport() const { return mHasDolbyVision; } Loading Loading @@ -276,6 +277,7 @@ private: // Initialized by SurfaceFlinger when the DisplayDevice is created. // Fed to RenderEngine during composition. bool mHasWideColorGamut; bool mHasHdr10Plus; bool mHasHdr10; bool mHasHLG; bool mHasDolbyVision; Loading
services/surfaceflinger/DisplayHardware/ComposerHal.cpp +76 −23 Original line number Diff line number Diff line Loading @@ -487,7 +487,8 @@ Error Composer::getHdrCapabilities(Display display, float* outMaxAverageLuminance, float* outMinLuminance) { Error error = kDefaultError; mClient->getHdrCapabilities(display, if (mClient_2_3) { mClient_2_3->getHdrCapabilities_2_3(display, [&](const auto& tmpError, const auto& tmpTypes, const auto& tmpMaxLuminance, const auto& tmpMaxAverageLuminance, Loading @@ -502,6 +503,27 @@ Error Composer::getHdrCapabilities(Display display, *outMaxAverageLuminance = tmpMaxAverageLuminance; *outMinLuminance = tmpMinLuminance; }); } else { mClient->getHdrCapabilities(display, [&](const auto& tmpError, const auto& tmpTypes, const auto& tmpMaxLuminance, const auto& tmpMaxAverageLuminance, const auto& tmpMinLuminance) { error = tmpError; if (error != Error::NONE) { return; } outTypes->clear(); for (auto type : tmpTypes) { outTypes->push_back(static_cast<Hdr>(type)); } *outMaxLuminance = tmpMaxLuminance; *outMaxAverageLuminance = tmpMaxAverageLuminance; *outMinLuminance = tmpMinLuminance; }); } return error; } Loading Loading @@ -926,15 +948,33 @@ std::vector<IComposerClient::PerFrameMetadataKey> Composer::getPerFrameMetadataK } Error error = kDefaultError; mClient_2_2->getPerFrameMetadataKeys(display, [&](const auto& tmpError, const auto& tmpKeys) { if (mClient_2_3) { mClient_2_3->getPerFrameMetadataKeys_2_3(display, [&](const auto& tmpError, const auto& tmpKeys) { error = tmpError; if (error != Error::NONE) { ALOGW("getPerFrameMetadataKeys failed " "with %d", tmpError); return; } keys = tmpKeys; }); } else { mClient_2_2 ->getPerFrameMetadataKeys(display, [&](const auto& tmpError, const auto& tmpKeys) { error = tmpError; if (error != Error::NONE) { ALOGW("getPerFrameMetadataKeys failed with %d", tmpError); return; } keys = tmpKeys; keys.clear(); for (auto key : tmpKeys) { keys.push_back(static_cast<IComposerClient::PerFrameMetadataKey>(key)); } }); } return keys; } Loading Loading @@ -1104,6 +1144,19 @@ Error Composer::getDisplayedContentSample(Display display, uint64_t maxFrames, u return error; } Error Composer::setLayerPerFrameMetadataBlobs( Display display, Layer layer, const std::vector<IComposerClient::PerFrameMetadataBlob>& metadata) { if (!mClient_2_3) { return Error::UNSUPPORTED; } mWriter.selectDisplay(display); mWriter.selectLayer(layer); mWriter.setLayerPerFrameMetadataBlobs(metadata); return Error::NONE; } CommandReader::~CommandReader() { resetData(); Loading
services/surfaceflinger/DisplayHardware/ComposerHal.h +8 −1 Original line number Diff line number Diff line Loading @@ -47,12 +47,13 @@ namespace V2_2 = hardware::graphics::composer::V2_2; namespace V2_3 = hardware::graphics::composer::V2_3; using types::V1_0::ColorTransform; using types::V1_0::Hdr; using types::V1_0::Transform; using types::V1_1::PixelFormat; using types::V1_1::RenderIntent; using types::V1_2::ColorMode; using types::V1_2::Dataspace; using types::V1_2::Hdr; using V2_1::Config; using V2_1::Display; using V2_1::Error; Loading @@ -65,6 +66,7 @@ using V2_3::IComposerClient; using DisplayCapability = IComposerClient::DisplayCapability; using PerFrameMetadata = IComposerClient::PerFrameMetadata; using PerFrameMetadataKey = IComposerClient::PerFrameMetadataKey; using PerFrameMetadataBlob = IComposerClient::PerFrameMetadataBlob; class Composer { public: Loading Loading @@ -199,6 +201,8 @@ public: DisplayedFrameStats* outStats) = 0; virtual Error getDisplayCapabilities(Display display, std::vector<DisplayCapability>* outCapabilities) = 0; virtual Error setLayerPerFrameMetadataBlobs( Display display, Layer layer, const std::vector<PerFrameMetadataBlob>& metadata) = 0; }; namespace impl { Loading Loading @@ -407,6 +411,9 @@ public: DisplayedFrameStats* outStats) override; Error getDisplayCapabilities(Display display, std::vector<DisplayCapability>* outCapabilities) override; Error setLayerPerFrameMetadataBlobs( Display display, Layer layer, const std::vector<IComposerClient::PerFrameMetadataBlob>& metadata) override; private: class CommandWriter : public CommandWriterBase { Loading