summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoenchen <joenchen@google.com>2023-03-14 06:32:37 +0000
committerjoenchen <joenchen@google.com>2023-03-20 08:48:26 +0000
commit49dec5e3831532d6d23079dc741224425470091f (patch)
tree9564bee93bd5c2acf4c72abdc3d91daba412c1b3
parent9e588bfddf124fbc643e5d07236315f6341ca930 (diff)
downloadzuma-49dec5e3831532d6d23079dc741224425470091f.tar.gz
libhwc2.1: add WCG constraints into TDM
HWC adds WCG constraints into TDM: 1. WCG resource amount is added into the HW resource table. 2. ExynosResourceManager constructor loads WCG resource amount based on the SOC revision automatically. 3. checkPreblendingRequirement() checks each stage (EOTF, GM, DTM, and OETF) of preblending functions. If so, mark the mNeedPreblending. 4. checkTDMResource() rejects the resource assignment if a layer exceeds the WCG constraints. Bug: 271771611 Test: to take screenshots when multiple layers Change-Id: I5b16e76b8619b5e0a0e54fd2bd287ce632e1168d
-rw-r--r--libhwc2.1/ExynosHWCModule.h119
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp17
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h1
-rw-r--r--libhwc2.1/libresource/ExynosResourceManagerModule.cpp41
-rw-r--r--libhwc2.1/libresource/ExynosResourceManagerModule.h6
5 files changed, 126 insertions, 58 deletions
diff --git a/libhwc2.1/ExynosHWCModule.h b/libhwc2.1/ExynosHWCModule.h
index 0f0280a..c020a44 100644
--- a/libhwc2.1/ExynosHWCModule.h
+++ b/libhwc2.1/ExynosHWCModule.h
@@ -48,6 +48,12 @@ typedef enum AXIPortId {
AXI_PORT_CNT,
} AXIPortId_t;
+typedef enum ConstraintRev {
+ CONSTRAINT_NONE = 0, // don't care
+ CONSTRAINT_A0,
+ CONSTRAINT_B0
+} ConstraintRev_t;
+
static const dpp_channel_map_t idma_channel_map[] = {
/* GF physical index is switched to change assign order */
/* DECON_IDMA is not used */
@@ -132,10 +138,15 @@ class HWResourceIndexes {
tdm_attr_t attr;
DPUblockId_t DPUBlockNo;
int displayId;
+ ConstraintRev_t constraintRev;
public:
- HWResourceIndexes(tdm_attr_t _attr, DPUblockId_t _DPUBlockNo, int _displayId)
- : attr(_attr), DPUBlockNo(_DPUBlockNo), displayId(_displayId) {}
+ HWResourceIndexes(tdm_attr_t _attr, DPUblockId_t _DPUBlockNo, int _displayId,
+ ConstraintRev_t _constraintRev)
+ : attr(_attr),
+ DPUBlockNo(_DPUBlockNo),
+ displayId(_displayId),
+ constraintRev(_constraintRev) {}
bool operator<(const HWResourceIndexes& rhs) const {
if (attr != rhs.attr) return attr < rhs.attr;
@@ -143,6 +154,8 @@ class HWResourceIndexes {
if (displayId != rhs.displayId) return displayId < rhs.displayId;
+ if (constraintRev != CONSTRAINT_NONE) return constraintRev < rhs.constraintRev;
+
return false;
}
};
@@ -157,47 +170,67 @@ typedef struct HWResourceAmounts {
* Primary amount = total - others */
const std::map<HWResourceIndexes, HWResourceAmounts_t> HWResourceTables = {
- {HWResourceIndexes(TDM_ATTR_SRAM_AMOUNT, DPUF0, HWC_DISPLAY_PRIMARY), {80, 80}},
- {HWResourceIndexes(TDM_ATTR_SRAM_AMOUNT, DPUF0, HWC_DISPLAY_EXTERNAL), {0, 80}},
- {HWResourceIndexes(TDM_ATTR_SRAM_AMOUNT, DPUF0, HWC_DISPLAY_VIRTUAL), {0, 80}},
- {HWResourceIndexes(TDM_ATTR_SRAM_AMOUNT, DPUF1, HWC_DISPLAY_PRIMARY), {0, 80}},
- {HWResourceIndexes(TDM_ATTR_SRAM_AMOUNT, DPUF1, HWC_DISPLAY_EXTERNAL), {80, 80}},
- {HWResourceIndexes(TDM_ATTR_SRAM_AMOUNT, DPUF1, HWC_DISPLAY_VIRTUAL), {80, 80}},
-
- {HWResourceIndexes(TDM_ATTR_SCALE, DPUF0, HWC_DISPLAY_PRIMARY), {2, 2}},
- {HWResourceIndexes(TDM_ATTR_SCALE, DPUF0, HWC_DISPLAY_EXTERNAL), {0, 2}},
- {HWResourceIndexes(TDM_ATTR_SCALE, DPUF0, HWC_DISPLAY_VIRTUAL), {0, 2}},
- {HWResourceIndexes(TDM_ATTR_SCALE, DPUF1, HWC_DISPLAY_PRIMARY), {0, 2}},
- {HWResourceIndexes(TDM_ATTR_SCALE, DPUF1, HWC_DISPLAY_EXTERNAL), {2, 2}},
- {HWResourceIndexes(TDM_ATTR_SCALE, DPUF1, HWC_DISPLAY_VIRTUAL), {2, 2}},
-
- {HWResourceIndexes(TDM_ATTR_SBWC, DPUF0, HWC_DISPLAY_PRIMARY), {2, 2}},
- {HWResourceIndexes(TDM_ATTR_SBWC, DPUF0, HWC_DISPLAY_EXTERNAL), {0, 2}},
- {HWResourceIndexes(TDM_ATTR_SBWC, DPUF0, HWC_DISPLAY_VIRTUAL), {0, 2}},
- {HWResourceIndexes(TDM_ATTR_SBWC, DPUF1, HWC_DISPLAY_PRIMARY), {0, 2}},
- {HWResourceIndexes(TDM_ATTR_SBWC, DPUF1, HWC_DISPLAY_EXTERNAL), {2, 2}},
- {HWResourceIndexes(TDM_ATTR_SBWC, DPUF1, HWC_DISPLAY_VIRTUAL), {2, 2}},
-
- {HWResourceIndexes(TDM_ATTR_AFBC, DPUF0, HWC_DISPLAY_PRIMARY), {4, 4}},
- {HWResourceIndexes(TDM_ATTR_AFBC, DPUF0, HWC_DISPLAY_EXTERNAL), {0, 4}},
- {HWResourceIndexes(TDM_ATTR_AFBC, DPUF0, HWC_DISPLAY_VIRTUAL), {0, 4}},
- {HWResourceIndexes(TDM_ATTR_AFBC, DPUF1, HWC_DISPLAY_PRIMARY), {0, 4}},
- {HWResourceIndexes(TDM_ATTR_AFBC, DPUF1, HWC_DISPLAY_EXTERNAL), {4, 4}},
- {HWResourceIndexes(TDM_ATTR_AFBC, DPUF1, HWC_DISPLAY_VIRTUAL), {4, 4}},
-
- {HWResourceIndexes(TDM_ATTR_ITP, DPUF0, HWC_DISPLAY_PRIMARY), {4, 4}},
- {HWResourceIndexes(TDM_ATTR_ITP, DPUF0, HWC_DISPLAY_EXTERNAL), {0, 4}},
- {HWResourceIndexes(TDM_ATTR_ITP, DPUF0, HWC_DISPLAY_VIRTUAL), {0, 4}},
- {HWResourceIndexes(TDM_ATTR_ITP, DPUF1, HWC_DISPLAY_PRIMARY), {0, 4}},
- {HWResourceIndexes(TDM_ATTR_ITP, DPUF1, HWC_DISPLAY_EXTERNAL), {4, 4}},
- {HWResourceIndexes(TDM_ATTR_ITP, DPUF1, HWC_DISPLAY_VIRTUAL), {4, 4}},
-
- {HWResourceIndexes(TDM_ATTR_ROT_90, DPUF0, HWC_DISPLAY_PRIMARY), {2, 2}},
- {HWResourceIndexes(TDM_ATTR_ROT_90, DPUF0, HWC_DISPLAY_EXTERNAL), {0, 2}},
- {HWResourceIndexes(TDM_ATTR_ROT_90, DPUF0, HWC_DISPLAY_VIRTUAL), {0, 2}},
- {HWResourceIndexes(TDM_ATTR_ROT_90, DPUF1, HWC_DISPLAY_PRIMARY), {0, 2}},
- {HWResourceIndexes(TDM_ATTR_ROT_90, DPUF1, HWC_DISPLAY_EXTERNAL), {2, 2}},
- {HWResourceIndexes(TDM_ATTR_ROT_90, DPUF1, HWC_DISPLAY_VIRTUAL), {2, 2}},
+ {HWResourceIndexes(TDM_ATTR_SRAM_AMOUNT, DPUF0, HWC_DISPLAY_PRIMARY, CONSTRAINT_NONE),
+ {80, 80}},
+ {HWResourceIndexes(TDM_ATTR_SRAM_AMOUNT, DPUF0, HWC_DISPLAY_EXTERNAL, CONSTRAINT_NONE),
+ {0, 80}},
+ {HWResourceIndexes(TDM_ATTR_SRAM_AMOUNT, DPUF0, HWC_DISPLAY_VIRTUAL, CONSTRAINT_NONE),
+ {0, 80}},
+ {HWResourceIndexes(TDM_ATTR_SRAM_AMOUNT, DPUF1, HWC_DISPLAY_PRIMARY, CONSTRAINT_NONE),
+ {0, 80}},
+ {HWResourceIndexes(TDM_ATTR_SRAM_AMOUNT, DPUF1, HWC_DISPLAY_EXTERNAL, CONSTRAINT_NONE),
+ {80, 80}},
+ {HWResourceIndexes(TDM_ATTR_SRAM_AMOUNT, DPUF1, HWC_DISPLAY_VIRTUAL, CONSTRAINT_NONE),
+ {80, 80}},
+
+ {HWResourceIndexes(TDM_ATTR_SCALE, DPUF0, HWC_DISPLAY_PRIMARY, CONSTRAINT_NONE), {2, 2}},
+ {HWResourceIndexes(TDM_ATTR_SCALE, DPUF0, HWC_DISPLAY_EXTERNAL, CONSTRAINT_NONE), {0, 2}},
+ {HWResourceIndexes(TDM_ATTR_SCALE, DPUF0, HWC_DISPLAY_VIRTUAL, CONSTRAINT_NONE), {0, 2}},
+ {HWResourceIndexes(TDM_ATTR_SCALE, DPUF1, HWC_DISPLAY_PRIMARY, CONSTRAINT_NONE), {0, 2}},
+ {HWResourceIndexes(TDM_ATTR_SCALE, DPUF1, HWC_DISPLAY_EXTERNAL, CONSTRAINT_NONE), {2, 2}},
+ {HWResourceIndexes(TDM_ATTR_SCALE, DPUF1, HWC_DISPLAY_VIRTUAL, CONSTRAINT_NONE), {2, 2}},
+
+ {HWResourceIndexes(TDM_ATTR_SBWC, DPUF0, HWC_DISPLAY_PRIMARY, CONSTRAINT_NONE), {2, 2}},
+ {HWResourceIndexes(TDM_ATTR_SBWC, DPUF0, HWC_DISPLAY_EXTERNAL, CONSTRAINT_NONE), {0, 2}},
+ {HWResourceIndexes(TDM_ATTR_SBWC, DPUF0, HWC_DISPLAY_VIRTUAL, CONSTRAINT_NONE), {0, 2}},
+ {HWResourceIndexes(TDM_ATTR_SBWC, DPUF1, HWC_DISPLAY_PRIMARY, CONSTRAINT_NONE), {0, 2}},
+ {HWResourceIndexes(TDM_ATTR_SBWC, DPUF1, HWC_DISPLAY_EXTERNAL, CONSTRAINT_NONE), {2, 2}},
+ {HWResourceIndexes(TDM_ATTR_SBWC, DPUF1, HWC_DISPLAY_VIRTUAL, CONSTRAINT_NONE), {2, 2}},
+
+ {HWResourceIndexes(TDM_ATTR_AFBC, DPUF0, HWC_DISPLAY_PRIMARY, CONSTRAINT_NONE), {4, 4}},
+ {HWResourceIndexes(TDM_ATTR_AFBC, DPUF0, HWC_DISPLAY_EXTERNAL, CONSTRAINT_NONE), {0, 4}},
+ {HWResourceIndexes(TDM_ATTR_AFBC, DPUF0, HWC_DISPLAY_VIRTUAL, CONSTRAINT_NONE), {0, 4}},
+ {HWResourceIndexes(TDM_ATTR_AFBC, DPUF1, HWC_DISPLAY_PRIMARY, CONSTRAINT_NONE), {0, 4}},
+ {HWResourceIndexes(TDM_ATTR_AFBC, DPUF1, HWC_DISPLAY_EXTERNAL, CONSTRAINT_NONE), {4, 4}},
+ {HWResourceIndexes(TDM_ATTR_AFBC, DPUF1, HWC_DISPLAY_VIRTUAL, CONSTRAINT_NONE), {4, 4}},
+
+ {HWResourceIndexes(TDM_ATTR_ITP, DPUF0, HWC_DISPLAY_PRIMARY, CONSTRAINT_NONE), {4, 4}},
+ {HWResourceIndexes(TDM_ATTR_ITP, DPUF0, HWC_DISPLAY_EXTERNAL, CONSTRAINT_NONE), {0, 4}},
+ {HWResourceIndexes(TDM_ATTR_ITP, DPUF0, HWC_DISPLAY_VIRTUAL, CONSTRAINT_NONE), {0, 4}},
+ {HWResourceIndexes(TDM_ATTR_ITP, DPUF1, HWC_DISPLAY_PRIMARY, CONSTRAINT_NONE), {0, 4}},
+ {HWResourceIndexes(TDM_ATTR_ITP, DPUF1, HWC_DISPLAY_EXTERNAL, CONSTRAINT_NONE), {4, 4}},
+ {HWResourceIndexes(TDM_ATTR_ITP, DPUF1, HWC_DISPLAY_VIRTUAL, CONSTRAINT_NONE), {4, 4}},
+
+ {HWResourceIndexes(TDM_ATTR_ROT_90, DPUF0, HWC_DISPLAY_PRIMARY, CONSTRAINT_NONE), {2, 2}},
+ {HWResourceIndexes(TDM_ATTR_ROT_90, DPUF0, HWC_DISPLAY_EXTERNAL, CONSTRAINT_NONE), {0, 2}},
+ {HWResourceIndexes(TDM_ATTR_ROT_90, DPUF0, HWC_DISPLAY_VIRTUAL, CONSTRAINT_NONE), {0, 2}},
+ {HWResourceIndexes(TDM_ATTR_ROT_90, DPUF1, HWC_DISPLAY_PRIMARY, CONSTRAINT_NONE), {0, 2}},
+ {HWResourceIndexes(TDM_ATTR_ROT_90, DPUF1, HWC_DISPLAY_EXTERNAL, CONSTRAINT_NONE), {2, 2}},
+ {HWResourceIndexes(TDM_ATTR_ROT_90, DPUF1, HWC_DISPLAY_VIRTUAL, CONSTRAINT_NONE), {2, 2}},
+
+ {HWResourceIndexes(TDM_ATTR_WCG, DPUF0, HWC_DISPLAY_PRIMARY, CONSTRAINT_A0), {0, 2}},
+ {HWResourceIndexes(TDM_ATTR_WCG, DPUF0, HWC_DISPLAY_EXTERNAL, CONSTRAINT_A0), {2, 2}},
+ {HWResourceIndexes(TDM_ATTR_WCG, DPUF0, HWC_DISPLAY_VIRTUAL, CONSTRAINT_A0), {2, 2}},
+ {HWResourceIndexes(TDM_ATTR_WCG, DPUF1, HWC_DISPLAY_PRIMARY, CONSTRAINT_A0), {2, 2}},
+ {HWResourceIndexes(TDM_ATTR_WCG, DPUF1, HWC_DISPLAY_EXTERNAL, CONSTRAINT_A0), {0, 2}},
+ {HWResourceIndexes(TDM_ATTR_WCG, DPUF1, HWC_DISPLAY_VIRTUAL, CONSTRAINT_A0), {0, 2}},
+
+ {HWResourceIndexes(TDM_ATTR_WCG, DPUF0, HWC_DISPLAY_PRIMARY, CONSTRAINT_B0), {0, 4}},
+ {HWResourceIndexes(TDM_ATTR_WCG, DPUF0, HWC_DISPLAY_EXTERNAL, CONSTRAINT_B0), {4, 4}},
+ {HWResourceIndexes(TDM_ATTR_WCG, DPUF0, HWC_DISPLAY_VIRTUAL, CONSTRAINT_B0), {4, 4}},
+ {HWResourceIndexes(TDM_ATTR_WCG, DPUF1, HWC_DISPLAY_PRIMARY, CONSTRAINT_B0), {4, 4}},
+ {HWResourceIndexes(TDM_ATTR_WCG, DPUF1, HWC_DISPLAY_EXTERNAL, CONSTRAINT_B0), {0, 4}},
+ {HWResourceIndexes(TDM_ATTR_WCG, DPUF1, HWC_DISPLAY_VIRTUAL, CONSTRAINT_B0), {0, 4}},
};
typedef enum lbWidthIndex {
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
index 587b94c..b77aa46 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
@@ -222,3 +222,20 @@ int32_t ExynosPrimaryDisplayModule::OperationRateManager::updateOperationRateLoc
mDisplayLastDbv, mDisplayNsMinDbv);
return ret;
}
+
+void ExynosPrimaryDisplayModule::checkPreblendingRequirement() {
+ String8 log;
+ int count = 0;
+ for (size_t i = 0; i < mLayers.size(); ++i) {
+ auto& dpp = getDppForLayer(mLayers[i]);
+ mLayers[i]->mNeedPreblending =
+ dpp.EotfLut().enable | dpp.Gm().enable | dpp.Dtm().enable | dpp.OetfLut().enable;
+ count += mLayers[i]->mNeedPreblending;
+ if (hwcCheckDebugMessages(eDebugTDM)) {
+ log.appendFormat(" i=%zu,pb(%d-%d,%d,%d,%d)", i, mLayers[i]->mNeedPreblending,
+ dpp.EotfLut().enable, dpp.Gm().enable, dpp.Dtm().enable,
+ dpp.OetfLut().enable);
+ }
+ }
+ DISPLAY_LOGD(eDebugTDM, "%s: disp(%d),cnt=%d%s", __func__, mDisplayId, count, log.string());
+}
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
index 717964f..faf6d8f 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
@@ -29,6 +29,7 @@ class ExynosPrimaryDisplayModule : public gs201::ExynosPrimaryDisplayModule {
const std::string& displayName);
~ExynosPrimaryDisplayModule();
virtual int32_t validateWinConfigData();
+ void checkPreblendingRequirement() override;
protected:
class OperationRateManager
diff --git a/libhwc2.1/libresource/ExynosResourceManagerModule.cpp b/libhwc2.1/libresource/ExynosResourceManagerModule.cpp
index 9f9bba3..5cc11c7 100644
--- a/libhwc2.1/libresource/ExynosResourceManagerModule.cpp
+++ b/libhwc2.1/libresource/ExynosResourceManagerModule.cpp
@@ -16,7 +16,10 @@
#include "ExynosResourceManagerModule.h"
+#include <cutils/properties.h>
+
#include <list>
+#include <utility>
#include "ExynosLayer.h"
@@ -37,6 +40,12 @@ ExynosResourceManagerModule::ExynosResourceManagerModule(ExynosDevice *device)
{
// HW Resource Table for TDM based allocation
mHWResourceTables = &HWResourceTables;
+
+ char value[PROPERTY_VALUE_MAX];
+ property_get("ro.boot.hw.soc.rev", value, "2");
+ const int socRev = atoi(value);
+ mConstraintRev = socRev < 2 ? CONSTRAINT_A0 : CONSTRAINT_B0;
+ ALOGD("%s(): ro.boot.hw.soc.rev=%s ConstraintRev=%d", __func__, value, mConstraintRev);
// TODO (b/266048745): Revert once G2D HDR code for zuma is merged
mM2mMPPs.clear();
}
@@ -154,13 +163,14 @@ uint32_t ExynosResourceManagerModule::setDisplaysTDMInfo()
ExynosDisplay *primaryDisplay = getDisplay(getDisplayId(HWC_DISPLAY_PRIMARY, 0));
for (auto attr = HWAttrs.begin(); attr != HWAttrs.end(); attr++) {
for (auto blockId = DPUBlocks.begin(); blockId != DPUBlocks.end(); blockId++) {
- if (mHWResourceTables->find(
- HWResourceIndexes(attr->first, blockId->first, primaryDisplay->mType)) !=
+ if (mHWResourceTables->find(HWResourceIndexes(attr->first, blockId->first,
+ primaryDisplay->mType, mConstraintRev)) !=
mHWResourceTables->end()) {
- uint32_t total = mHWResourceTables
- ->at(HWResourceIndexes(attr->first, blockId->first,
- primaryDisplay->mType))
- .totalAmount;
+ uint32_t total =
+ mHWResourceTables
+ ->at(HWResourceIndexes(attr->first, blockId->first,
+ primaryDisplay->mType, mConstraintRev))
+ .totalAmount;
if (addedDisplay != nullptr) {
total = total -
@@ -176,6 +186,9 @@ uint32_t ExynosResourceManagerModule::setDisplaysTDMInfo()
primaryDisplay->mDisplayTDMInfo[blockId->first].initTDMInfo(amount, attr->first);
HDEBUGLOGD(eDebugTDM, "Primary display (block : %d) : %s amount is updated to %d",
blockId->first, attr->second.string(), amount.totalAmount);
+ } else {
+ ALOGW("Primary display (block : %d) : cannot find resource for %s", blockId->first,
+ attr->second.string());
}
}
}
@@ -209,20 +222,24 @@ uint32_t ExynosResourceManagerModule::initDisplaysTDMInfo()
for (auto &display : mDisplays) {
for (auto attr = HWAttrs.begin(); attr != HWAttrs.end(); attr++) {
for (auto blockId = DPUBlocks.begin(); blockId != DPUBlocks.end(); blockId++) {
- if (mHWResourceTables->find(
- HWResourceIndexes(attr->first, blockId->first, display->mType)) !=
+ if (mHWResourceTables->find(HWResourceIndexes(attr->first, blockId->first,
+ display->mType, mConstraintRev)) !=
mHWResourceTables->end()) {
DisplayTDMInfo::ResourceAmount_t amount = {
0,
};
- amount.totalAmount = mHWResourceTables
- ->at(HWResourceIndexes(attr->first, blockId->first,
- display->mType))
- .maxAssignedAmount;
+ amount.totalAmount =
+ mHWResourceTables
+ ->at(HWResourceIndexes(attr->first, blockId->first,
+ display->mType, mConstraintRev))
+ .maxAssignedAmount;
display->mDisplayTDMInfo[blockId->first].initTDMInfo(amount, attr->first);
HDEBUGLOGD(eDebugTDM, "%s, [attr:%d] display : %d, block : %d, amount : %d",
__func__, attr->first, display->mType, blockId->first,
amount.totalAmount);
+ } else {
+ ALOGW("%s, [attr:%d] display : %d, block : %d no resource", __func__,
+ attr->first, display->mType, blockId->first);
}
}
}
diff --git a/libhwc2.1/libresource/ExynosResourceManagerModule.h b/libhwc2.1/libresource/ExynosResourceManagerModule.h
index 4197005..29bcc80 100644
--- a/libhwc2.1/libresource/ExynosResourceManagerModule.h
+++ b/libhwc2.1/libresource/ExynosResourceManagerModule.h
@@ -26,7 +26,6 @@ class ExynosResourceManagerModule : public gs201::ExynosResourceManagerModule {
ExynosResourceManagerModule(ExynosDevice *device);
~ExynosResourceManagerModule();
- public:
/* TDM (Time-Division Multiplexing) based Resource Management */
virtual bool isHWResourceAvailable(ExynosDisplay *display, ExynosMPP *currentMPP,
ExynosMPPSource *mppSrc);
@@ -43,9 +42,10 @@ class ExynosResourceManagerModule : public gs201::ExynosResourceManagerModule {
std::map<tdm_attr_t, uint32_t> &amounts);
bool checkTDMResource(ExynosDisplay *display, ExynosMPP *currentMPP,
ExynosMPPSource *mppSrc);
-
- public:
const std::map<HWResourceIndexes, HWResourceAmounts_t> *mHWResourceTables = nullptr;
+
+ private:
+ ConstraintRev_t mConstraintRev;
};
} // namespace zuma