SF: Add DisplayDevice::initiateModeChange
This CL creates DisplayDevice::initiateModeChange which calls
HWC::setActiveConfigWithConstraints. SF should call DisplayDevice
instead of directly calling HWComposer.
This is a step towards removing the cached display modes from
the HWComposer class.
Test: presubmit
Bug: 159590486
Change-Id: Id05d2eacbbb6ed335fe205231b85e8af9a8ccd91
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 894f352..3a9f7de 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -1173,7 +1173,6 @@
}
mUpcomingActiveConfig = *desiredActiveConfig;
- const auto displayId = display->getPhysicalId();
ATRACE_INT("ActiveConfigFPS_HWC", refreshRate.getValue());
@@ -1184,12 +1183,11 @@
hal::VsyncPeriodChangeTimeline outTimeline;
const auto status =
- getHwComposer().setActiveModeWithConstraints(displayId, mUpcomingActiveConfig.configId,
- constraints, &outTimeline);
+ display->initiateModeChange(mUpcomingActiveConfig.configId, constraints, &outTimeline);
if (status != NO_ERROR) {
- // setActiveModeWithConstraints may fail if a hotplug event is just about
+ // initiateModeChange may fail if a hotplug event is just about
// to be sent. We just log the error in this case.
- ALOGW("setActiveModeWithConstraints failed: %d", status);
+ ALOGW("initiateModeChange failed: %d", status);
return;
}
@@ -2431,8 +2429,9 @@
const DisplayDeviceState& state,
const sp<compositionengine::DisplaySurface>& displaySurface,
const sp<IGraphicBufferProducer>& producer) {
- DisplayDeviceCreationArgs creationArgs(this, displayToken, compositionDisplay);
+ DisplayDeviceCreationArgs creationArgs(this, getHwComposer(), displayToken, compositionDisplay);
creationArgs.sequenceId = state.sequenceId;
+ creationArgs.hwComposer = getHwComposer();
creationArgs.isSecure = state.isSecure;
creationArgs.displaySurface = displaySurface;
creationArgs.hasWideColorGamut = false;
@@ -6044,7 +6043,7 @@
if (!display->isPrimary()) {
// TODO(b/144711714): For non-primary displays we should be able to set an active config
- // as well. For now, just call directly to setActiveModeWithConstraints but ideally
+ // as well. For now, just call directly to initiateModeChange but ideally
// it should go thru setDesiredActiveConfig, similar to primary display.
ALOGV("setAllowedDisplayConfigsInternal for non-primary display");
const auto displayId = display->getPhysicalId();
@@ -6054,8 +6053,8 @@
constraints.seamlessRequired = false;
hal::VsyncPeriodChangeTimeline timeline = {0, 0, 0};
- if (getHwComposer().setActiveModeWithConstraints(displayId, policy->defaultConfig,
- constraints, &timeline) < 0) {
+ if (display->initiateModeChange(policy->defaultConfig, constraints, &timeline) !=
+ NO_ERROR) {
return BAD_VALUE;
}
if (timeline.refreshRequired) {