Loading libs/vr/libvrflinger/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ sharedLibraries = [ "android.hardware.graphics.composer@2.1", "android.hardware.graphics.composer@2.2", "android.hardware.graphics.composer@2.3", "android.hardware.graphics.composer@2.4", "libbinder", "libbase", "libbufferhubqueue", Loading services/surfaceflinger/Android.bp +2 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ cc_defaults { "android.hardware.graphics.composer@2.1", "android.hardware.graphics.composer@2.2", "android.hardware.graphics.composer@2.3", "android.hardware.graphics.composer@2.4", "android.hardware.power@1.0", "android.hardware.power@1.3", "libbase", Loading Loading @@ -92,6 +93,7 @@ cc_defaults { "android.hardware.graphics.composer@2.1", "android.hardware.graphics.composer@2.2", "android.hardware.graphics.composer@2.3", "android.hardware.graphics.composer@2.4", "android.hardware.power@1.3", "libhidlbase", ], Loading services/surfaceflinger/CompositionEngine/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ cc_defaults { "android.hardware.graphics.composer@2.1", "android.hardware.graphics.composer@2.2", "android.hardware.graphics.composer@2.3", "android.hardware.graphics.composer@2.4", "android.hardware.power@1.0", "android.hardware.power@1.3", "libbase", Loading services/surfaceflinger/DisplayHardware/ComposerHal.cpp +67 −36 Original line number Diff line number Diff line Loading @@ -17,9 +17,11 @@ #undef LOG_TAG #define LOG_TAG "HwcComposer" #include <inttypes.h> #include <log/log.h> #include <algorithm> #include <cinttypes> #include "ComposerHal.h" #include <composer-command-buffer/2.2/ComposerCommandBuffer.h> Loading Loading @@ -173,7 +175,16 @@ Composer::Composer(const std::string& serviceName) LOG_ALWAYS_FATAL("failed to get hwcomposer service"); } if (sp<IComposer> composer_2_3 = IComposer::castFrom(mComposer)) { if (sp<IComposer> composer_2_4 = IComposer::castFrom(mComposer)) { composer_2_4->createClient_2_4([&](const auto& tmpError, const auto& tmpClient) { if (tmpError == Error::NONE) { mClient = tmpClient; mClient_2_2 = tmpClient; mClient_2_3 = tmpClient; mClient_2_4 = tmpClient; } }); } else if (sp<V2_3::IComposer> composer_2_3 = V2_3::IComposer::castFrom(mComposer)) { composer_2_3->createClient_2_3([&](const auto& tmpError, const auto& tmpClient) { if (tmpError == Error::NONE) { mClient = tmpClient; Loading Loading @@ -456,23 +467,6 @@ Error Composer::getDisplayRequests(Display display, return Error::NONE; } Error Composer::getDisplayType(Display display, IComposerClient::DisplayType* outType) { Error error = kDefaultError; mClient->getDisplayType(display, [&](const auto& tmpError, const auto& tmpType) { error = tmpError; if (error != Error::NONE) { return; } *outType = tmpType; }); return error; } Error Composer::getDozeSupport(Display display, bool* outSupport) { Error error = kDefaultError; Loading Loading @@ -1113,23 +1107,6 @@ Error Composer::getDisplayedContentSamplingAttributes(Display display, PixelForm return error; } Error Composer::getDisplayCapabilities(Display display, std::vector<DisplayCapability>* outCapabilities) { if (!mClient_2_3) { return Error::UNSUPPORTED; } Error error = kDefaultError; mClient_2_3->getDisplayCapabilities(display, [&](const auto& tmpError, const auto& tmpCapabilities) { error = tmpError; if (error != Error::NONE) { return; } *outCapabilities = tmpCapabilities; }); return error; } Error Composer::setDisplayContentSamplingEnabled(Display display, bool enabled, uint8_t componentMask, uint64_t maxFrames) { if (!mClient_2_3) { Loading Loading @@ -1187,6 +1164,60 @@ Error Composer::setDisplayBrightness(Display display, float brightness) { return mClient_2_3->setDisplayBrightness(display, brightness); } // Composer HAL 2.4 Error Composer::getDisplayCapabilities(Display display, std::vector<DisplayCapability>* outCapabilities) { if (!mClient_2_3) { return Error::UNSUPPORTED; } Error error = kDefaultError; if (mClient_2_4) { mClient_2_4->getDisplayCapabilities_2_4(display, [&](const auto& tmpError, const auto& tmpCaps) { error = tmpError; if (error != Error::NONE) { return; } *outCapabilities = tmpCaps; }); } else { mClient_2_3 ->getDisplayCapabilities(display, [&](const auto& tmpError, const auto& tmpCaps) { error = tmpError; if (error != Error::NONE) { return; } outCapabilities->resize(tmpCaps.size()); std::transform(tmpCaps.begin(), tmpCaps.end(), outCapabilities->begin(), [](auto cap) { return static_cast<DisplayCapability>(cap); }); }); } return error; } Error Composer::getDisplayConnectionType(Display display, IComposerClient::DisplayConnectionType* outType) { if (!mClient_2_4) { return Error::UNSUPPORTED; } Error error = kDefaultError; mClient_2_4->getDisplayConnectionType(display, [&](const auto& tmpError, const auto& tmpType) { error = tmpError; if (error != Error::NONE) { return; } *outType = tmpType; }); return error; } CommandReader::~CommandReader() { resetData(); Loading services/surfaceflinger/DisplayHardware/ComposerHal.h +19 −11 Original line number Diff line number Diff line Loading @@ -27,8 +27,8 @@ #include <android/frameworks/vr/composer/2.0/IVrComposerClient.h> #endif // defined(USE_VR_COMPOSER) && USE_VR_COMPOSER #include <android/hardware/graphics/common/1.1/types.h> #include <android/hardware/graphics/composer/2.3/IComposer.h> #include <android/hardware/graphics/composer/2.3/IComposerClient.h> #include <android/hardware/graphics/composer/2.4/IComposer.h> #include <android/hardware/graphics/composer/2.4/IComposerClient.h> #include <composer-command-buffer/2.3/ComposerCommandBuffer.h> #include <gui/HdrMetadata.h> #include <math/mat4.h> Loading @@ -49,6 +49,7 @@ namespace types = hardware::graphics::common; namespace V2_1 = hardware::graphics::composer::V2_1; namespace V2_2 = hardware::graphics::composer::V2_2; namespace V2_3 = hardware::graphics::composer::V2_3; namespace V2_4 = hardware::graphics::composer::V2_4; using types::V1_0::ColorTransform; using types::V1_0::Transform; Loading @@ -65,8 +66,8 @@ using V2_1::IComposerCallback; using V2_1::Layer; using V2_3::CommandReaderBase; using V2_3::CommandWriterBase; using V2_3::IComposer; using V2_3::IComposerClient; using V2_4::IComposer; using V2_4::IComposerClient; using DisplayCapability = IComposerClient::DisplayCapability; using PerFrameMetadata = IComposerClient::PerFrameMetadata; using PerFrameMetadataKey = IComposerClient::PerFrameMetadataKey; Loading Loading @@ -118,7 +119,6 @@ public: std::vector<Layer>* outLayers, std::vector<uint32_t>* outLayerRequestMasks) = 0; virtual Error getDisplayType(Display display, IComposerClient::DisplayType* outType) = 0; virtual Error getDozeSupport(Display display, bool* outSupport) = 0; virtual Error getHdrCapabilities(Display display, std::vector<Hdr>* outTypes, float* outMaxLuminance, float* outMaxAverageLuminance, Loading Loading @@ -203,11 +203,15 @@ public: uint8_t componentMask, uint64_t maxFrames) = 0; virtual Error getDisplayedContentSample(Display display, uint64_t maxFrames, uint64_t timestamp, 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; virtual Error setDisplayBrightness(Display display, float brightness) = 0; // Composer HAL 2.4 virtual Error getDisplayCapabilities(Display display, std::vector<DisplayCapability>* outCapabilities) = 0; virtual Error getDisplayConnectionType(Display display, IComposerClient::DisplayConnectionType* outType) = 0; }; namespace impl { Loading Loading @@ -334,7 +338,6 @@ public: std::vector<Layer>* outLayers, std::vector<uint32_t>* outLayerRequestMasks) override; Error getDisplayType(Display display, IComposerClient::DisplayType* outType) override; Error getDozeSupport(Display display, bool* outSupport) override; Error getHdrCapabilities(Display display, std::vector<Hdr>* outTypes, float* outMaxLuminance, float* outMaxAverageLuminance, float* outMinLuminance) override; Loading Loading @@ -414,13 +417,17 @@ public: uint64_t maxFrames) override; Error getDisplayedContentSample(Display display, uint64_t maxFrames, uint64_t timestamp, 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; Error setDisplayBrightness(Display display, float brightness) override; // Composer HAL 2.4 Error getDisplayCapabilities(Display display, std::vector<DisplayCapability>* outCapabilities) override; Error getDisplayConnectionType(Display display, IComposerClient::DisplayConnectionType* outType) override; private: #if defined(USE_VR_COMPOSER) && USE_VR_COMPOSER class CommandWriter : public CommandWriterBase { Loading Loading @@ -455,7 +462,8 @@ private: sp<V2_1::IComposerClient> mClient; sp<V2_2::IComposerClient> mClient_2_2; sp<IComposerClient> mClient_2_3; sp<V2_3::IComposerClient> mClient_2_3; sp<IComposerClient> mClient_2_4; // 64KiB minus a small space for metadata such as read/write pointers static constexpr size_t kWriterInitialSize = Loading Loading
libs/vr/libvrflinger/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ sharedLibraries = [ "android.hardware.graphics.composer@2.1", "android.hardware.graphics.composer@2.2", "android.hardware.graphics.composer@2.3", "android.hardware.graphics.composer@2.4", "libbinder", "libbase", "libbufferhubqueue", Loading
services/surfaceflinger/Android.bp +2 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ cc_defaults { "android.hardware.graphics.composer@2.1", "android.hardware.graphics.composer@2.2", "android.hardware.graphics.composer@2.3", "android.hardware.graphics.composer@2.4", "android.hardware.power@1.0", "android.hardware.power@1.3", "libbase", Loading Loading @@ -92,6 +93,7 @@ cc_defaults { "android.hardware.graphics.composer@2.1", "android.hardware.graphics.composer@2.2", "android.hardware.graphics.composer@2.3", "android.hardware.graphics.composer@2.4", "android.hardware.power@1.3", "libhidlbase", ], Loading
services/surfaceflinger/CompositionEngine/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ cc_defaults { "android.hardware.graphics.composer@2.1", "android.hardware.graphics.composer@2.2", "android.hardware.graphics.composer@2.3", "android.hardware.graphics.composer@2.4", "android.hardware.power@1.0", "android.hardware.power@1.3", "libbase", Loading
services/surfaceflinger/DisplayHardware/ComposerHal.cpp +67 −36 Original line number Diff line number Diff line Loading @@ -17,9 +17,11 @@ #undef LOG_TAG #define LOG_TAG "HwcComposer" #include <inttypes.h> #include <log/log.h> #include <algorithm> #include <cinttypes> #include "ComposerHal.h" #include <composer-command-buffer/2.2/ComposerCommandBuffer.h> Loading Loading @@ -173,7 +175,16 @@ Composer::Composer(const std::string& serviceName) LOG_ALWAYS_FATAL("failed to get hwcomposer service"); } if (sp<IComposer> composer_2_3 = IComposer::castFrom(mComposer)) { if (sp<IComposer> composer_2_4 = IComposer::castFrom(mComposer)) { composer_2_4->createClient_2_4([&](const auto& tmpError, const auto& tmpClient) { if (tmpError == Error::NONE) { mClient = tmpClient; mClient_2_2 = tmpClient; mClient_2_3 = tmpClient; mClient_2_4 = tmpClient; } }); } else if (sp<V2_3::IComposer> composer_2_3 = V2_3::IComposer::castFrom(mComposer)) { composer_2_3->createClient_2_3([&](const auto& tmpError, const auto& tmpClient) { if (tmpError == Error::NONE) { mClient = tmpClient; Loading Loading @@ -456,23 +467,6 @@ Error Composer::getDisplayRequests(Display display, return Error::NONE; } Error Composer::getDisplayType(Display display, IComposerClient::DisplayType* outType) { Error error = kDefaultError; mClient->getDisplayType(display, [&](const auto& tmpError, const auto& tmpType) { error = tmpError; if (error != Error::NONE) { return; } *outType = tmpType; }); return error; } Error Composer::getDozeSupport(Display display, bool* outSupport) { Error error = kDefaultError; Loading Loading @@ -1113,23 +1107,6 @@ Error Composer::getDisplayedContentSamplingAttributes(Display display, PixelForm return error; } Error Composer::getDisplayCapabilities(Display display, std::vector<DisplayCapability>* outCapabilities) { if (!mClient_2_3) { return Error::UNSUPPORTED; } Error error = kDefaultError; mClient_2_3->getDisplayCapabilities(display, [&](const auto& tmpError, const auto& tmpCapabilities) { error = tmpError; if (error != Error::NONE) { return; } *outCapabilities = tmpCapabilities; }); return error; } Error Composer::setDisplayContentSamplingEnabled(Display display, bool enabled, uint8_t componentMask, uint64_t maxFrames) { if (!mClient_2_3) { Loading Loading @@ -1187,6 +1164,60 @@ Error Composer::setDisplayBrightness(Display display, float brightness) { return mClient_2_3->setDisplayBrightness(display, brightness); } // Composer HAL 2.4 Error Composer::getDisplayCapabilities(Display display, std::vector<DisplayCapability>* outCapabilities) { if (!mClient_2_3) { return Error::UNSUPPORTED; } Error error = kDefaultError; if (mClient_2_4) { mClient_2_4->getDisplayCapabilities_2_4(display, [&](const auto& tmpError, const auto& tmpCaps) { error = tmpError; if (error != Error::NONE) { return; } *outCapabilities = tmpCaps; }); } else { mClient_2_3 ->getDisplayCapabilities(display, [&](const auto& tmpError, const auto& tmpCaps) { error = tmpError; if (error != Error::NONE) { return; } outCapabilities->resize(tmpCaps.size()); std::transform(tmpCaps.begin(), tmpCaps.end(), outCapabilities->begin(), [](auto cap) { return static_cast<DisplayCapability>(cap); }); }); } return error; } Error Composer::getDisplayConnectionType(Display display, IComposerClient::DisplayConnectionType* outType) { if (!mClient_2_4) { return Error::UNSUPPORTED; } Error error = kDefaultError; mClient_2_4->getDisplayConnectionType(display, [&](const auto& tmpError, const auto& tmpType) { error = tmpError; if (error != Error::NONE) { return; } *outType = tmpType; }); return error; } CommandReader::~CommandReader() { resetData(); Loading
services/surfaceflinger/DisplayHardware/ComposerHal.h +19 −11 Original line number Diff line number Diff line Loading @@ -27,8 +27,8 @@ #include <android/frameworks/vr/composer/2.0/IVrComposerClient.h> #endif // defined(USE_VR_COMPOSER) && USE_VR_COMPOSER #include <android/hardware/graphics/common/1.1/types.h> #include <android/hardware/graphics/composer/2.3/IComposer.h> #include <android/hardware/graphics/composer/2.3/IComposerClient.h> #include <android/hardware/graphics/composer/2.4/IComposer.h> #include <android/hardware/graphics/composer/2.4/IComposerClient.h> #include <composer-command-buffer/2.3/ComposerCommandBuffer.h> #include <gui/HdrMetadata.h> #include <math/mat4.h> Loading @@ -49,6 +49,7 @@ namespace types = hardware::graphics::common; namespace V2_1 = hardware::graphics::composer::V2_1; namespace V2_2 = hardware::graphics::composer::V2_2; namespace V2_3 = hardware::graphics::composer::V2_3; namespace V2_4 = hardware::graphics::composer::V2_4; using types::V1_0::ColorTransform; using types::V1_0::Transform; Loading @@ -65,8 +66,8 @@ using V2_1::IComposerCallback; using V2_1::Layer; using V2_3::CommandReaderBase; using V2_3::CommandWriterBase; using V2_3::IComposer; using V2_3::IComposerClient; using V2_4::IComposer; using V2_4::IComposerClient; using DisplayCapability = IComposerClient::DisplayCapability; using PerFrameMetadata = IComposerClient::PerFrameMetadata; using PerFrameMetadataKey = IComposerClient::PerFrameMetadataKey; Loading Loading @@ -118,7 +119,6 @@ public: std::vector<Layer>* outLayers, std::vector<uint32_t>* outLayerRequestMasks) = 0; virtual Error getDisplayType(Display display, IComposerClient::DisplayType* outType) = 0; virtual Error getDozeSupport(Display display, bool* outSupport) = 0; virtual Error getHdrCapabilities(Display display, std::vector<Hdr>* outTypes, float* outMaxLuminance, float* outMaxAverageLuminance, Loading Loading @@ -203,11 +203,15 @@ public: uint8_t componentMask, uint64_t maxFrames) = 0; virtual Error getDisplayedContentSample(Display display, uint64_t maxFrames, uint64_t timestamp, 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; virtual Error setDisplayBrightness(Display display, float brightness) = 0; // Composer HAL 2.4 virtual Error getDisplayCapabilities(Display display, std::vector<DisplayCapability>* outCapabilities) = 0; virtual Error getDisplayConnectionType(Display display, IComposerClient::DisplayConnectionType* outType) = 0; }; namespace impl { Loading Loading @@ -334,7 +338,6 @@ public: std::vector<Layer>* outLayers, std::vector<uint32_t>* outLayerRequestMasks) override; Error getDisplayType(Display display, IComposerClient::DisplayType* outType) override; Error getDozeSupport(Display display, bool* outSupport) override; Error getHdrCapabilities(Display display, std::vector<Hdr>* outTypes, float* outMaxLuminance, float* outMaxAverageLuminance, float* outMinLuminance) override; Loading Loading @@ -414,13 +417,17 @@ public: uint64_t maxFrames) override; Error getDisplayedContentSample(Display display, uint64_t maxFrames, uint64_t timestamp, 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; Error setDisplayBrightness(Display display, float brightness) override; // Composer HAL 2.4 Error getDisplayCapabilities(Display display, std::vector<DisplayCapability>* outCapabilities) override; Error getDisplayConnectionType(Display display, IComposerClient::DisplayConnectionType* outType) override; private: #if defined(USE_VR_COMPOSER) && USE_VR_COMPOSER class CommandWriter : public CommandWriterBase { Loading Loading @@ -455,7 +462,8 @@ private: sp<V2_1::IComposerClient> mClient; sp<V2_2::IComposerClient> mClient_2_2; sp<IComposerClient> mClient_2_3; sp<V2_3::IComposerClient> mClient_2_3; sp<IComposerClient> mClient_2_4; // 64KiB minus a small space for metadata such as read/write pointers static constexpr size_t kWriterInitialSize = Loading