SF: use aidl Capability
Bug: 198190384
Test: SF unit tests
Change-Id: I73fe0cc15dabdd4703de068a9cebd878d76e39d7
diff --git a/services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp b/services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp
index b1057c3..d10468a 100644
--- a/services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp
+++ b/services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp
@@ -251,14 +251,14 @@
}
}
-std::vector<IComposer::Capability> AidlComposer::getCapabilities() {
+std::vector<Capability> AidlComposer::getCapabilities() {
std::vector<Capability> capabilities;
const auto status = mAidlComposer->getCapabilities(&capabilities);
if (!status.isOk()) {
ALOGE("getCapabilities failed %s", status.getDescription().c_str());
return {};
}
- return translate<IComposer::Capability>(capabilities);
+ return capabilities;
}
std::string AidlComposer::dumpDebugInfo() {
diff --git a/services/surfaceflinger/DisplayHardware/AidlComposerHal.h b/services/surfaceflinger/DisplayHardware/AidlComposerHal.h
index 374a436..a9f7606 100644
--- a/services/surfaceflinger/DisplayHardware/AidlComposerHal.h
+++ b/services/surfaceflinger/DisplayHardware/AidlComposerHal.h
@@ -60,7 +60,8 @@
bool isSupported(OptionalFeature) const;
- std::vector<IComposer::Capability> getCapabilities() override;
+ std::vector<aidl::android::hardware::graphics::composer3::Capability> getCapabilities()
+ override;
std::string dumpDebugInfo() override;
void registerCallback(HWC2::ComposerCallback& callback) override;
diff --git a/services/surfaceflinger/DisplayHardware/ComposerHal.h b/services/surfaceflinger/DisplayHardware/ComposerHal.h
index fe55e6b..5cc5a12 100644
--- a/services/surfaceflinger/DisplayHardware/ComposerHal.h
+++ b/services/surfaceflinger/DisplayHardware/ComposerHal.h
@@ -31,6 +31,7 @@
#include <ui/GraphicBuffer.h>
#include <utils/StrongPointer.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>
@@ -93,7 +94,8 @@
virtual bool isSupported(OptionalFeature) const = 0;
- virtual std::vector<IComposer::Capability> getCapabilities() = 0;
+ virtual std::vector<aidl::android::hardware::graphics::composer3::Capability>
+ getCapabilities() = 0;
virtual std::string dumpDebugInfo() = 0;
virtual void registerCallback(HWC2::ComposerCallback& callback) = 0;
diff --git a/services/surfaceflinger/DisplayHardware/HWC2.cpp b/services/surfaceflinger/DisplayHardware/HWC2.cpp
index 05e3aef..b59b333 100644
--- a/services/surfaceflinger/DisplayHardware/HWC2.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWC2.cpp
@@ -39,6 +39,7 @@
using aidl::android::hardware::graphics::composer3::Color;
using aidl::android::hardware::graphics::composer3::Composition;
+using AidlCapability = aidl::android::hardware::graphics::composer3::Capability;
using aidl::android::hardware::graphics::composer3::DisplayCapability;
namespace android {
@@ -73,7 +74,7 @@
namespace impl {
Display::Display(android::Hwc2::Composer& composer,
- const std::unordered_set<Capability>& capabilities, HWDisplayId id,
+ const std::unordered_set<AidlCapability>& capabilities, HWDisplayId id,
DisplayType type)
: mComposer(composer), mCapabilities(capabilities), mId(id), mType(type) {
ALOGV("Created display %" PRIu64, id);
@@ -470,7 +471,7 @@
} else if (error == Error::UNSUPPORTED) {
std::scoped_lock lock(mDisplayCapabilitiesMutex);
mDisplayCapabilities.emplace();
- if (mCapabilities.count(Capability::SKIP_CLIENT_COLOR_TRANSFORM)) {
+ if (mCapabilities.count(AidlCapability::SKIP_CLIENT_COLOR_TRANSFORM)) {
mDisplayCapabilities->emplace(DisplayCapability::SKIP_CLIENT_COLOR_TRANSFORM);
}
bool dozeSupport = false;
@@ -618,8 +619,9 @@
namespace impl {
-Layer::Layer(android::Hwc2::Composer& composer, const std::unordered_set<Capability>& capabilities,
- HWC2::Display& display, HWLayerId layerId)
+Layer::Layer(android::Hwc2::Composer& composer,
+ const std::unordered_set<AidlCapability>& capabilities, HWC2::Display& display,
+ HWLayerId layerId)
: mComposer(composer),
mCapabilities(capabilities),
mDisplay(&display),
@@ -849,7 +851,7 @@
return Error::BAD_DISPLAY;
}
- if (mCapabilities.count(Capability::SIDEBAND_STREAM) == 0) {
+ if (mCapabilities.count(AidlCapability::SIDEBAND_STREAM) == 0) {
ALOGE("Attempted to call setSidebandStream without checking that the "
"device supports sideband streams");
return Error::UNSUPPORTED;
diff --git a/services/surfaceflinger/DisplayHardware/HWC2.h b/services/surfaceflinger/DisplayHardware/HWC2.h
index 0a605a8..b183924 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/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>
@@ -169,8 +170,9 @@
class Display : public HWC2::Display {
public:
- Display(android::Hwc2::Composer&, const std::unordered_set<hal::Capability>&, hal::HWDisplayId,
- hal::DisplayType);
+ Display(android::Hwc2::Composer&,
+ const std::unordered_set<aidl::android::hardware::graphics::composer3::Capability>&,
+ hal::HWDisplayId, hal::DisplayType);
~Display() override;
// Required by HWC2
@@ -257,7 +259,8 @@
// this HWC2::Display, so these references are guaranteed to be valid for
// the lifetime of this object.
android::Hwc2::Composer& mComposer;
- const std::unordered_set<hal::Capability>& mCapabilities;
+ const std::unordered_set<aidl::android::hardware::graphics::composer3::Capability>&
+ mCapabilities;
const hal::HWDisplayId mId;
hal::DisplayType mType;
@@ -329,8 +332,9 @@
class Layer : public HWC2::Layer {
public:
Layer(android::Hwc2::Composer& composer,
- const std::unordered_set<hal::Capability>& capabilities, HWC2::Display& display,
- hal::HWLayerId layerId);
+ const std::unordered_set<aidl::android::hardware::graphics::composer3::Capability>&
+ capabilities,
+ HWC2::Display& display, hal::HWLayerId layerId);
~Layer() override;
void onOwningDisplayDestroyed();
@@ -373,7 +377,8 @@
// this HWC2::Layer, so these references are guaranteed to be valid for
// the lifetime of this object.
android::Hwc2::Composer& mComposer;
- const std::unordered_set<hal::Capability>& mCapabilities;
+ const std::unordered_set<aidl::android::hardware::graphics::composer3::Capability>&
+ mCapabilities;
HWC2::Display* mDisplay;
hal::HWLayerId mId;
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
index 2696bd8..0ed4ec9 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
@@ -71,6 +71,8 @@
#define RETURN_IF_HWC_ERROR(error, displayId, ...) \
RETURN_IF_HWC_ERROR_FOR(__FUNCTION__, error, displayId, __VA_ARGS__)
+using aidl::android::hardware::graphics::composer3::Capability;
+using aidl::android::hardware::graphics::composer3::DisplayCapability;
namespace hal = android::hardware::graphics::composer::hal;
namespace android {
@@ -118,13 +120,11 @@
return true;
}
-bool HWComposer::hasCapability(hal::Capability capability) const {
+bool HWComposer::hasCapability(Capability capability) const {
return mCapabilities.count(capability) > 0;
}
-bool HWComposer::hasDisplayCapability(
- HalDisplayId displayId,
- aidl::android::hardware::graphics::composer3::DisplayCapability capability) const {
+bool HWComposer::hasDisplayCapability(HalDisplayId displayId, DisplayCapability capability) const {
RETURN_IF_INVALID_DISPLAY(displayId, false);
return mDisplayData.at(displayId).hwcDisplay->hasCapability(capability);
}
@@ -952,7 +952,7 @@
static_assert(sizeof(hal::Capability) == sizeof(int32_t), "Capability size has changed");
auto capabilities = mComposer->getCapabilities();
for (auto capability : capabilities) {
- mCapabilities.emplace(static_cast<hal::Capability>(capability));
+ mCapabilities.emplace(capability);
}
}
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.h b/services/surfaceflinger/DisplayHardware/HWComposer.h
index 29335d5..1376f51 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/composer3/Capability.h>
#include <aidl/android/hardware/graphics/composer3/Composition.h>
#include <aidl/android/hardware/graphics/composer3/DisplayCapability.h>
@@ -110,7 +111,7 @@
virtual bool getDisplayIdentificationData(hal::HWDisplayId, uint8_t* outPort,
DisplayIdentificationData* outData) const = 0;
- virtual bool hasCapability(hal::Capability) const = 0;
+ virtual bool hasCapability(aidl::android::hardware::graphics::composer3::Capability) const = 0;
virtual bool hasDisplayCapability(
HalDisplayId,
aidl::android::hardware::graphics::composer3::DisplayCapability) const = 0;
@@ -277,7 +278,7 @@
bool getDisplayIdentificationData(hal::HWDisplayId, uint8_t* outPort,
DisplayIdentificationData* outData) const override;
- bool hasCapability(hal::Capability) const override;
+ bool hasCapability(aidl::android::hardware::graphics::composer3::Capability) const override;
bool hasDisplayCapability(
HalDisplayId,
aidl::android::hardware::graphics::composer3::DisplayCapability) const override;
@@ -447,7 +448,7 @@
std::unordered_map<HalDisplayId, DisplayData> mDisplayData;
std::unique_ptr<android::Hwc2::Composer> mComposer;
- std::unordered_set<hal::Capability> mCapabilities;
+ std::unordered_set<aidl::android::hardware::graphics::composer3::Capability> mCapabilities;
std::unordered_map<std::string, bool> mSupportedLayerGenericMetadata;
bool mRegisteredCallback = false;
diff --git a/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp b/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp
index 746ac64..25f03be 100644
--- a/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp
+++ b/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp
@@ -36,6 +36,7 @@
#include <algorithm>
#include <cinttypes>
+using aidl::android::hardware::graphics::composer3::Capability;
using aidl::android::hardware::graphics::composer3::DisplayCapability;
namespace android {
@@ -168,6 +169,20 @@
return unwrapRet(ret, kDefaultError);
}
+template <typename To, typename From>
+To translate(From x) {
+ return static_cast<To>(x);
+}
+
+template <typename To, typename From>
+std::vector<To> translate(const hidl_vec<From>& in) {
+ std::vector<To> out;
+ out.reserve(in.size());
+ std::transform(in.begin(), in.end(), std::back_inserter(out),
+ [](From x) { return translate<To>(x); });
+ return out;
+}
+
} // anonymous namespace
HidlComposer::HidlComposer(const std::string& serviceName) : mWriter(kWriterInitialSize) {
@@ -225,10 +240,11 @@
}
}
-std::vector<IComposer::Capability> HidlComposer::getCapabilities() {
- std::vector<IComposer::Capability> capabilities;
- mComposer->getCapabilities(
- [&](const auto& tmpCapabilities) { capabilities = tmpCapabilities; });
+std::vector<Capability> HidlComposer::getCapabilities() {
+ std::vector<Capability> capabilities;
+ mComposer->getCapabilities([&](const auto& tmpCapabilities) {
+ capabilities = translate<Capability>(tmpCapabilities);
+ });
return capabilities;
}
@@ -1101,15 +1117,6 @@
// Composer HAL 2.4
-namespace {
-template <typename T>
-void copyCapabilities(const T& tmpCaps, std::vector<DisplayCapability>* outCapabilities) {
- outCapabilities->resize(tmpCaps.size());
- std::transform(tmpCaps.begin(), tmpCaps.end(), outCapabilities->begin(),
- [](auto cap) { return static_cast<DisplayCapability>(cap); });
-}
-} // anonymous namespace
-
Error HidlComposer::getDisplayCapabilities(Display display,
std::vector<DisplayCapability>* outCapabilities) {
if (!mClient_2_3) {
@@ -1124,7 +1131,8 @@
if (error != V2_4::Error::NONE) {
return;
}
- copyCapabilities(tmpCaps, outCapabilities);
+ *outCapabilities =
+ translate<DisplayCapability>(tmpCaps);
});
} else {
mClient_2_3
@@ -1134,7 +1142,7 @@
return;
}
- copyCapabilities(tmpCaps, outCapabilities);
+ *outCapabilities = translate<DisplayCapability>(tmpCaps);
});
}
diff --git a/services/surfaceflinger/DisplayHardware/HidlComposerHal.h b/services/surfaceflinger/DisplayHardware/HidlComposerHal.h
index 1ffca6e..0f15598 100644
--- a/services/surfaceflinger/DisplayHardware/HidlComposerHal.h
+++ b/services/surfaceflinger/DisplayHardware/HidlComposerHal.h
@@ -169,7 +169,8 @@
bool isSupported(OptionalFeature) const;
- std::vector<IComposer::Capability> getCapabilities() override;
+ std::vector<aidl::android::hardware::graphics::composer3::Capability> getCapabilities()
+ override;
std::string dumpDebugInfo() override;
void registerCallback(HWC2::ComposerCallback& callback) override;