summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoenchen <joenchen@google.com>2022-12-06 15:49:10 +0000
committerjoenchen <joenchen@google.com>2023-02-24 08:30:41 +0000
commitfff8c812d5a46c38a62c8fd886fc42a58d1774ca (patch)
treec79fe9d8ad77c4bfb8b8856254ea1be7cd1804ed
parent15c9335dbbdb23fc1705203772e68d5f3ea0febe (diff)
libhwc2.1: fix wrong overrinding of TDM
calculateHWResourceAmount() function needs overrinding for each device implementation. It fixes wrong function parameters. Bug: 191421040 Test: test multiple scaling/rotation layers by hwc-tester Signed-off-by: YongWook Shin <yongwook.shin@samsung.com> Change-Id: Icc91734b014a4bb7bad6ebe6d08baa2ebe0d404d
-rw-r--r--libhwc2.1/libdevice/ExynosDevice.cpp1
-rw-r--r--libhwc2.1/libdevice/ExynosDisplay.h14
-rw-r--r--libhwc2.1/libresource/ExynosResourceManager.cpp6
-rw-r--r--libhwc2.1/libresource/ExynosResourceManager.h1
4 files changed, 11 insertions, 11 deletions
diff --git a/libhwc2.1/libdevice/ExynosDevice.cpp b/libhwc2.1/libdevice/ExynosDevice.cpp
index 3701d5c..ec4d57a 100644
--- a/libhwc2.1/libdevice/ExynosDevice.cpp
+++ b/libhwc2.1/libdevice/ExynosDevice.cpp
@@ -227,6 +227,7 @@ void ExynosDevice::initDeviceInterface(uint32_t interfaceType)
display->mDisplayInterface) != NO_ERROR) {
ALOGD("Remove display[%d], Failed to initialize display interface", i);
mDisplays.removeAt(i);
+ mDisplayMap.erase(display->mDisplayId);
delete display;
} else {
i++;
diff --git a/libhwc2.1/libdevice/ExynosDisplay.h b/libhwc2.1/libdevice/ExynosDisplay.h
index 0f12ab9..1479989 100644
--- a/libhwc2.1/libdevice/ExynosDisplay.h
+++ b/libhwc2.1/libdevice/ExynosDisplay.h
@@ -286,20 +286,20 @@ class ExynosSortedLayer : public Vector <ExynosLayer*>
static int compare(ExynosLayer * const *lhs, ExynosLayer *const *rhs);
};
-class displayTDMInfo {
+class DisplayTDMInfo {
public:
/* Could be extended */
- typedef struct resourceAmount {
+ typedef struct ResourceAmount {
uint32_t totalAmount;
- } resourceAmount_t;
- std::map<tdm_attr_t, resourceAmount_t> mAmount;
+ } ResourceAmount_t;
+ std::map<tdm_attr_t, ResourceAmount_t> mAmount;
- uint32_t initTDMInfo(resourceAmount_t amount, tdm_attr_t attr) {
+ uint32_t initTDMInfo(ResourceAmount_t amount, tdm_attr_t attr) {
mAmount[attr] = amount;
return 0;
}
- resourceAmount_t getAvailableAmount(tdm_attr_t attr) { return mAmount[attr]; }
+ ResourceAmount_t getAvailableAmount(tdm_attr_t attr) { return mAmount[attr]; }
};
class ExynosCompositionInfo : public ExynosMPPSource {
@@ -1530,7 +1530,7 @@ class ExynosDisplay {
virtual bool isEnabled() { return mPlugState; }
// Resource TDM (Time-Division Multiplexing)
- std::map<uint32_t, displayTDMInfo> mDisplayTDMInfo;
+ std::map<uint32_t, DisplayTDMInfo> mDisplayTDMInfo;
class RotatingLogFileWriter {
public:
diff --git a/libhwc2.1/libresource/ExynosResourceManager.cpp b/libhwc2.1/libresource/ExynosResourceManager.cpp
index 085af47..1078478 100644
--- a/libhwc2.1/libresource/ExynosResourceManager.cpp
+++ b/libhwc2.1/libresource/ExynosResourceManager.cpp
@@ -386,7 +386,7 @@ int32_t ExynosResourceManager::assignResource(ExynosDisplay *display)
HDEBUGLOGD(eDebugTDM, "%s layer's calculation start", __func__);
for (uint32_t i = 0; i < display->mLayers.size(); i++) {
display->mLayers[i]->resetValidateData();
- calculateHWResourceAmount(display->mLayers[i]);
+ calculateHWResourceAmount(display, display->mLayers[i]);
}
display->initializeValidateInfos();
@@ -1010,7 +1010,7 @@ int32_t ExynosResourceManager::assignCompositionTarget(ExynosDisplay * display,
compositionInfo->setExynosImage(src_img, dst_img);
compositionInfo->setExynosMidImage(dst_img);
HDEBUGLOGD(eDebugTDM, "%s M2M target calculation start", __func__);
- calculateHWResourceAmount(compositionInfo);
+ calculateHWResourceAmount(display, compositionInfo);
isSupported = mOtfMPPs[i]->isSupported(*display, src_img, dst_img);
if (isSupported == NO_ERROR)
@@ -1584,7 +1584,7 @@ int32_t ExynosResourceManager::assignLayer(ExynosDisplay *display, ExynosLayer *
HDEBUGLOGD(eDebugTDM,
"%s Composition target calculation start (candidates)",
__func__);
- calculateHWResourceAmount(&dpuSrcInfo);
+ calculateHWResourceAmount(display, &dpuSrcInfo);
isAssignableFlag = isAssignable(mOtfMPPs[k], display, otf_src_img,
otf_dst_img, &dpuSrcInfo);
diff --git a/libhwc2.1/libresource/ExynosResourceManager.h b/libhwc2.1/libresource/ExynosResourceManager.h
index a844bf6..e996554 100644
--- a/libhwc2.1/libresource/ExynosResourceManager.h
+++ b/libhwc2.1/libresource/ExynosResourceManager.h
@@ -239,7 +239,6 @@ class ExynosResourceManager {
}
virtual uint32_t setDisplaysTDMInfo() { return 0; }
virtual uint32_t initDisplaysTDMInfo() { return 0; }
- virtual uint32_t calculateHWResourceAmount(ExynosMPPSource __unused *mppSrc) { return 0; }
virtual uint32_t calculateHWResourceAmount(ExynosDisplay __unused *display,
ExynosMPPSource __unused *mppSrc) {
return 0;