diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-06-04 01:20:48 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-06-04 01:20:48 +0000 |
commit | f14f16c914fd80b3b602e6f4e643d14988460e27 (patch) | |
tree | e08ae80723faddb0236dadbc00fbcd6325682093 | |
parent | 9497169fd90f3aa3acedd66c51fd7a5e107c244a (diff) | |
parent | a33ded52d3ee79e5e63c3115905de5c2120ca016 (diff) | |
download | common-f14f16c914fd80b3b602e6f4e643d14988460e27.tar.gz |
Snap for 8680719 from a33ded52d3ee79e5e63c3115905de5c2120ca016 to tm-d1-release
Change-Id: I3ae13d86eca13bbfb085097ef7cfc9bc915b8836
-rw-r--r-- | libhwc2.1/libresource/ExynosResourceManager.cpp | 9 | ||||
-rw-r--r-- | libhwc2.1/libresource/ExynosResourceManager.h | 3 |
2 files changed, 9 insertions, 3 deletions
diff --git a/libhwc2.1/libresource/ExynosResourceManager.cpp b/libhwc2.1/libresource/ExynosResourceManager.cpp index 57e8e2c..9b6ec54 100644 --- a/libhwc2.1/libresource/ExynosResourceManager.cpp +++ b/libhwc2.1/libresource/ExynosResourceManager.cpp @@ -1133,7 +1133,7 @@ int32_t ExynosResourceManager::validateLayer(uint32_t index, ExynosDisplay *disp } int32_t ExynosResourceManager::validateRCDLayer(const ExynosDisplay &display, - const ExynosLayer &layer, + const ExynosLayer &layer, const uint32_t layerIndex, const exynos_image &srcImg, const exynos_image &dstImg) { if (CC_UNLIKELY(srcImg.bufferHandle == NULL || srcImg.format != HAL_PIXEL_FORMAT_GOOGLE_R_8)) { @@ -1154,6 +1154,11 @@ int32_t ExynosResourceManager::validateRCDLayer(const ExynosDisplay &display, return eMPPUnsupported; } + // only support RCD Layers on the top + if (layerIndex != display.mLayers.size() - 1) { + return eMPPUnsupported; + } + // b/215335109: IMG_SIZE must be equal or larger than display output if (dstImg.x != 0 || dstImg.y != 0 || dstImg.w != display.mXres || dstImg.h != display.mYres) { return eInvalidDispFrame; @@ -1642,7 +1647,7 @@ int32_t ExynosResourceManager::assignLayers(ExynosDisplay * display, uint32_t pr // TODO: call validate function for RCD layer if (layer->mCompositionType == HWC2_COMPOSITION_DISPLAY_DECORATION && - validateRCDLayer(*display, *layer, src_img, dst_img) == NO_ERROR) { + validateRCDLayer(*display, *layer, i, src_img, dst_img) == NO_ERROR) { layer->mValidateCompositionType = HWC2_COMPOSITION_DISPLAY_DECORATION; continue; } diff --git a/libhwc2.1/libresource/ExynosResourceManager.h b/libhwc2.1/libresource/ExynosResourceManager.h index 11b24f6..baf9bb3 100644 --- a/libhwc2.1/libresource/ExynosResourceManager.h +++ b/libhwc2.1/libresource/ExynosResourceManager.h @@ -195,7 +195,8 @@ class ExynosResourceManager { exynos_image getAlignedImage(exynos_image image, const ExynosMPP *m2mMpp, const ExynosMPP *otfMpp) const; int32_t validateRCDLayer(const ExynosDisplay &display, const ExynosLayer &layer, - const exynos_image &srcImg, const exynos_image &dstImg); + const uint32_t layerIndex, const exynos_image &srcImg, + const exynos_image &dstImg); static ExynosMPPVector mOtfMPPs; static ExynosMPPVector mM2mMPPs; uint32_t mResourceReserved; /* Set MPP logical type for bit operation */ |