summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-12-12 02:17:33 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-12-12 02:17:33 +0000
commit045061ecc844ce3a3d347bd0e7b81d5030bacee0 (patch)
tree7435383658c892a9747d8420756d8ba4d89d006a
parentd208b96cd1879f0c0c54195cf8703a679c2d91c7 (diff)
parent2d80393b53fd5c408fef0c1f38a3c55706415da7 (diff)
downloadcommon-045061ecc844ce3a3d347bd0e7b81d5030bacee0.tar.gz
Snap for 11206181 from 2d80393b53fd5c408fef0c1f38a3c55706415da7 to 24Q1-release
Change-Id: Id2435bc41a09d420b7c85d2616577ce091792ed5
-rw-r--r--libhwc2.1/ExynosHWCDebug.cpp2
-rw-r--r--libhwc2.1/ExynosHWCDebug.h2
-rw-r--r--libhwc2.1/libdevice/ExynosDisplay.cpp15
-rw-r--r--libhwc2.1/libdevice/ExynosDisplay.h4
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.cpp6
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.h6
6 files changed, 25 insertions, 10 deletions
diff --git a/libhwc2.1/ExynosHWCDebug.cpp b/libhwc2.1/ExynosHWCDebug.cpp
index d43f76d..6f2b806 100644
--- a/libhwc2.1/ExynosHWCDebug.cpp
+++ b/libhwc2.1/ExynosHWCDebug.cpp
@@ -18,7 +18,7 @@
#include <sync/sync.h>
#include "exynos_sync.h"
-int32_t saveErrorLog(const String8 &errString, ExynosDisplay *display) {
+int32_t saveErrorLog(const String8& errString, const ExynosDisplay* display) {
if (display == nullptr) return -1;
int32_t ret = NO_ERROR;
diff --git a/libhwc2.1/ExynosHWCDebug.h b/libhwc2.1/ExynosHWCDebug.h
index bd62a2e..50826f9 100644
--- a/libhwc2.1/ExynosHWCDebug.h
+++ b/libhwc2.1/ExynosHWCDebug.h
@@ -67,7 +67,7 @@ inline int hwcCheckFenceDebug(ExynosDisplay *display, uint32_t fence_type, uint3
return fence;
}
-int32_t saveErrorLog(const android::String8 &errString, ExynosDisplay *display = NULL);
+int32_t saveErrorLog(const android::String8& errString, const ExynosDisplay* display = NULL);
#if defined(DISABLE_HWC_DEBUG)
#define ALOGD_AND_ATRACE_NAME(debugFlag, fmt, ...)
diff --git a/libhwc2.1/libdevice/ExynosDisplay.cpp b/libhwc2.1/libdevice/ExynosDisplay.cpp
index 6fb4a3c..2f77bb9 100644
--- a/libhwc2.1/libdevice/ExynosDisplay.cpp
+++ b/libhwc2.1/libdevice/ExynosDisplay.cpp
@@ -6616,3 +6616,18 @@ void ExynosDisplay::storePrevValidateCompositionType() {
}
mClientCompositionInfo.mPrevHasCompositionLayer = mClientCompositionInfo.mHasCompositionLayer;
}
+
+displaycolor::DisplayType ExynosDisplay::getDcDisplayType() const {
+ switch (mType) {
+ case HWC_DISPLAY_PRIMARY:
+ return mIndex == 0 ? displaycolor::DisplayType::DISPLAY_PRIMARY
+ : displaycolor::DisplayType::DISPLAY_SECONDARY;
+ case HWC_DISPLAY_EXTERNAL:
+ return displaycolor::DisplayType::DISPLAY_EXTERNAL;
+ case HWC_DISPLAY_VIRTUAL:
+ default:
+ DISPLAY_LOGE("%s: Unsupported display type(%d)", __func__, mType);
+ assert(false);
+ return displaycolor::DisplayType::DISPLAY_PRIMARY;
+ }
+}
diff --git a/libhwc2.1/libdevice/ExynosDisplay.h b/libhwc2.1/libdevice/ExynosDisplay.h
index 7a951cc..cdb62d6 100644
--- a/libhwc2.1/libdevice/ExynosDisplay.h
+++ b/libhwc2.1/libdevice/ExynosDisplay.h
@@ -1320,6 +1320,8 @@ class ExynosDisplay {
virtual void onVsync(int64_t __unused timestamp) { return; };
+ displaycolor::DisplayType getDcDisplayType() const;
+
protected:
virtual bool getHDRException(ExynosLayer *layer);
virtual int32_t getActiveConfigInternal(hwc2_config_t* outConfig);
@@ -1648,7 +1650,7 @@ class ExynosDisplay {
int32_t mLastFileIndex;
FILE* mFile;
};
- RotatingLogFileWriter mErrLogFileWriter;
+ mutable RotatingLogFileWriter mErrLogFileWriter;
RotatingLogFileWriter mDebugDumpFileWriter;
RotatingLogFileWriter mFenceFileWriter;
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.cpp
index ba2cb5c..d15c4fe 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.cpp
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.cpp
@@ -132,10 +132,12 @@ ExynosPrimaryDisplay::ExynosPrimaryDisplay(uint32_t index, ExynosDevice *device,
mDbvThresholdForBlockingZone);
}
- DisplayType displayType = getDisplayTypeFromIndex(mIndex);
+ DisplayType displayType = getDcDisplayType();
std::string displayTypeIdentifier;
if (displayType == DisplayType::DISPLAY_PRIMARY) {
displayTypeIdentifier = "primarydisplay";
+ } else if (displayType == DisplayType::DISPLAY_EXTERNAL) {
+ displayTypeIdentifier = "externaldisplay";
}
#ifdef USES_IDISPLAY_INTF_SEC
else if (displayType == DisplayType::DISPLAY_SECONDARY) {
@@ -189,7 +191,7 @@ ExynosPrimaryDisplay::ExynosPrimaryDisplay(uint32_t index, ExynosDevice *device,
char value[PROPERTY_VALUE_MAX];
const char *earlyWakeupNodeBase = early_wakeup_node_0_base;
- if (getDisplayTypeFromIndex(mIndex) == DisplayType::DISPLAY_SECONDARY &&
+ if (getDcDisplayType() == DisplayType::DISPLAY_SECONDARY &&
property_get("vendor.display.secondary_early_wakeup_node", value, "") > 0) {
earlyWakeupNodeBase = value;
}
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.h b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.h
index 0be4c60..2d5b657 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.h
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.h
@@ -93,16 +93,12 @@ class ExynosPrimaryDisplay : public ExynosDisplay {
virtual bool getHDRException(ExynosLayer* __unused layer);
virtual int32_t setActiveConfigInternal(hwc2_config_t config, bool force) override;
virtual int32_t getActiveConfigInternal(hwc2_config_t* outConfig) override;
- DisplayType getDisplayTypeFromIndex(uint32_t index) const {
- return (index >= DisplayType::DISPLAY_MAX) ? DisplayType::DISPLAY_PRIMARY
- : DisplayType(mIndex);
- };
public:
// Prepare multi resolution
ResolutionInfo mResolutionInfo;
std::string getPanelSysfsPath() const override {
- return getPanelSysfsPath(getDisplayTypeFromIndex(mIndex));
+ return getPanelSysfsPath(getDcDisplayType());
}
std::string getPanelSysfsPath(const displaycolor::DisplayType& type) const;