Loading libs/gui/SurfaceComposerClient.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -1391,11 +1391,16 @@ void SurfaceComposerClient::Transaction::enableDebugLogCallPoints() { // --------------------------------------------------------------------------- sp<IBinder> SurfaceComposerClient::createVirtualDisplay(const std::string& displayName, bool isSecure, const std::string& uniqueId, bool isSecure, bool optimizeForPower, const std::string& uniqueId, float requestedRefreshRate) { const gui::ISurfaceComposer::OptimizationPolicy optimizationPolicy = optimizeForPower ? gui::ISurfaceComposer::OptimizationPolicy::optimizeForPower : gui::ISurfaceComposer::OptimizationPolicy::optimizeForPerformance; sp<IBinder> display = nullptr; binder::Status status = ComposerServiceAIDL::getComposerService()->createVirtualDisplay(displayName, isSecure, optimizationPolicy, uniqueId, requestedRefreshRate, &display); Loading libs/gui/aidl/android/gui/ISurfaceComposer.aidl +10 −1 Original line number Diff line number Diff line Loading @@ -67,6 +67,11 @@ interface ISurfaceComposer { frameRateOverride = 1 << 1, } enum OptimizationPolicy { optimizeForPower = 0, optimizeForPerformance = 1, } /** * Signal that we're done booting. * Requires ACCESS_SURFACE_FLINGER permission Loading Loading @@ -97,6 +102,10 @@ interface ISurfaceComposer { * The name of the virtual display. * isSecure * Whether this virtual display is secure. * optimizationPolicy * Whether to optimize for power or performance. Displays that are optimizing for power may * be dependent on a different display that optimizes for performance when they are on, * which will guarantee performance for all of the other displays. * uniqueId * The unique ID for the display. * requestedRefreshRate Loading @@ -108,7 +117,7 @@ interface ISurfaceComposer { * requires ACCESS_SURFACE_FLINGER permission. */ @nullable IBinder createVirtualDisplay(@utf8InCpp String displayName, boolean isSecure, @utf8InCpp String uniqueId, float requestedRefreshRate); OptimizationPolicy optimizationPolicy, @utf8InCpp String uniqueId, float requestedRefreshRate); /** * Destroy a virtual display. Loading libs/gui/include/gui/SurfaceComposerClient.h +1 −0 Original line number Diff line number Diff line Loading @@ -394,6 +394,7 @@ public: static const std::string kEmpty; static sp<IBinder> createVirtualDisplay(const std::string& displayName, bool isSecure, bool optimizeForPower = true, const std::string& uniqueId = kEmpty, float requestedRefreshRate = 0); Loading libs/gui/tests/Surface_test.cpp +5 −4 Original line number Diff line number Diff line Loading @@ -687,9 +687,10 @@ public: return binder::Status::ok(); } binder::Status createVirtualDisplay(const std::string& /*displayName*/, bool /*isSecure*/, const std::string& /*uniqueId*/, float /*requestedRefreshRate*/, binder::Status createVirtualDisplay( const std::string& /*displayName*/, bool /*isSecure*/, gui::ISurfaceComposer::OptimizationPolicy /*optimizationPolicy*/, const std::string& /*uniqueId*/, float /*requestedRefreshRate*/, sp<IBinder>* /*outDisplay*/) override { return binder::Status::ok(); } Loading services/surfaceflinger/DisplayDevice.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,17 @@ namespace android { namespace hal = hardware::graphics::composer::hal; namespace gui { inline std::string_view to_string(ISurfaceComposer::OptimizationPolicy optimizationPolicy) { switch (optimizationPolicy) { case ISurfaceComposer::OptimizationPolicy::optimizeForPower: return "optimizeForPower"; case ISurfaceComposer::OptimizationPolicy::optimizeForPerformance: return "optimizeForPerformance"; } } } // namespace gui DisplayDeviceCreationArgs::DisplayDeviceCreationArgs( const sp<SurfaceFlinger>& flinger, HWComposer& hwComposer, const wp<IBinder>& displayToken, std::shared_ptr<compositionengine::Display> compositionDisplay) Loading Loading @@ -283,6 +294,7 @@ void DisplayDevice::dump(utils::Dumper& dumper) const { dumper.dump("name"sv, '"' + mDisplayName + '"'); dumper.dump("powerMode"sv, mPowerMode); dumper.dump("optimizationPolicy"sv, mOptimizationPolicy); if (mRefreshRateSelector) { mRefreshRateSelector->dump(dumper); Loading @@ -305,6 +317,15 @@ void DisplayDevice::setSecure(bool secure) { mCompositionDisplay->setSecure(secure); } gui::ISurfaceComposer::OptimizationPolicy DisplayDevice::getOptimizationPolicy() const { return mOptimizationPolicy; } void DisplayDevice::setOptimizationPolicy( gui::ISurfaceComposer::OptimizationPolicy optimizationPolicy) { mOptimizationPolicy = optimizationPolicy; } const Rect DisplayDevice::getBounds() const { return mCompositionDisplay->getState().displaySpace.getBoundsAsRect(); } Loading Loading
libs/gui/SurfaceComposerClient.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -1391,11 +1391,16 @@ void SurfaceComposerClient::Transaction::enableDebugLogCallPoints() { // --------------------------------------------------------------------------- sp<IBinder> SurfaceComposerClient::createVirtualDisplay(const std::string& displayName, bool isSecure, const std::string& uniqueId, bool isSecure, bool optimizeForPower, const std::string& uniqueId, float requestedRefreshRate) { const gui::ISurfaceComposer::OptimizationPolicy optimizationPolicy = optimizeForPower ? gui::ISurfaceComposer::OptimizationPolicy::optimizeForPower : gui::ISurfaceComposer::OptimizationPolicy::optimizeForPerformance; sp<IBinder> display = nullptr; binder::Status status = ComposerServiceAIDL::getComposerService()->createVirtualDisplay(displayName, isSecure, optimizationPolicy, uniqueId, requestedRefreshRate, &display); Loading
libs/gui/aidl/android/gui/ISurfaceComposer.aidl +10 −1 Original line number Diff line number Diff line Loading @@ -67,6 +67,11 @@ interface ISurfaceComposer { frameRateOverride = 1 << 1, } enum OptimizationPolicy { optimizeForPower = 0, optimizeForPerformance = 1, } /** * Signal that we're done booting. * Requires ACCESS_SURFACE_FLINGER permission Loading Loading @@ -97,6 +102,10 @@ interface ISurfaceComposer { * The name of the virtual display. * isSecure * Whether this virtual display is secure. * optimizationPolicy * Whether to optimize for power or performance. Displays that are optimizing for power may * be dependent on a different display that optimizes for performance when they are on, * which will guarantee performance for all of the other displays. * uniqueId * The unique ID for the display. * requestedRefreshRate Loading @@ -108,7 +117,7 @@ interface ISurfaceComposer { * requires ACCESS_SURFACE_FLINGER permission. */ @nullable IBinder createVirtualDisplay(@utf8InCpp String displayName, boolean isSecure, @utf8InCpp String uniqueId, float requestedRefreshRate); OptimizationPolicy optimizationPolicy, @utf8InCpp String uniqueId, float requestedRefreshRate); /** * Destroy a virtual display. Loading
libs/gui/include/gui/SurfaceComposerClient.h +1 −0 Original line number Diff line number Diff line Loading @@ -394,6 +394,7 @@ public: static const std::string kEmpty; static sp<IBinder> createVirtualDisplay(const std::string& displayName, bool isSecure, bool optimizeForPower = true, const std::string& uniqueId = kEmpty, float requestedRefreshRate = 0); Loading
libs/gui/tests/Surface_test.cpp +5 −4 Original line number Diff line number Diff line Loading @@ -687,9 +687,10 @@ public: return binder::Status::ok(); } binder::Status createVirtualDisplay(const std::string& /*displayName*/, bool /*isSecure*/, const std::string& /*uniqueId*/, float /*requestedRefreshRate*/, binder::Status createVirtualDisplay( const std::string& /*displayName*/, bool /*isSecure*/, gui::ISurfaceComposer::OptimizationPolicy /*optimizationPolicy*/, const std::string& /*uniqueId*/, float /*requestedRefreshRate*/, sp<IBinder>* /*outDisplay*/) override { return binder::Status::ok(); } Loading
services/surfaceflinger/DisplayDevice.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,17 @@ namespace android { namespace hal = hardware::graphics::composer::hal; namespace gui { inline std::string_view to_string(ISurfaceComposer::OptimizationPolicy optimizationPolicy) { switch (optimizationPolicy) { case ISurfaceComposer::OptimizationPolicy::optimizeForPower: return "optimizeForPower"; case ISurfaceComposer::OptimizationPolicy::optimizeForPerformance: return "optimizeForPerformance"; } } } // namespace gui DisplayDeviceCreationArgs::DisplayDeviceCreationArgs( const sp<SurfaceFlinger>& flinger, HWComposer& hwComposer, const wp<IBinder>& displayToken, std::shared_ptr<compositionengine::Display> compositionDisplay) Loading Loading @@ -283,6 +294,7 @@ void DisplayDevice::dump(utils::Dumper& dumper) const { dumper.dump("name"sv, '"' + mDisplayName + '"'); dumper.dump("powerMode"sv, mPowerMode); dumper.dump("optimizationPolicy"sv, mOptimizationPolicy); if (mRefreshRateSelector) { mRefreshRateSelector->dump(dumper); Loading @@ -305,6 +317,15 @@ void DisplayDevice::setSecure(bool secure) { mCompositionDisplay->setSecure(secure); } gui::ISurfaceComposer::OptimizationPolicy DisplayDevice::getOptimizationPolicy() const { return mOptimizationPolicy; } void DisplayDevice::setOptimizationPolicy( gui::ISurfaceComposer::OptimizationPolicy optimizationPolicy) { mOptimizationPolicy = optimizationPolicy; } const Rect DisplayDevice::getBounds() const { return mCompositionDisplay->getState().displaySpace.getBoundsAsRect(); } Loading