diff options
author | 2022-02-01 15:53:54 -0500 | |
---|---|---|
committer | 2022-02-09 15:51:13 -0500 | |
commit | e7c51c66b971144cae653060c02589441cddb1ad (patch) | |
tree | 408a088695870d44b16a2942f351c022b04c0014 | |
parent | 7c60b886d46e8bf76f19c00130b9bc3d28cd2f6d (diff) |
Update native getDisplayDecorationSupport API
I27f119f927b23052c5fd8f068cbca75338fe7b91 adds new HAL APIs which
provide more detailed info regarding DISPLAY_DECORATION support. Call
the new API and plumb it up to SurfaceComposerClient.
Remove reference to old DisplayCapability.DISPLAY_DECORATION.
Bug: 216644902
Test: manual
Change-Id: I961051c0a660b596039ac04b546040764ee20d34
21 files changed, 156 insertions, 26 deletions
diff --git a/libs/gui/Android.bp b/libs/gui/Android.bp index e17b2c8af7..13c3dfd5e2 100644 --- a/libs/gui/Android.bp +++ b/libs/gui/Android.bp @@ -339,6 +339,7 @@ cc_defaults { "android.hardware.graphics.bufferqueue@2.0", "android.hardware.graphics.common@1.1", "android.hardware.graphics.common@1.2", + "android.hardware.graphics.common-V3-ndk", "android.hidl.token@1.0-utils", "libbase", "libcutils", diff --git a/libs/gui/ISurfaceComposer.cpp b/libs/gui/ISurfaceComposer.cpp index fb9ed22a33..75c5e26fb0 100644 --- a/libs/gui/ISurfaceComposer.cpp +++ b/libs/gui/ISurfaceComposer.cpp @@ -42,6 +42,8 @@ // --------------------------------------------------------------------------- +using namespace aidl::android::hardware::graphics; + namespace android { using gui::IDisplayEventConnection; @@ -1201,8 +1203,9 @@ public: return NO_ERROR; } - status_t getDisplayDecorationSupport(const sp<IBinder>& displayToken, - bool* outSupport) const override { + status_t getDisplayDecorationSupport( + const sp<IBinder>& displayToken, + std::optional<common::DisplayDecorationSupport>* outSupport) const override { Parcel data, reply; status_t error = data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); if (error != NO_ERROR) { @@ -1225,7 +1228,26 @@ public: ALOGE("getDisplayDecorationSupport: failed to read support: %d", error); return error; } - *outSupport = support; + + if (support) { + int32_t format, alphaInterpretation; + error = reply.readInt32(&format); + if (error != NO_ERROR) { + ALOGE("getDisplayDecorationSupport: failed to read format: %d", error); + return error; + } + error = reply.readInt32(&alphaInterpretation); + if (error != NO_ERROR) { + ALOGE("getDisplayDecorationSupport: failed to read alphaInterpretation: %d", error); + return error; + } + outSupport->emplace(); + outSupport->value().format = static_cast<common::PixelFormat>(format); + outSupport->value().alphaInterpretation = + static_cast<common::AlphaInterpretation>(alphaInterpretation); + } else { + outSupport->reset(); + } return NO_ERROR; } @@ -2164,14 +2186,18 @@ status_t BnSurfaceComposer::onTransact( case GET_DISPLAY_DECORATION_SUPPORT: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> displayToken; - status_t error = data.readNullableStrongBinder(&displayToken); + SAFE_PARCEL(data.readNullableStrongBinder, &displayToken); + std::optional<common::DisplayDecorationSupport> support; + auto error = getDisplayDecorationSupport(displayToken, &support); if (error != NO_ERROR) { - ALOGE("getDisplayDecorationSupport: failed to read display token: %d", error); + ALOGE("getDisplayDecorationSupport failed with error %d", error); return error; } - bool support = false; - error = getDisplayDecorationSupport(displayToken, &support); - reply->writeBool(support); + reply->writeBool(support.has_value()); + if (support) { + reply->writeInt32(static_cast<int32_t>(support.value().format)); + reply->writeInt32(static_cast<int32_t>(support.value().alphaInterpretation)); + } return error; } case SET_FRAME_RATE: { diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp index 91b2fb1c3b..ea73c6d3c3 100644 --- a/libs/gui/SurfaceComposerClient.cpp +++ b/libs/gui/SurfaceComposerClient.cpp @@ -52,6 +52,7 @@ namespace android { +using aidl::android::hardware::graphics::common::DisplayDecorationSupport; using gui::FocusRequest; using gui::IRegionSamplingListener; using gui::WindowInfo; @@ -2239,8 +2240,9 @@ status_t SurfaceComposerClient::setGlobalShadowSettings(const half4& ambientColo lightRadius); } -bool SurfaceComposerClient::getDisplayDecorationSupport(const sp<IBinder>& displayToken) { - bool support = false; +std::optional<DisplayDecorationSupport> SurfaceComposerClient::getDisplayDecorationSupport( + const sp<IBinder>& displayToken) { + std::optional<DisplayDecorationSupport> support; ComposerService::getComposerService()->getDisplayDecorationSupport(displayToken, &support); return support; } diff --git a/libs/gui/include/gui/ISurfaceComposer.h b/libs/gui/include/gui/ISurfaceComposer.h index 90b2a0e05f..0a59f52fcd 100644 --- a/libs/gui/include/gui/ISurfaceComposer.h +++ b/libs/gui/include/gui/ISurfaceComposer.h @@ -52,6 +52,8 @@ #include <unordered_set> #include <vector> +#include <aidl/android/hardware/graphics/common/DisplayDecorationSupport.h> + namespace android { struct client_cache_t; @@ -533,15 +535,17 @@ public: * displayToken * The token of the display. * outSupport - * An output parameter for whether the display supports + * An output parameter for whether/how the display supports * DISPLAY_DECORATION layers. * * Returns NO_ERROR upon success. Otherwise, * NAME_NOT_FOUND if the display is invalid, or * BAD_VALUE if the output parameter is invalid. */ - virtual status_t getDisplayDecorationSupport(const sp<IBinder>& displayToken, - bool* outSupport) const = 0; + virtual status_t getDisplayDecorationSupport( + const sp<IBinder>& displayToken, + std::optional<aidl::android::hardware::graphics::common::DisplayDecorationSupport>* + outSupport) const = 0; /* * Sets the intended frame rate for a surface. See ANativeWindow_setFrameRate() for more info. diff --git a/libs/gui/include/gui/SurfaceComposerClient.h b/libs/gui/include/gui/SurfaceComposerClient.h index 61eeab35e5..4bafa89848 100644 --- a/libs/gui/include/gui/SurfaceComposerClient.h +++ b/libs/gui/include/gui/SurfaceComposerClient.h @@ -47,6 +47,8 @@ #include <gui/WindowInfosListenerReporter.h> #include <math/vec3.h> +#include <aidl/android/hardware/graphics/common/DisplayDecorationSupport.h> + namespace android { class HdrCapabilities; @@ -285,14 +287,16 @@ public: float lightPosY, float lightPosZ, float lightRadius); /* - * Returns whether a display supports DISPLAY_DECORATION layers. + * Returns whether and how a display supports DISPLAY_DECORATION layers. * * displayToken * The token of the display. * - * Returns whether a display supports DISPLAY_DECORATION layers. + * Returns how a display supports DISPLAY_DECORATION layers, or nullopt if + * it does not. */ - static bool getDisplayDecorationSupport(const sp<IBinder>& displayToken); + static std::optional<aidl::android::hardware::graphics::common::DisplayDecorationSupport> + getDisplayDecorationSupport(const sp<IBinder>& displayToken); // ------------------------------------------------------------------------ // surface creation / destruction diff --git a/libs/gui/tests/Surface_test.cpp b/libs/gui/tests/Surface_test.cpp index 120ed48d49..605628096d 100644 --- a/libs/gui/tests/Surface_test.cpp +++ b/libs/gui/tests/Surface_test.cpp @@ -47,6 +47,7 @@ using namespace std::chrono_literals; // retrieve wide-color and hdr settings from configstore using namespace android::hardware::configstore; using namespace android::hardware::configstore::V1_0; +using aidl::android::hardware::graphics::common::DisplayDecorationSupport; using gui::IDisplayEventConnection; using gui::IRegionSamplingListener; using ui::ColorMode; @@ -889,8 +890,9 @@ public: return NO_ERROR; } - status_t getDisplayDecorationSupport(const sp<IBinder>& /*displayToken*/, - bool* /*outSupport*/) const override { + status_t getDisplayDecorationSupport( + const sp<IBinder>& /*displayToken*/, + std::optional<DisplayDecorationSupport>* /*outSupport*/) const override { return NO_ERROR; } diff --git a/services/surfaceflinger/CompositionEngine/tests/MockHWComposer.h b/services/surfaceflinger/CompositionEngine/tests/MockHWComposer.h index 8ec8f00109..719f15cdc7 100644 --- a/services/surfaceflinger/CompositionEngine/tests/MockHWComposer.h +++ b/services/surfaceflinger/CompositionEngine/tests/MockHWComposer.h @@ -129,6 +129,10 @@ public: (const, override)); MOCK_METHOD(std::optional<hal::HWDisplayId>, fromPhysicalDisplayId, (PhysicalDisplayId), (const, override)); + MOCK_METHOD2(getDisplayDecorationSupport, + status_t(PhysicalDisplayId, + std::optional<aidl::android::hardware::graphics::common:: + DisplayDecorationSupport>* support)); }; } // namespace mock diff --git a/services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp b/services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp index d10468ac6b..04723a2cbb 100644 --- a/services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp +++ b/services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp @@ -1074,5 +1074,17 @@ Error AidlComposer::setLayerBlockingRegion(Display display, Layer layer, translate<AidlRect>(blocking)); return Error::NONE; } + +Error AidlComposer::getDisplayDecorationSupport(Display display, + std::optional<DisplayDecorationSupport>* support) { + const auto status = + mAidlComposerClient->getDisplayDecorationSupport(translate<int64_t>(display), support); + if (!status.isOk()) { + ALOGE("getDisplayDecorationSupport failed %s", status.getDescription().c_str()); + support->reset(); + return static_cast<Error>(status.getServiceSpecificError()); + } + return Error::NONE; +} } // namespace Hwc2 } // namespace android diff --git a/services/surfaceflinger/DisplayHardware/AidlComposerHal.h b/services/surfaceflinger/DisplayHardware/AidlComposerHal.h index a9f76061f6..ed8049a34b 100644 --- a/services/surfaceflinger/DisplayHardware/AidlComposerHal.h +++ b/services/surfaceflinger/DisplayHardware/AidlComposerHal.h @@ -45,6 +45,7 @@ namespace android::Hwc2 { +using aidl::android::hardware::graphics::common::DisplayDecorationSupport; using aidl::android::hardware::graphics::composer3::ComposerClientReader; using aidl::android::hardware::graphics::composer3::ComposerClientWriter; @@ -217,6 +218,8 @@ public: Error setBootDisplayConfig(Display displayId, Config) override; Error clearBootDisplayConfig(Display displayId) override; Error getPreferredBootDisplayConfig(Display displayId, Config*) override; + Error getDisplayDecorationSupport(Display display, + std::optional<DisplayDecorationSupport>* support) override; private: // Many public functions above simply write a command into the command diff --git a/services/surfaceflinger/DisplayHardware/ComposerHal.h b/services/surfaceflinger/DisplayHardware/ComposerHal.h index 5cc5a1286f..2c5164d640 100644 --- a/services/surfaceflinger/DisplayHardware/ComposerHal.h +++ b/services/surfaceflinger/DisplayHardware/ComposerHal.h @@ -31,12 +31,15 @@ #include <ui/GraphicBuffer.h> #include <utils/StrongPointer.h> +#include <aidl/android/hardware/graphics/common/DisplayDecorationSupport.h> #include <aidl/android/hardware/graphics/composer3/Capability.h> #include <aidl/android/hardware/graphics/composer3/Color.h> #include <aidl/android/hardware/graphics/composer3/Composition.h> #include <aidl/android/hardware/graphics/composer3/DisplayCapability.h> #include <aidl/android/hardware/graphics/composer3/IComposerCallback.h> +#include <optional> + // TODO(b/129481165): remove the #pragma below and fix conversion issues #pragma clang diagnostic pop // ignored "-Wconversion -Wextra" @@ -267,6 +270,10 @@ public: virtual Error setBootDisplayConfig(Display displayId, Config) = 0; virtual Error clearBootDisplayConfig(Display displayId) = 0; virtual Error getPreferredBootDisplayConfig(Display displayId, Config*) = 0; + virtual Error getDisplayDecorationSupport( + Display display, + std::optional<::aidl::android::hardware::graphics::common::DisplayDecorationSupport>* + support) = 0; }; } // namespace Hwc2 diff --git a/services/surfaceflinger/DisplayHardware/HWC2.cpp b/services/surfaceflinger/DisplayHardware/HWC2.cpp index b59b333f97..50a6604eeb 100644 --- a/services/surfaceflinger/DisplayHardware/HWC2.cpp +++ b/services/surfaceflinger/DisplayHardware/HWC2.cpp @@ -581,6 +581,13 @@ Error Display::getClientTargetProperty(ClientTargetProperty* outClientTargetProp return static_cast<Error>(error); } +Error Display::getDisplayDecorationSupport( + std::optional<aidl::android::hardware::graphics::common::DisplayDecorationSupport>* + support) { + const auto error = mComposer.getDisplayDecorationSupport(mId, support); + return static_cast<Error>(error); +} + // For use by Device void Display::setConnected(bool connected) { diff --git a/services/surfaceflinger/DisplayHardware/HWC2.h b/services/surfaceflinger/DisplayHardware/HWC2.h index b1839249d9..f03aafccb9 100644 --- a/services/surfaceflinger/DisplayHardware/HWC2.h +++ b/services/surfaceflinger/DisplayHardware/HWC2.h @@ -37,6 +37,7 @@ #include "ComposerHal.h" #include "Hal.h" +#include <aidl/android/hardware/graphics/common/DisplayDecorationSupport.h> #include <aidl/android/hardware/graphics/composer3/Capability.h> #include <aidl/android/hardware/graphics/composer3/Color.h> #include <aidl/android/hardware/graphics/composer3/Composition.h> @@ -162,6 +163,9 @@ public: [[clang::warn_unused_result]] virtual hal::Error setContentType(hal::ContentType) = 0; [[clang::warn_unused_result]] virtual hal::Error getClientTargetProperty( hal::ClientTargetProperty* outClientTargetProperty, float* outWhitePointNits) = 0; + [[clang::warn_unused_result]] virtual hal::Error getDisplayDecorationSupport( + std::optional<aidl::android::hardware::graphics::common::DisplayDecorationSupport>* + support) = 0; }; namespace impl { @@ -235,6 +239,9 @@ public: hal::Error setContentType(hal::ContentType) override; hal::Error getClientTargetProperty(hal::ClientTargetProperty* outClientTargetProperty, float* outWhitePointNits) override; + hal::Error getDisplayDecorationSupport( + std::optional<aidl::android::hardware::graphics::common::DisplayDecorationSupport>* + support) override; // Other Display methods hal::HWDisplayId getId() const override { return mId; } diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp index 0ed4ec9ccc..6a3162e199 100644 --- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp +++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp @@ -785,6 +785,22 @@ std::optional<hal::HWConfigId> HWComposer::getPreferredBootDisplayMode( return displayModeId; } +status_t HWComposer::getDisplayDecorationSupport( + PhysicalDisplayId displayId, + std::optional<aidl::android::hardware::graphics::common::DisplayDecorationSupport>* + support) { + RETURN_IF_INVALID_DISPLAY(displayId, BAD_INDEX); + const auto error = mDisplayData[displayId].hwcDisplay->getDisplayDecorationSupport(support); + if (error == hal::Error::UNSUPPORTED) { + RETURN_IF_HWC_ERROR(error, displayId, INVALID_OPERATION); + } + if (error == hal::Error::BAD_PARAMETER) { + RETURN_IF_HWC_ERROR(error, displayId, BAD_VALUE); + } + RETURN_IF_HWC_ERROR(error, displayId, UNKNOWN_ERROR); + return NO_ERROR; +} + status_t HWComposer::setAutoLowLatencyMode(PhysicalDisplayId displayId, bool on) { RETURN_IF_INVALID_DISPLAY(displayId, BAD_INDEX); const auto error = mDisplayData[displayId].hwcDisplay->setAutoLowLatencyMode(on); diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.h b/services/surfaceflinger/DisplayHardware/HWComposer.h index 1376f5175e..916c4b7ac5 100644 --- a/services/surfaceflinger/DisplayHardware/HWComposer.h +++ b/services/surfaceflinger/DisplayHardware/HWComposer.h @@ -43,6 +43,7 @@ #include "HWC2.h" #include "Hal.h" +#include <aidl/android/hardware/graphics/common/DisplayDecorationSupport.h> #include <aidl/android/hardware/graphics/composer3/Capability.h> #include <aidl/android/hardware/graphics/composer3/Composition.h> #include <aidl/android/hardware/graphics/composer3/DisplayCapability.h> @@ -262,6 +263,10 @@ public: virtual status_t setBootDisplayMode(PhysicalDisplayId, hal::HWConfigId) = 0; virtual status_t clearBootDisplayMode(PhysicalDisplayId) = 0; virtual std::optional<hal::HWConfigId> getPreferredBootDisplayMode(PhysicalDisplayId) = 0; + virtual status_t getDisplayDecorationSupport( + PhysicalDisplayId, + std::optional<aidl::android::hardware::graphics::common::DisplayDecorationSupport>* + support) = 0; }; namespace impl { @@ -393,6 +398,10 @@ public: status_t setBootDisplayMode(PhysicalDisplayId, hal::HWConfigId) override; status_t clearBootDisplayMode(PhysicalDisplayId) override; std::optional<hal::HWConfigId> getPreferredBootDisplayMode(PhysicalDisplayId) override; + status_t getDisplayDecorationSupport( + PhysicalDisplayId, + std::optional<aidl::android::hardware::graphics::common::DisplayDecorationSupport>* + support) override; // for debugging ---------------------------------------------------------- void dump(std::string& out) const override; diff --git a/services/surfaceflinger/DisplayHardware/Hal.h b/services/surfaceflinger/DisplayHardware/Hal.h index 40c9761770..473703423e 100644 --- a/services/surfaceflinger/DisplayHardware/Hal.h +++ b/services/surfaceflinger/DisplayHardware/Hal.h @@ -135,8 +135,8 @@ inline std::string to_string( return "AutoLowLatencyMode"; case aidl::android::hardware::graphics::composer3::DisplayCapability::SUSPEND: return "Suspend"; - case aidl::android::hardware::graphics::composer3::DisplayCapability::DISPLAY_DECORATION: - return "DisplayDecoration"; + case aidl::android::hardware::graphics::composer3::DisplayCapability::DISPLAY_IDLE_TIMER: + return "DisplayIdleTimer"; default: return "Unknown"; } diff --git a/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp b/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp index 25f03be899..e33f1e054e 100644 --- a/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp +++ b/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp @@ -1312,6 +1312,14 @@ Error HidlComposer::setLayerBlockingRegion(Display, Layer, return Error::NONE; } +Error HidlComposer::getDisplayDecorationSupport( + Display, + std::optional<aidl::android::hardware::graphics::common::DisplayDecorationSupport>* + support) { + support->reset(); + return Error::UNSUPPORTED; +} + void HidlComposer::registerCallback(ComposerCallback& callback) { const bool vsyncSwitchingSupported = isSupported(Hwc2::Composer::OptionalFeature::RefreshRateSwitching); diff --git a/services/surfaceflinger/DisplayHardware/HidlComposerHal.h b/services/surfaceflinger/DisplayHardware/HidlComposerHal.h index 0f155980c3..6b33945772 100644 --- a/services/surfaceflinger/DisplayHardware/HidlComposerHal.h +++ b/services/surfaceflinger/DisplayHardware/HidlComposerHal.h @@ -327,6 +327,10 @@ public: Error setBootDisplayConfig(Display displayId, Config) override; Error clearBootDisplayConfig(Display displayId) override; Error getPreferredBootDisplayConfig(Display displayId, Config*) override; + Error getDisplayDecorationSupport( + Display display, + std::optional<aidl::android::hardware::graphics::common::DisplayDecorationSupport>* + support) override; private: class CommandWriter : public CommandWriterBase { diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index f99a2a3feb..4f0571f75a 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -141,6 +141,7 @@ #include "android-base/stringprintf.h" #include "android-base/strings.h" +#include <aidl/android/hardware/graphics/common/DisplayDecorationSupport.h> #include <aidl/android/hardware/graphics/composer3/DisplayCapability.h> #define MAIN_THREAD ACQUIRE(mStateLock) RELEASE(mStateLock) @@ -163,6 +164,7 @@ #define NO_THREAD_SAFETY_ANALYSIS \ _Pragma("GCC error \"Prefer MAIN_THREAD macros or {Conditional,Timed,Unnecessary}Lock.\"") +using aidl::android::hardware::graphics::common::DisplayDecorationSupport; using aidl::android::hardware::graphics::composer3::Capability; using aidl::android::hardware::graphics::composer3::DisplayCapability; @@ -1814,8 +1816,9 @@ status_t SurfaceFlinger::notifyPowerBoost(int32_t boostId) { return NO_ERROR; } -status_t SurfaceFlinger::getDisplayDecorationSupport(const sp<IBinder>& displayToken, - bool* outSupport) const { +status_t SurfaceFlinger::getDisplayDecorationSupport( + const sp<IBinder>& displayToken, + std::optional<DisplayDecorationSupport>* outSupport) const { if (!displayToken || !outSupport) { return BAD_VALUE; } @@ -1826,8 +1829,7 @@ status_t SurfaceFlinger::getDisplayDecorationSupport(const sp<IBinder>& displayT if (!displayId) { return NAME_NOT_FOUND; } - *outSupport = - getHwComposer().hasDisplayCapability(*displayId, DisplayCapability::DISPLAY_DECORATION); + getHwComposer().getDisplayDecorationSupport(*displayId, outSupport); return NO_ERROR; } diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index b95cd9118a..d262519877 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -85,6 +85,8 @@ #include <unordered_set> #include <utility> +#include <aidl/android/hardware/graphics/common/DisplayDecorationSupport.h> + using namespace android::surfaceflinger; namespace android { @@ -596,8 +598,10 @@ private: status_t notifyPowerBoost(int32_t boostId) override; status_t setGlobalShadowSettings(const half4& ambientColor, const half4& spotColor, float lightPosY, float lightPosZ, float lightRadius) override; - status_t getDisplayDecorationSupport(const sp<IBinder>& displayToken, - bool* outSupport) const override; + status_t getDisplayDecorationSupport( + const sp<IBinder>& displayToken, + std::optional<aidl::android::hardware::graphics::common::DisplayDecorationSupport>* + outSupport) const override; status_t setFrameRate(const sp<IGraphicBufferProducer>& surface, float frameRate, int8_t compatibility, int8_t changeFrameRateStrategy) override; diff --git a/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockComposer.h b/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockComposer.h index ce9ec9609c..4a7d8eb5bc 100644 --- a/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockComposer.h +++ b/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockComposer.h @@ -43,6 +43,8 @@ using android::hardware::graphics::composer::V2_1::Layer; using android::hardware::graphics::composer::V2_4::IComposerCallback; using android::hardware::graphics::composer::V2_4::IComposerClient; +using aidl::android::hardware::graphics::common::DisplayDecorationSupport; + class Composer : public Hwc2::Composer { public: using Display = android::hardware::graphics::composer::V2_1::Display; @@ -153,6 +155,8 @@ public: MOCK_METHOD3(setLayerWhitePointNits, Error(Display, Layer, float)); MOCK_METHOD3(setLayerBlockingRegion, Error(Display, Layer, const std::vector<IComposerClient::Rect>&)); + MOCK_METHOD2(getDisplayDecorationSupport, + Error(Display, std::optional<DisplayDecorationSupport>*)); }; } // namespace Hwc2::mock diff --git a/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockHWC2.h b/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockHWC2.h index 9015944f36..9be8cc7e92 100644 --- a/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockHWC2.h +++ b/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockHWC2.h @@ -95,6 +95,10 @@ public: MOCK_METHOD(hal::Error, setContentType, (hal::ContentType), (override)); MOCK_METHOD(hal::Error, getClientTargetProperty, (hal::ClientTargetProperty *, float *), (override)); + MOCK_METHOD( + hal::Error, getDisplayDecorationSupport, + (std::optional<aidl::android::hardware::graphics::common::DisplayDecorationSupport> *), + (override)); }; class Layer : public HWC2::Layer { |