[SurfaceFlinger] Plumb getPerFrameMetadataKeys and setLayerPerFrameMetadata.
am: 2c327ac284
Change-Id: Ia6dae40504d8add71614ed76fc293878cbff7394
diff --git a/services/surfaceflinger/BufferLayer.cpp b/services/surfaceflinger/BufferLayer.cpp
index 57f474b..7fd9d01 100644
--- a/services/surfaceflinger/BufferLayer.cpp
+++ b/services/surfaceflinger/BufferLayer.cpp
@@ -650,7 +650,7 @@
}
const HdrMetadata& metadata = mConsumer->getCurrentHdrMetadata();
- error = hwcLayer->setHdrMetadata(metadata);
+ error = hwcLayer->setPerFrameMetadata(displayDevice->getSupportedPerFrameMetadata(), metadata);
if (error != HWC2::Error::None && error != HWC2::Error::Unsupported) {
ALOGE("[%s] Failed to set hdrMetadata: %s (%d)", mName.string(),
to_string(error).c_str(), static_cast<int32_t>(error));
diff --git a/services/surfaceflinger/DisplayDevice.cpp b/services/surfaceflinger/DisplayDevice.cpp
index cd41662..7c6302e 100644
--- a/services/surfaceflinger/DisplayDevice.cpp
+++ b/services/surfaceflinger/DisplayDevice.cpp
@@ -79,6 +79,7 @@
int displayHeight,
bool hasWideColorGamut,
const HdrCapabilities& hdrCapabilities,
+ const int32_t supportedPerFrameMetadata,
int initialPowerMode)
: lastCompositionHadVisibleLayers(false),
mFlinger(flinger),
@@ -103,7 +104,8 @@
mHasWideColorGamut(hasWideColorGamut),
mHasHdr10(false),
mHasHLG(false),
- mHasDolbyVision(false)
+ mHasDolbyVision(false),
+ mSupportedPerFrameMetadata(supportedPerFrameMetadata)
{
// clang-format on
for (Hdr hdrType : hdrCapabilities.getSupportedHdrTypes()) {
diff --git a/services/surfaceflinger/DisplayDevice.h b/services/surfaceflinger/DisplayDevice.h
index cd0bed6..df5d945 100644
--- a/services/surfaceflinger/DisplayDevice.h
+++ b/services/surfaceflinger/DisplayDevice.h
@@ -23,17 +23,16 @@
#include <math/mat4.h>
-#include <ui/Region.h>
-
#include <binder/IBinder.h>
+#include <gui/ISurfaceComposer.h>
+#include <hardware/hwcomposer_defs.h>
+#include <ui/GraphicTypes.h>
+#include <ui/Region.h>
#include <utils/RefBase.h>
#include <utils/Mutex.h>
#include <utils/String8.h>
#include <utils/Timers.h>
-#include <gui/ISurfaceComposer.h>
-#include <hardware/hwcomposer_defs.h>
-#include <ui/GraphicTypes.h>
#include "RenderArea.h"
#include "RenderEngine/Surface.h"
@@ -86,6 +85,7 @@
int displayHeight,
bool hasWideColorGamut,
const HdrCapabilities& hdrCapabilities,
+ const int32_t supportedPerFrameMetadata,
int initialPowerMode);
// clang-format on
@@ -131,6 +131,8 @@
int32_t getHwcDisplayId() const { return mHwcDisplayId; }
const wp<IBinder>& getDisplayToken() const { return mDisplayToken; }
+ int32_t getSupportedPerFrameMetadata() const { return mSupportedPerFrameMetadata; }
+
// We pass in mustRecompose so we can keep VirtualDisplaySurface's state
// machine happy without actually queueing a buffer if nothing has changed
status_t beginFrame(bool mustRecompose) const;
@@ -259,6 +261,8 @@
bool mHasHdr10;
bool mHasHLG;
bool mHasDolbyVision;
+
+ const int32_t mSupportedPerFrameMetadata;
};
struct DisplayDeviceState {
diff --git a/services/surfaceflinger/DisplayHardware/ComposerHal.cpp b/services/surfaceflinger/DisplayHardware/ComposerHal.cpp
index c94c290..37ba433 100644
--- a/services/surfaceflinger/DisplayHardware/ComposerHal.cpp
+++ b/services/surfaceflinger/DisplayHardware/ComposerHal.cpp
@@ -715,48 +715,6 @@
return Error::NONE;
}
-Error Composer::setLayerHdrMetadata(Display display, Layer layer, const HdrMetadata& metadata) {
- if (!mClient_2_2) {
- return Error::UNSUPPORTED;
- }
-
- mWriter.selectDisplay(display);
- mWriter.selectLayer(layer);
-
- std::vector<IComposerClient::PerFrameMetadata> composerMetadata;
- using PerFrameMetadataKey = IComposerClient::PerFrameMetadataKey;
- if (metadata.validTypes & HdrMetadata::SMPTE2086) {
- composerMetadata
- .insert(composerMetadata.end(),
- {{PerFrameMetadataKey::DISPLAY_RED_PRIMARY_X,
- metadata.smpte2086.displayPrimaryRed.x},
- {PerFrameMetadataKey::DISPLAY_RED_PRIMARY_Y,
- metadata.smpte2086.displayPrimaryRed.y},
- {PerFrameMetadataKey::DISPLAY_GREEN_PRIMARY_X,
- metadata.smpte2086.displayPrimaryGreen.x},
- {PerFrameMetadataKey::DISPLAY_GREEN_PRIMARY_Y,
- metadata.smpte2086.displayPrimaryGreen.y},
- {PerFrameMetadataKey::DISPLAY_BLUE_PRIMARY_X,
- metadata.smpte2086.displayPrimaryBlue.x},
- {PerFrameMetadataKey::DISPLAY_BLUE_PRIMARY_Y,
- metadata.smpte2086.displayPrimaryBlue.y},
- {PerFrameMetadataKey::WHITE_POINT_X, metadata.smpte2086.whitePoint.x},
- {PerFrameMetadataKey::WHITE_POINT_Y, metadata.smpte2086.whitePoint.y},
- {PerFrameMetadataKey::MAX_LUMINANCE, metadata.smpte2086.maxLuminance},
- {PerFrameMetadataKey::MIN_LUMINANCE, metadata.smpte2086.minLuminance}});
- }
- if (metadata.validTypes & HdrMetadata::CTA861_3) {
- composerMetadata.insert(composerMetadata.end(),
- {{PerFrameMetadataKey::MAX_CONTENT_LIGHT_LEVEL,
- metadata.cta8613.maxContentLightLevel},
- {PerFrameMetadataKey::MAX_FRAME_AVERAGE_LIGHT_LEVEL,
- metadata.cta8613.maxFrameAverageLightLevel}});
- }
-
- mWriter.setLayerPerFrameMetadata(composerMetadata);
- return Error::NONE;
-}
-
Error Composer::setLayerDisplayFrame(Display display, Layer layer,
const IComposerClient::Rect& frame)
{
@@ -927,6 +885,18 @@
// Composer HAL 2.2
+Error Composer::setLayerPerFrameMetadata(Display display, Layer layer,
+ const std::vector<IComposerClient::PerFrameMetadata>& perFrameMetadatas) {
+ if (!mClient_2_2) {
+ return Error::UNSUPPORTED;
+ }
+
+ mWriter.selectDisplay(display);
+ mWriter.selectLayer(layer);
+ mWriter.setLayerPerFrameMetadata(perFrameMetadatas);
+ return Error::NONE;
+}
+
Error Composer::getPerFrameMetadataKeys(
Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) {
if (!mClient_2_2) {
diff --git a/services/surfaceflinger/DisplayHardware/ComposerHal.h b/services/surfaceflinger/DisplayHardware/ComposerHal.h
index e17fd67..beee539 100644
--- a/services/surfaceflinger/DisplayHardware/ComposerHal.h
+++ b/services/surfaceflinger/DisplayHardware/ComposerHal.h
@@ -64,6 +64,9 @@
using V2_2::IComposer;
using V2_2::IComposerClient;
+using PerFrameMetadata = IComposerClient::PerFrameMetadata;
+using PerFrameMetadataKey = IComposerClient::PerFrameMetadataKey;
+
class Composer {
public:
virtual ~Composer() = 0;
@@ -160,8 +163,6 @@
virtual Error setLayerCompositionType(Display display, Layer layer,
IComposerClient::Composition type) = 0;
virtual Error setLayerDataspace(Display display, Layer layer, Dataspace dataspace) = 0;
- virtual Error setLayerHdrMetadata(Display display, Layer layer,
- const HdrMetadata& metadata) = 0;
virtual Error setLayerDisplayFrame(Display display, Layer layer,
const IComposerClient::Rect& frame) = 0;
virtual Error setLayerPlaneAlpha(Display display, Layer layer, float alpha) = 0;
@@ -176,6 +177,9 @@
virtual Error setLayerInfo(Display display, Layer layer, uint32_t type, uint32_t appId) = 0;
// Composer HAL 2.2
+ virtual Error setLayerPerFrameMetadata(
+ Display display, Layer layer,
+ const std::vector<IComposerClient::PerFrameMetadata>& perFrameMetadatas) = 0;
virtual Error getPerFrameMetadataKeys(
Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) = 0;
virtual Error getRenderIntents(Display display, ColorMode colorMode,
@@ -353,7 +357,6 @@
Error setLayerCompositionType(Display display, Layer layer,
IComposerClient::Composition type) override;
Error setLayerDataspace(Display display, Layer layer, Dataspace dataspace) override;
- Error setLayerHdrMetadata(Display display, Layer layer, const HdrMetadata& metadata) override;
Error setLayerDisplayFrame(Display display, Layer layer,
const IComposerClient::Rect& frame) override;
Error setLayerPlaneAlpha(Display display, Layer layer, float alpha) override;
@@ -368,6 +371,9 @@
Error setLayerInfo(Display display, Layer layer, uint32_t type, uint32_t appId) override;
// Composer HAL 2.2
+ Error setLayerPerFrameMetadata(
+ Display display, Layer layer,
+ const std::vector<IComposerClient::PerFrameMetadata>& perFrameMetadatas) override;
Error getPerFrameMetadataKeys(
Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) override;
Error getRenderIntents(Display display, ColorMode colorMode,
diff --git a/services/surfaceflinger/DisplayHardware/HWC2.cpp b/services/surfaceflinger/DisplayHardware/HWC2.cpp
index 0667f8d..3947318 100644
--- a/services/surfaceflinger/DisplayHardware/HWC2.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWC2.cpp
@@ -32,6 +32,7 @@
#include <algorithm>
#include <inttypes.h>
+#include <set>
using android::Fence;
using android::FloatRect;
@@ -54,6 +55,11 @@
namespace {
+inline bool hasMetadataKey(const std::set<Hwc2::PerFrameMetadataKey>& keys,
+ const Hwc2::PerFrameMetadataKey& key) {
+ return keys.find(key) != keys.end();
+}
+
class ComposerCallbackBridge : public Hwc2::IComposerCallback {
public:
ComposerCallbackBridge(ComposerCallback* callback, int32_t sequenceId)
@@ -370,6 +376,42 @@
return static_cast<Error>(intError);
}
+Error Display::getSupportedPerFrameMetadata(int32_t* outSupportedPerFrameMetadata) const
+{
+ *outSupportedPerFrameMetadata = 0;
+ std::vector<Hwc2::PerFrameMetadataKey> tmpKeys;
+ auto intError = mComposer.getPerFrameMetadataKeys(mId, &tmpKeys);
+ auto error = static_cast<Error>(intError);
+ if (error != Error::None) {
+ return error;
+ }
+
+ // Check whether a specific metadata type is supported. A metadata type is considered
+ // supported if and only if all required fields are supported.
+
+ // SMPTE2086
+ std::set<Hwc2::PerFrameMetadataKey> keys(tmpKeys.begin(), tmpKeys.end());
+ if (hasMetadataKey(keys, Hwc2::PerFrameMetadataKey::DISPLAY_RED_PRIMARY_X) &&
+ hasMetadataKey(keys, Hwc2::PerFrameMetadataKey::DISPLAY_RED_PRIMARY_Y) &&
+ hasMetadataKey(keys, Hwc2::PerFrameMetadataKey::DISPLAY_GREEN_PRIMARY_X) &&
+ hasMetadataKey(keys, Hwc2::PerFrameMetadataKey::DISPLAY_GREEN_PRIMARY_Y) &&
+ hasMetadataKey(keys, Hwc2::PerFrameMetadataKey::DISPLAY_BLUE_PRIMARY_X) &&
+ hasMetadataKey(keys, Hwc2::PerFrameMetadataKey::DISPLAY_BLUE_PRIMARY_Y) &&
+ hasMetadataKey(keys, Hwc2::PerFrameMetadataKey::WHITE_POINT_X) &&
+ hasMetadataKey(keys, Hwc2::PerFrameMetadataKey::WHITE_POINT_Y) &&
+ hasMetadataKey(keys, Hwc2::PerFrameMetadataKey::MAX_LUMINANCE) &&
+ hasMetadataKey(keys, Hwc2::PerFrameMetadataKey::MIN_LUMINANCE)) {
+ *outSupportedPerFrameMetadata |= HdrMetadata::Type::SMPTE2086;
+ }
+ // CTA861_3
+ if (hasMetadataKey(keys, Hwc2::PerFrameMetadataKey::MAX_CONTENT_LIGHT_LEVEL) &&
+ hasMetadataKey(keys, Hwc2::PerFrameMetadataKey::MAX_FRAME_AVERAGE_LIGHT_LEVEL)) {
+ *outSupportedPerFrameMetadata |= HdrMetadata::Type::CTA861_3;
+ }
+
+ return Error::None;
+}
+
Error Display::getRenderIntents(ColorMode colorMode,
std::vector<RenderIntent>* outRenderIntents) const
{
@@ -784,13 +826,49 @@
return static_cast<Error>(intError);
}
-Error Layer::setHdrMetadata(const android::HdrMetadata& metadata) {
+Error Layer::setPerFrameMetadata(const int32_t supportedPerFrameMetadata,
+ const android::HdrMetadata& metadata)
+{
if (metadata == mHdrMetadata) {
return Error::None;
}
mHdrMetadata = metadata;
- auto intError = mComposer.setLayerHdrMetadata(mDisplayId, mId, metadata);
+ int validTypes = mHdrMetadata.validTypes & supportedPerFrameMetadata;
+ std::vector<Hwc2::PerFrameMetadata> perFrameMetadatas;
+ if (validTypes & HdrMetadata::SMPTE2086) {
+ perFrameMetadatas.insert(perFrameMetadatas.end(),
+ {{Hwc2::PerFrameMetadataKey::DISPLAY_RED_PRIMARY_X,
+ mHdrMetadata.smpte2086.displayPrimaryRed.x},
+ {Hwc2::PerFrameMetadataKey::DISPLAY_RED_PRIMARY_Y,
+ mHdrMetadata.smpte2086.displayPrimaryRed.y},
+ {Hwc2::PerFrameMetadataKey::DISPLAY_GREEN_PRIMARY_X,
+ mHdrMetadata.smpte2086.displayPrimaryGreen.x},
+ {Hwc2::PerFrameMetadataKey::DISPLAY_GREEN_PRIMARY_Y,
+ mHdrMetadata.smpte2086.displayPrimaryGreen.y},
+ {Hwc2::PerFrameMetadataKey::DISPLAY_BLUE_PRIMARY_X,
+ mHdrMetadata.smpte2086.displayPrimaryBlue.x},
+ {Hwc2::PerFrameMetadataKey::DISPLAY_BLUE_PRIMARY_Y,
+ mHdrMetadata.smpte2086.displayPrimaryBlue.y},
+ {Hwc2::PerFrameMetadataKey::WHITE_POINT_X,
+ mHdrMetadata.smpte2086.whitePoint.x},
+ {Hwc2::PerFrameMetadataKey::WHITE_POINT_Y,
+ mHdrMetadata.smpte2086.whitePoint.y},
+ {Hwc2::PerFrameMetadataKey::MAX_LUMINANCE,
+ mHdrMetadata.smpte2086.maxLuminance},
+ {Hwc2::PerFrameMetadataKey::MIN_LUMINANCE,
+ mHdrMetadata.smpte2086.minLuminance}});
+ }
+
+ if (validTypes & HdrMetadata::CTA861_3) {
+ perFrameMetadatas.insert(perFrameMetadatas.end(),
+ {{Hwc2::PerFrameMetadataKey::MAX_CONTENT_LIGHT_LEVEL,
+ mHdrMetadata.cta8613.maxContentLightLevel},
+ {Hwc2::PerFrameMetadataKey::MAX_FRAME_AVERAGE_LIGHT_LEVEL,
+ mHdrMetadata.cta8613.maxFrameAverageLightLevel}});
+ }
+
+ auto intError = mComposer.setLayerPerFrameMetadata(mDisplayId, mId, perFrameMetadatas);
return static_cast<Error>(intError);
}
diff --git a/services/surfaceflinger/DisplayHardware/HWC2.h b/services/surfaceflinger/DisplayHardware/HWC2.h
index aa907ea..3ac06ec 100644
--- a/services/surfaceflinger/DisplayHardware/HWC2.h
+++ b/services/surfaceflinger/DisplayHardware/HWC2.h
@@ -27,7 +27,6 @@
#include <math/mat4.h>
#include <ui/GraphicTypes.h>
#include <ui/HdrCapabilities.h>
-
#include <utils/Log.h>
#include <utils/StrongPointer.h>
#include <utils/Timers.h>
@@ -212,6 +211,10 @@
std::unordered_map<Layer*, Composition>* outTypes);
[[clang::warn_unused_result]] Error getColorModes(
std::vector<android::ui::ColorMode>* outModes) const;
+ // outSupportedPerFrameMetadata is an opaque bitmask to the callers
+ // but contains HdrMetadata::Type::*.
+ [[clang::warn_unused_result]] Error getSupportedPerFrameMetadata(
+ int32_t* outSupportedPerFrameMetadata) const;
[[clang::warn_unused_result]] Error getRenderIntents(
android::ui::ColorMode colorMode,
std::vector<android::ui::RenderIntent>* outRenderIntents) const;
@@ -318,7 +321,9 @@
[[clang::warn_unused_result]] Error setCompositionType(Composition type);
[[clang::warn_unused_result]] Error setDataspace(
android::ui::Dataspace dataspace);
- [[clang::warn_unused_result]] Error setHdrMetadata(const android::HdrMetadata& metadata);
+ [[clang::warn_unused_result]] Error setPerFrameMetadata(
+ const int32_t supportedPerFrameMetadata,
+ const android::HdrMetadata& metadata);
[[clang::warn_unused_result]] Error setDisplayFrame(
const android::Rect& frame);
[[clang::warn_unused_result]] Error setPlaneAlpha(float alpha);
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
index 0a3ac84..1bbf039 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
@@ -842,6 +842,25 @@
return NO_ERROR;
}
+int32_t HWComposer::getSupportedPerFrameMetadata(int32_t displayId) const {
+ if (!isValidDisplay(displayId)) {
+ ALOGE("getPerFrameMetadataKeys: Attempted to access invalid display %d",
+ displayId);
+ return 0;
+ }
+
+ int32_t supportedMetadata;
+ auto error = mDisplayData[displayId].hwcDisplay->getSupportedPerFrameMetadata(
+ &supportedMetadata);
+ if (error != HWC2::Error::None) {
+ ALOGE("getPerFrameMetadataKeys failed for display %d: %s (%d)", displayId,
+ to_string(error).c_str(), static_cast<int32_t>(error));
+ return 0;
+ }
+
+ return supportedMetadata;
+}
+
std::vector<ui::RenderIntent> HWComposer::getRenderIntents(int32_t displayId,
ui::ColorMode colorMode) const {
if (!isValidDisplay(displayId)) {
@@ -853,7 +872,7 @@
std::vector<ui::RenderIntent> renderIntents;
auto error = mDisplayData[displayId].hwcDisplay->getRenderIntents(colorMode, &renderIntents);
if (error != HWC2::Error::None) {
- ALOGE("getColorModes failed for display %d: %s (%d)", displayId,
+ ALOGE("getRenderIntents failed for display %d: %s (%d)", displayId,
to_string(error).c_str(), static_cast<int32_t>(error));
return std::vector<ui::RenderIntent>();
}
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.h b/services/surfaceflinger/DisplayHardware/HWComposer.h
index 138e1f1..d7f3b08 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.h
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.h
@@ -24,7 +24,6 @@
#include <ui/Fence.h>
#include <ui/GraphicTypes.h>
-
#include <utils/BitSet.h>
#include <utils/Condition.h>
#include <utils/Mutex.h>
@@ -137,6 +136,8 @@
// Fetches the HDR capabilities of the given display
status_t getHdrCapabilities(int32_t displayId, HdrCapabilities* outCapabilities);
+ int32_t getSupportedPerFrameMetadata(int32_t displayId) const;
+
// Returns the available RenderIntent of the given display.
std::vector<ui::RenderIntent> getRenderIntents(int32_t displayId, ui::ColorMode colorMode) const;
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 58e4fbe..e661f03 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -2314,7 +2314,9 @@
sp<DisplayDevice> hw =
new DisplayDevice(this, state.type, hwcId, state.isSecure, display, nativeWindow,
dispSurface, std::move(renderSurface), displayWidth, displayHeight,
- hasWideColorGamut, hdrCapabilities, initialPowerMode);
+ hasWideColorGamut, hdrCapabilities,
+ getHwComposer().getSupportedPerFrameMetadata(hwcId),
+ initialPowerMode);
if (maxFrameBufferAcquiredBuffers >= 3) {
nativeWindowSurface->preallocateBuffers();
diff --git a/services/surfaceflinger/tests/hwc2/Android.bp b/services/surfaceflinger/tests/hwc2/Android.bp
index 6c0e4ab..0957d6a 100644
--- a/services/surfaceflinger/tests/hwc2/Android.bp
+++ b/services/surfaceflinger/tests/hwc2/Android.bp
@@ -41,7 +41,6 @@
"libmath",
],
shared_libs: [
- "android.hardware.graphics.common@1.0",
"android.hardware.graphics.common@1.1",
"libcutils",
"libEGL",
diff --git a/services/surfaceflinger/tests/unittests/DisplayTransactionTest.cpp b/services/surfaceflinger/tests/unittests/DisplayTransactionTest.cpp
index 7257b46..f39ca00 100644
--- a/services/surfaceflinger/tests/unittests/DisplayTransactionTest.cpp
+++ b/services/surfaceflinger/tests/unittests/DisplayTransactionTest.cpp
@@ -80,7 +80,7 @@
sp<DisplayDevice> build() {
return new DisplayDevice(mFlinger.mFlinger.get(), mType, mHwcId, false, mDisplayToken,
mNativeWindow, mDisplaySurface, std::move(mRenderSurface), 0,
- 0, false, {}, HWC_POWER_MODE_NORMAL);
+ 0, false, {}, 0, HWC_POWER_MODE_NORMAL);
}
FakeDisplayDeviceFactory& setNativeWindow(const sp<ANativeWindow>& nativeWindow) {
diff --git a/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockComposer.h b/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockComposer.h
index 8be2779..267670a 100644
--- a/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockComposer.h
+++ b/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockComposer.h
@@ -99,7 +99,8 @@
MOCK_METHOD3(setLayerColor, Error(Display, Layer, const IComposerClient::Color&));
MOCK_METHOD3(setLayerCompositionType, Error(Display, Layer, IComposerClient::Composition));
MOCK_METHOD3(setLayerDataspace, Error(Display, Layer, Dataspace));
- MOCK_METHOD3(setLayerHdrMetadata, Error(Display, Layer, const HdrMetadata&));
+ MOCK_METHOD3(setLayerPerFrameMetadata,
+ Error(Display, Layer, const std::vector<IComposerClient::PerFrameMetadata>&));
MOCK_METHOD3(setLayerDisplayFrame, Error(Display, Layer, const IComposerClient::Rect&));
MOCK_METHOD3(setLayerPlaneAlpha, Error(Display, Layer, float));
MOCK_METHOD3(setLayerSidebandStream, Error(Display, Layer, const native_handle_t*));