Use global capabilities for Display without a valid HWC display ID.
A display without a valid HWC id means it will always be GPU composited and it
doesn't have display capabilities. To make sure it's backward compatible, we
fallback to query global capabilities for skip client color transform in this
case.
BUG: b/120786848, b/120916153, b/120917555
Test: Run all CTS from above bugs
Change-Id: I279b4f3ec53dc6fbf19cac724be3407cd94c676b
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
index 0497571..168b27c 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
@@ -98,6 +98,10 @@
bool HWComposer::hasDisplayCapability(const std::optional<DisplayId>& displayId,
HWC2::DisplayCapability capability) const {
if (!displayId) {
+ // Checkout global capabilities for displays without a corresponding HWC display.
+ if (capability == HWC2::DisplayCapability::SkipClientColorTransform) {
+ return hasCapability(HWC2::Capability::SkipClientColorTransform);
+ }
return false;
}
RETURN_IF_INVALID_DISPLAY(*displayId, false);