SF: Clean up plumbing for boot display mode
Avoid CE round trip, and validate API against virtual displays.
Bug: 182939859
Test: Boot
Change-Id: Ic4e14dcc06218097c65f9374f2962a345d347820
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.h b/services/surfaceflinger/DisplayHardware/HWComposer.h
index f9637f0..3dd910b 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.h
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.h
@@ -234,8 +234,16 @@
hal::VsyncPeriodChangeTimeline* outTimeline) = 0;
virtual status_t setAutoLowLatencyMode(PhysicalDisplayId, bool on) = 0;
virtual status_t getSupportedContentTypes(
- PhysicalDisplayId, std::vector<hal::ContentType>* outSupportedContentTypes) = 0;
+ PhysicalDisplayId, std::vector<hal::ContentType>* outSupportedContentTypes) const = 0;
+
+ bool supportsContentType(PhysicalDisplayId displayId, hal::ContentType type) const {
+ std::vector<hal::ContentType> types;
+ return getSupportedContentTypes(displayId, &types) == NO_ERROR &&
+ std::find(types.begin(), types.end(), type) != types.end();
+ }
+
virtual status_t setContentType(PhysicalDisplayId, hal::ContentType) = 0;
+
virtual const std::unordered_map<std::string, bool>& getSupportedLayerGenericMetadata()
const = 0;
@@ -390,7 +398,8 @@
const hal::VsyncPeriodChangeConstraints&,
hal::VsyncPeriodChangeTimeline* outTimeline) override;
status_t setAutoLowLatencyMode(PhysicalDisplayId, bool) override;
- status_t getSupportedContentTypes(PhysicalDisplayId, std::vector<hal::ContentType>*) override;
+ status_t getSupportedContentTypes(PhysicalDisplayId,
+ std::vector<hal::ContentType>*) const override;
status_t setContentType(PhysicalDisplayId, hal::ContentType) override;
const std::unordered_map<std::string, bool>& getSupportedLayerGenericMetadata() const override;