summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-12-13 00:20:48 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-12-13 00:20:48 +0000
commit5cbd03ab4f8e45cae7c059c638e5c5a2428d2887 (patch)
treeaa0c0b3e8c451c7dfc71f5d92c99702f1d5ce62f
parent045061ecc844ce3a3d347bd0e7b81d5030bacee0 (diff)
parentae59bf782af735a45e16b75f4dee43ac173c8808 (diff)
downloadcommon-5cbd03ab4f8e45cae7c059c638e5c5a2428d2887.tar.gz
Snap for 11211173 from ae59bf782af735a45e16b75f4dee43ac173c8808 to 24Q1-release
Change-Id: If2ba2e248098cced1df70bd0f472839a5a8bce93
-rw-r--r--libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp17
-rw-r--r--libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.h6
2 files changed, 15 insertions, 8 deletions
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp
index b982e05..badaa61 100644
--- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp
+++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp
@@ -461,9 +461,14 @@ void ExynosDisplayDrmInterface::destroyLayer(ExynosLayer *layer) {
}
int32_t ExynosDisplayDrmInterface::getDisplayIdleTimerSupport(bool &outSupport) {
- if (mIsVrrModeSupported) {
+ if (isFullVrrSupported()) {
outSupport = false;
return NO_ERROR;
+ } else if (isPseudoVrrSupported()) {
+ // Retuen true to avoid SF idle timer working. We insert frames manually
+ // for pseudo VRR, so ideally panel idle should be disabled in the driver.
+ outSupport = true;
+ return NO_ERROR;
}
auto [ret, support] = mDrmConnector->panel_idle_support().value();
@@ -1025,8 +1030,7 @@ int32_t ExynosDisplayDrmInterface::getDisplayConfigs(
std::lock_guard<std::recursive_mutex> lock(mDrmConnector->modesLock());
if (!outConfigs) {
- bool isVrrApiSupported = mExynosDisplay->mDevice->isVrrApiSupported();
- bool useVrrConfigs = mIsVrrModeSupported && isVrrApiSupported;
+ bool useVrrConfigs = isFullVrrSupported();
int ret = mDrmConnector->UpdateModes(useVrrConfigs);
if (ret < 0) {
ALOGE("Failed to update display modes %d", ret);
@@ -1036,11 +1040,8 @@ int32_t ExynosDisplayDrmInterface::getDisplayConfigs(
// no need to update mExynosDisplay->mDisplayConfigs
goto no_mode_changes;
}
- ALOGI("Select Vrr Config for display %s: composer interface compatibility = %s, display "
- "hardware "
- "Compatibility = %s, use Vrr config = %s",
- mExynosDisplay->mDisplayName.c_str(), isVrrApiSupported ? "true" : "false",
- mIsVrrModeSupported ? "true" : "false", useVrrConfigs ? "true" : "false");
+ ALOGI("Select Vrr Config for display %s: %s", mExynosDisplay->mDisplayName.c_str(),
+ useVrrConfigs ? "full" : (isPseudoVrrSupported() ? "pseudo" : "non-Vrr"));
if (mDrmConnector->state() == DRM_MODE_CONNECTED) {
/*
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.h b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.h
index 82d706a..0d28aa7 100644
--- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.h
+++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.h
@@ -407,6 +407,12 @@ class ExynosDisplayDrmInterface :
int32_t triggerClearDisplayPlanes();
virtual void setVrrSettings(const VrrSettings_t& vrrSettings) override;
+ bool isFullVrrSupported() const {
+ return (mIsVrrModeSupported && mExynosDisplay->mDevice->isVrrApiSupported());
+ }
+ bool isPseudoVrrSupported() const {
+ return (mIsVrrModeSupported && !mExynosDisplay->mDevice->isVrrApiSupported());
+ }
protected:
enum class HalMipiSyncType : uint32_t {