Loading libs/ui/DebugUtils.cpp +24 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ using android::base::StringPrintf; using android::ui::ColorMode; using android::ui::RenderIntent; std::string decodeStandard(android_dataspace dataspace) { const uint32_t dataspaceSelect = (dataspace & HAL_DATASPACE_STANDARD_MASK); Loading Loading @@ -229,6 +230,15 @@ std::string decodeColorMode(ColorMode colorMode) { case ColorMode::DISPLAY_P3: return std::string("ColorMode::DISPLAY_P3"); case ColorMode::BT2020: return std::string("ColorMode::BT2020"); case ColorMode::BT2100_PQ: return std::string("ColorMode::BT2100_PQ"); case ColorMode::BT2100_HLG: return std::string("ColorMode::BT2100_HLG"); } return android::base::StringPrintf("Unknown color mode %d", colorMode); Loading Loading @@ -294,6 +304,20 @@ std::string decodePixelFormat(android::PixelFormat format) { } } std::string decodeRenderIntent(RenderIntent renderIntent) { switch(renderIntent) { case RenderIntent::COLORIMETRIC: return std::string("RenderIntent::COLORIMETRIC"); case RenderIntent::ENHANCE: return std::string("RenderIntent::ENHANCE"); case RenderIntent::TONE_MAP_COLORIMETRIC: return std::string("RenderIntent::TONE_MAP_COLORIMETRIC"); case RenderIntent::TONE_MAP_ENHANCE: return std::string("RenderIntent::TONE_MAP_ENHANCE"); } return std::string("Unknown RenderIntent"); } std::string to_string(const android::Rect& rect) { return StringPrintf("(%4d,%4d,%4d,%4d)", rect.left, rect.top, rect.right, rect.bottom); } libs/ui/include/ui/DebugUtils.h +1 −0 Original line number Diff line number Diff line Loading @@ -32,4 +32,5 @@ std::string dataspaceDetails(android_dataspace dataspace); std::string decodeColorMode(android::ui::ColorMode colormode); std::string decodeColorTransform(android_color_transform colorTransform); std::string decodePixelFormat(android::PixelFormat format); std::string decodeRenderIntent(android::ui::RenderIntent renderIntent); std::string to_string(const android::Rect& rect); libs/ui/include/ui/GraphicTypes.h +2 −1 Original line number Diff line number Diff line Loading @@ -24,9 +24,10 @@ namespace android { namespace ui { using android::hardware::graphics::common::V1_0::ColorMode; using android::hardware::graphics::common::V1_1::ColorMode; using android::hardware::graphics::common::V1_1::Dataspace; using android::hardware::graphics::common::V1_1::PixelFormat; using android::hardware::graphics::common::V1_1::RenderIntent; } // namespace ui } // namespace android services/surfaceflinger/DisplayHardware/ComposerHal.cpp +131 −62 Original line number Diff line number Diff line Loading @@ -350,7 +350,9 @@ Error Composer::getColorModes(Display display, std::vector<ColorMode>* outModes) { Error error = kDefaultError; mClient->getColorModes(display, if (mClient_2_2) { mClient_2_2->getColorModes_2_2(display, [&](const auto& tmpError, const auto& tmpModes) { error = tmpError; if (error != Error::NONE) { Loading @@ -359,6 +361,18 @@ Error Composer::getColorModes(Display display, *outModes = tmpModes; }); } else { mClient->getColorModes(display, [&](const auto& tmpError, const auto& tmpModes) { error = tmpError; if (error != Error::NONE) { return; } for (V1_0::ColorMode colorMode : tmpModes) { outModes->push_back(static_cast<ColorMode>(colorMode)); } }); } return error; } Loading Loading @@ -479,25 +493,6 @@ Error Composer::getHdrCapabilities(Display display, return error; } Error Composer::getPerFrameMetadataKeys( Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) { if (!mClient_2_2) { return Error::UNSUPPORTED; } Error error = kDefaultError; mClient_2_2->getPerFrameMetadataKeys(display, [&](const auto& tmpError, const auto& tmpKeys) { error = tmpError; if (error != Error::NONE) { return; } *outKeys = tmpKeys; }); return error; } Error Composer::getReleaseFences(Display display, std::vector<Layer>* outLayers, std::vector<int>* outReleaseFences) { Loading Loading @@ -553,9 +548,16 @@ Error Composer::setClientTarget(Display display, uint32_t slot, return Error::NONE; } Error Composer::setColorMode(Display display, ColorMode mode) Error Composer::setColorMode(Display display, ColorMode mode, RenderIntent renderIntent) { auto ret = mClient->setColorMode(display, mode); hardware::Return<Error> ret(kDefaultError); if (mClient_2_2) { ret = mClient_2_2->setColorMode_2_2(display, mode, renderIntent); } else { ret = mClient->setColorMode(display, static_cast<V1_0::ColorMode>(mode)); } return unwrapRet(ret); } Loading Loading @@ -862,8 +864,8 @@ Error Composer::execute() } Error error = kDefaultError; auto ret = mClient->executeCommands(commandLength, commandHandles, [&](const auto& tmpError, const auto& tmpOutChanged, hardware::Return<void> ret; auto hidl_callback = [&](const auto& tmpError, const auto& tmpOutChanged, const auto& tmpOutLength, const auto& tmpOutHandles) { error = tmpError; Loading Loading @@ -894,7 +896,12 @@ Error Composer::execute() } else { error = Error::NO_RESOURCES; } }); }; if (mClient_2_2) { ret = mClient_2_2->executeCommands_2_2(commandLength, commandHandles, hidl_callback); } else { ret = mClient->executeCommands(commandLength, commandHandles, hidl_callback); } // executeCommands can fail because of out-of-fd and we do not want to // abort() in that case if (!ret.isOk()) { Loading Loading @@ -925,6 +932,68 @@ Error Composer::execute() return error; } // Composer HAL 2.2 Error Composer::getPerFrameMetadataKeys( Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) { if (!mClient_2_2) { return Error::UNSUPPORTED; } Error error = kDefaultError; mClient_2_2->getPerFrameMetadataKeys(display, [&](const auto& tmpError, const auto& tmpKeys) { error = tmpError; if (error != Error::NONE) { return; } *outKeys = tmpKeys; }); return error; } Error Composer::getRenderIntents(Display display, ColorMode colorMode, std::vector<RenderIntent>* outRenderIntents) { if (!mClient_2_2) { outRenderIntents->push_back(RenderIntent::COLORIMETRIC); return Error::NONE; } Error error = kDefaultError; mClient_2_2->getRenderIntents(display, colorMode, [&](const auto& tmpError, const auto& tmpKeys) { error = tmpError; if (error != Error::NONE) { return; } *outRenderIntents = tmpKeys; }); return error; } Error Composer::getDataspaceSaturationMatrix(Dataspace dataspace, mat4* outMatrix) { if (!mClient_2_2) { *outMatrix = mat4(); return Error::NONE; } Error error = kDefaultError; mClient_2_2->getDataspaceSaturationMatrix(dataspace, [&](const auto& tmpError, const auto& tmpMatrix) { error = tmpError; if (error != Error::NONE) { return; } *outMatrix = mat4(tmpMatrix.data()); }); return error; } CommandReader::~CommandReader() { resetData(); Loading services/surfaceflinger/DisplayHardware/ComposerHal.h +19 −9 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ #include <android/hardware/graphics/composer/2.2/IComposerClient.h> #include <composer-command-buffer/2.2/ComposerCommandBuffer.h> #include <gui/HdrMetadata.h> #include <math/mat4.h> #include <ui/GraphicBuffer.h> #include <utils/StrongPointer.h> Loading @@ -38,12 +39,13 @@ namespace Hwc2 { using android::frameworks::vr::composer::V1_0::IVrComposerClient; using android::hardware::graphics::common::V1_0::ColorMode; using android::hardware::graphics::common::V1_0::ColorTransform; using android::hardware::graphics::common::V1_0::Hdr; using android::hardware::graphics::common::V1_0::Transform; using android::hardware::graphics::common::V1_1::ColorMode; using android::hardware::graphics::common::V1_1::Dataspace; using android::hardware::graphics::common::V1_1::PixelFormat; using android::hardware::graphics::common::V1_1::RenderIntent; using android::hardware::graphics::composer::V2_1::Config; using android::hardware::graphics::composer::V2_1::Display; Loading Loading @@ -114,9 +116,6 @@ public: float* outMaxLuminance, float* outMaxAverageLuminance, float* outMinLuminance) = 0; virtual Error getPerFrameMetadataKeys( Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) = 0; virtual Error getReleaseFences(Display display, std::vector<Layer>* outLayers, std::vector<int>* outReleaseFences) = 0; Loading @@ -132,7 +131,7 @@ public: virtual Error setClientTarget(Display display, uint32_t slot, const sp<GraphicBuffer>& target, int acquireFence, Dataspace dataspace, const std::vector<IComposerClient::Rect>& damage) = 0; virtual Error setColorMode(Display display, ColorMode mode) = 0; virtual Error setColorMode(Display display, ColorMode mode, RenderIntent renderIntent) = 0; virtual Error setColorTransform(Display display, const float* matrix, ColorTransform hint) = 0; virtual Error setOutputBuffer(Display display, const native_handle_t* buffer, int releaseFence) = 0; Loading Loading @@ -175,6 +174,13 @@ public: const std::vector<IComposerClient::Rect>& visible) = 0; virtual Error setLayerZOrder(Display display, Layer layer, uint32_t z) = 0; virtual Error setLayerInfo(Display display, Layer layer, uint32_t type, uint32_t appId) = 0; // Composer HAL 2.2 virtual Error getPerFrameMetadataKeys( Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) = 0; virtual Error getRenderIntents(Display display, ColorMode colorMode, std::vector<RenderIntent>* outRenderIntents) = 0; virtual Error getDataspaceSaturationMatrix(Dataspace dataspace, mat4* outMatrix) = 0; }; namespace impl { Loading Loading @@ -306,9 +312,6 @@ public: Error getHdrCapabilities(Display display, std::vector<Hdr>* outTypes, float* outMaxLuminance, float* outMaxAverageLuminance, float* outMinLuminance) override; Error getPerFrameMetadataKeys( Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) override; Error getReleaseFences(Display display, std::vector<Layer>* outLayers, std::vector<int>* outReleaseFences) override; Loading @@ -324,7 +327,7 @@ public: Error setClientTarget(Display display, uint32_t slot, const sp<GraphicBuffer>& target, int acquireFence, Dataspace dataspace, const std::vector<IComposerClient::Rect>& damage) override; Error setColorMode(Display display, ColorMode mode) override; Error setColorMode(Display display, ColorMode mode, RenderIntent renderIntent) override; Error setColorTransform(Display display, const float* matrix, ColorTransform hint) override; Error setOutputBuffer(Display display, const native_handle_t* buffer, int releaseFence) override; Loading Loading @@ -364,6 +367,13 @@ public: Error setLayerZOrder(Display display, Layer layer, uint32_t z) override; Error setLayerInfo(Display display, Layer layer, uint32_t type, uint32_t appId) override; // Composer HAL 2.2 Error getPerFrameMetadataKeys( Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) override; Error getRenderIntents(Display display, ColorMode colorMode, std::vector<RenderIntent>* outRenderIntents) override; Error getDataspaceSaturationMatrix(Dataspace dataspace, mat4* outMatrix) override; private: class CommandWriter : public CommandWriterBase { public: Loading Loading
libs/ui/DebugUtils.cpp +24 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ using android::base::StringPrintf; using android::ui::ColorMode; using android::ui::RenderIntent; std::string decodeStandard(android_dataspace dataspace) { const uint32_t dataspaceSelect = (dataspace & HAL_DATASPACE_STANDARD_MASK); Loading Loading @@ -229,6 +230,15 @@ std::string decodeColorMode(ColorMode colorMode) { case ColorMode::DISPLAY_P3: return std::string("ColorMode::DISPLAY_P3"); case ColorMode::BT2020: return std::string("ColorMode::BT2020"); case ColorMode::BT2100_PQ: return std::string("ColorMode::BT2100_PQ"); case ColorMode::BT2100_HLG: return std::string("ColorMode::BT2100_HLG"); } return android::base::StringPrintf("Unknown color mode %d", colorMode); Loading Loading @@ -294,6 +304,20 @@ std::string decodePixelFormat(android::PixelFormat format) { } } std::string decodeRenderIntent(RenderIntent renderIntent) { switch(renderIntent) { case RenderIntent::COLORIMETRIC: return std::string("RenderIntent::COLORIMETRIC"); case RenderIntent::ENHANCE: return std::string("RenderIntent::ENHANCE"); case RenderIntent::TONE_MAP_COLORIMETRIC: return std::string("RenderIntent::TONE_MAP_COLORIMETRIC"); case RenderIntent::TONE_MAP_ENHANCE: return std::string("RenderIntent::TONE_MAP_ENHANCE"); } return std::string("Unknown RenderIntent"); } std::string to_string(const android::Rect& rect) { return StringPrintf("(%4d,%4d,%4d,%4d)", rect.left, rect.top, rect.right, rect.bottom); }
libs/ui/include/ui/DebugUtils.h +1 −0 Original line number Diff line number Diff line Loading @@ -32,4 +32,5 @@ std::string dataspaceDetails(android_dataspace dataspace); std::string decodeColorMode(android::ui::ColorMode colormode); std::string decodeColorTransform(android_color_transform colorTransform); std::string decodePixelFormat(android::PixelFormat format); std::string decodeRenderIntent(android::ui::RenderIntent renderIntent); std::string to_string(const android::Rect& rect);
libs/ui/include/ui/GraphicTypes.h +2 −1 Original line number Diff line number Diff line Loading @@ -24,9 +24,10 @@ namespace android { namespace ui { using android::hardware::graphics::common::V1_0::ColorMode; using android::hardware::graphics::common::V1_1::ColorMode; using android::hardware::graphics::common::V1_1::Dataspace; using android::hardware::graphics::common::V1_1::PixelFormat; using android::hardware::graphics::common::V1_1::RenderIntent; } // namespace ui } // namespace android
services/surfaceflinger/DisplayHardware/ComposerHal.cpp +131 −62 Original line number Diff line number Diff line Loading @@ -350,7 +350,9 @@ Error Composer::getColorModes(Display display, std::vector<ColorMode>* outModes) { Error error = kDefaultError; mClient->getColorModes(display, if (mClient_2_2) { mClient_2_2->getColorModes_2_2(display, [&](const auto& tmpError, const auto& tmpModes) { error = tmpError; if (error != Error::NONE) { Loading @@ -359,6 +361,18 @@ Error Composer::getColorModes(Display display, *outModes = tmpModes; }); } else { mClient->getColorModes(display, [&](const auto& tmpError, const auto& tmpModes) { error = tmpError; if (error != Error::NONE) { return; } for (V1_0::ColorMode colorMode : tmpModes) { outModes->push_back(static_cast<ColorMode>(colorMode)); } }); } return error; } Loading Loading @@ -479,25 +493,6 @@ Error Composer::getHdrCapabilities(Display display, return error; } Error Composer::getPerFrameMetadataKeys( Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) { if (!mClient_2_2) { return Error::UNSUPPORTED; } Error error = kDefaultError; mClient_2_2->getPerFrameMetadataKeys(display, [&](const auto& tmpError, const auto& tmpKeys) { error = tmpError; if (error != Error::NONE) { return; } *outKeys = tmpKeys; }); return error; } Error Composer::getReleaseFences(Display display, std::vector<Layer>* outLayers, std::vector<int>* outReleaseFences) { Loading Loading @@ -553,9 +548,16 @@ Error Composer::setClientTarget(Display display, uint32_t slot, return Error::NONE; } Error Composer::setColorMode(Display display, ColorMode mode) Error Composer::setColorMode(Display display, ColorMode mode, RenderIntent renderIntent) { auto ret = mClient->setColorMode(display, mode); hardware::Return<Error> ret(kDefaultError); if (mClient_2_2) { ret = mClient_2_2->setColorMode_2_2(display, mode, renderIntent); } else { ret = mClient->setColorMode(display, static_cast<V1_0::ColorMode>(mode)); } return unwrapRet(ret); } Loading Loading @@ -862,8 +864,8 @@ Error Composer::execute() } Error error = kDefaultError; auto ret = mClient->executeCommands(commandLength, commandHandles, [&](const auto& tmpError, const auto& tmpOutChanged, hardware::Return<void> ret; auto hidl_callback = [&](const auto& tmpError, const auto& tmpOutChanged, const auto& tmpOutLength, const auto& tmpOutHandles) { error = tmpError; Loading Loading @@ -894,7 +896,12 @@ Error Composer::execute() } else { error = Error::NO_RESOURCES; } }); }; if (mClient_2_2) { ret = mClient_2_2->executeCommands_2_2(commandLength, commandHandles, hidl_callback); } else { ret = mClient->executeCommands(commandLength, commandHandles, hidl_callback); } // executeCommands can fail because of out-of-fd and we do not want to // abort() in that case if (!ret.isOk()) { Loading Loading @@ -925,6 +932,68 @@ Error Composer::execute() return error; } // Composer HAL 2.2 Error Composer::getPerFrameMetadataKeys( Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) { if (!mClient_2_2) { return Error::UNSUPPORTED; } Error error = kDefaultError; mClient_2_2->getPerFrameMetadataKeys(display, [&](const auto& tmpError, const auto& tmpKeys) { error = tmpError; if (error != Error::NONE) { return; } *outKeys = tmpKeys; }); return error; } Error Composer::getRenderIntents(Display display, ColorMode colorMode, std::vector<RenderIntent>* outRenderIntents) { if (!mClient_2_2) { outRenderIntents->push_back(RenderIntent::COLORIMETRIC); return Error::NONE; } Error error = kDefaultError; mClient_2_2->getRenderIntents(display, colorMode, [&](const auto& tmpError, const auto& tmpKeys) { error = tmpError; if (error != Error::NONE) { return; } *outRenderIntents = tmpKeys; }); return error; } Error Composer::getDataspaceSaturationMatrix(Dataspace dataspace, mat4* outMatrix) { if (!mClient_2_2) { *outMatrix = mat4(); return Error::NONE; } Error error = kDefaultError; mClient_2_2->getDataspaceSaturationMatrix(dataspace, [&](const auto& tmpError, const auto& tmpMatrix) { error = tmpError; if (error != Error::NONE) { return; } *outMatrix = mat4(tmpMatrix.data()); }); return error; } CommandReader::~CommandReader() { resetData(); Loading
services/surfaceflinger/DisplayHardware/ComposerHal.h +19 −9 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ #include <android/hardware/graphics/composer/2.2/IComposerClient.h> #include <composer-command-buffer/2.2/ComposerCommandBuffer.h> #include <gui/HdrMetadata.h> #include <math/mat4.h> #include <ui/GraphicBuffer.h> #include <utils/StrongPointer.h> Loading @@ -38,12 +39,13 @@ namespace Hwc2 { using android::frameworks::vr::composer::V1_0::IVrComposerClient; using android::hardware::graphics::common::V1_0::ColorMode; using android::hardware::graphics::common::V1_0::ColorTransform; using android::hardware::graphics::common::V1_0::Hdr; using android::hardware::graphics::common::V1_0::Transform; using android::hardware::graphics::common::V1_1::ColorMode; using android::hardware::graphics::common::V1_1::Dataspace; using android::hardware::graphics::common::V1_1::PixelFormat; using android::hardware::graphics::common::V1_1::RenderIntent; using android::hardware::graphics::composer::V2_1::Config; using android::hardware::graphics::composer::V2_1::Display; Loading Loading @@ -114,9 +116,6 @@ public: float* outMaxLuminance, float* outMaxAverageLuminance, float* outMinLuminance) = 0; virtual Error getPerFrameMetadataKeys( Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) = 0; virtual Error getReleaseFences(Display display, std::vector<Layer>* outLayers, std::vector<int>* outReleaseFences) = 0; Loading @@ -132,7 +131,7 @@ public: virtual Error setClientTarget(Display display, uint32_t slot, const sp<GraphicBuffer>& target, int acquireFence, Dataspace dataspace, const std::vector<IComposerClient::Rect>& damage) = 0; virtual Error setColorMode(Display display, ColorMode mode) = 0; virtual Error setColorMode(Display display, ColorMode mode, RenderIntent renderIntent) = 0; virtual Error setColorTransform(Display display, const float* matrix, ColorTransform hint) = 0; virtual Error setOutputBuffer(Display display, const native_handle_t* buffer, int releaseFence) = 0; Loading Loading @@ -175,6 +174,13 @@ public: const std::vector<IComposerClient::Rect>& visible) = 0; virtual Error setLayerZOrder(Display display, Layer layer, uint32_t z) = 0; virtual Error setLayerInfo(Display display, Layer layer, uint32_t type, uint32_t appId) = 0; // Composer HAL 2.2 virtual Error getPerFrameMetadataKeys( Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) = 0; virtual Error getRenderIntents(Display display, ColorMode colorMode, std::vector<RenderIntent>* outRenderIntents) = 0; virtual Error getDataspaceSaturationMatrix(Dataspace dataspace, mat4* outMatrix) = 0; }; namespace impl { Loading Loading @@ -306,9 +312,6 @@ public: Error getHdrCapabilities(Display display, std::vector<Hdr>* outTypes, float* outMaxLuminance, float* outMaxAverageLuminance, float* outMinLuminance) override; Error getPerFrameMetadataKeys( Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) override; Error getReleaseFences(Display display, std::vector<Layer>* outLayers, std::vector<int>* outReleaseFences) override; Loading @@ -324,7 +327,7 @@ public: Error setClientTarget(Display display, uint32_t slot, const sp<GraphicBuffer>& target, int acquireFence, Dataspace dataspace, const std::vector<IComposerClient::Rect>& damage) override; Error setColorMode(Display display, ColorMode mode) override; Error setColorMode(Display display, ColorMode mode, RenderIntent renderIntent) override; Error setColorTransform(Display display, const float* matrix, ColorTransform hint) override; Error setOutputBuffer(Display display, const native_handle_t* buffer, int releaseFence) override; Loading Loading @@ -364,6 +367,13 @@ public: Error setLayerZOrder(Display display, Layer layer, uint32_t z) override; Error setLayerInfo(Display display, Layer layer, uint32_t type, uint32_t appId) override; // Composer HAL 2.2 Error getPerFrameMetadataKeys( Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) override; Error getRenderIntents(Display display, ColorMode colorMode, std::vector<RenderIntent>* outRenderIntents) override; Error getDataspaceSaturationMatrix(Dataspace dataspace, mat4* outMatrix) override; private: class CommandWriter : public CommandWriterBase { public: Loading