diff options
author | joenchen <joenchen@google.com> | 2023-03-14 06:32:37 +0000 |
---|---|---|
committer | joenchen <joenchen@google.com> | 2023-03-20 08:48:26 +0000 |
commit | 49dec5e3831532d6d23079dc741224425470091f (patch) | |
tree | 9564bee93bd5c2acf4c72abdc3d91daba412c1b3 | |
parent | 9e588bfddf124fbc643e5d07236315f6341ca930 (diff) | |
download | zuma-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.h | 119 | ||||
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp | 17 | ||||
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h | 1 | ||||
-rw-r--r-- | libhwc2.1/libresource/ExynosResourceManagerModule.cpp | 41 | ||||
-rw-r--r-- | libhwc2.1/libresource/ExynosResourceManagerModule.h | 6 |
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 |