summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-06-04 01:20:48 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-06-04 01:20:48 +0000
commitf14f16c914fd80b3b602e6f4e643d14988460e27 (patch)
treee08ae80723faddb0236dadbc00fbcd6325682093
parent9497169fd90f3aa3acedd66c51fd7a5e107c244a (diff)
parenta33ded52d3ee79e5e63c3115905de5c2120ca016 (diff)
downloadcommon-f14f16c914fd80b3b602e6f4e643d14988460e27.tar.gz
Snap for 8680719 from a33ded52d3ee79e5e63c3115905de5c2120ca016 to tm-d1-release
Change-Id: I3ae13d86eca13bbfb085097ef7cfc9bc915b8836
-rw-r--r--libhwc2.1/libresource/ExynosResourceManager.cpp9
-rw-r--r--libhwc2.1/libresource/ExynosResourceManager.h3
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 */