summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMidas Chien <midaschieh@google.com>2023-03-09 12:36:38 +0000
committerMidas Chien <midaschieh@google.com>2023-03-09 12:44:28 +0000
commitdb3d8d21584d84ef71bff3f305e38128856993dc (patch)
tree137756a980a1977c44801904d3ffcb0b9507a6ae
parent5f300045ee6dba29f2dea673c8b8f7ec35de5441 (diff)
downloadgs201-android13-qpr3-c-s3-release.tar.gz
One underrun issue happens when DPU handle unusual 9:16 4k video with specific vertical downscale ratio. Even boost all resources, underrun still happens. To avoid underrun, fallback to other clients first before we know what constraint is. Bug: 272065306 Test: simulate problematic layer configuration Change-Id: Icdbec699dbd497ea935728b5f3ea90a84bcf56fa
-rw-r--r--libhwc2.1/libresource/ExynosMPPModule.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/libhwc2.1/libresource/ExynosMPPModule.cpp b/libhwc2.1/libresource/ExynosMPPModule.cpp
index d158f31..c532117 100644
--- a/libhwc2.1/libresource/ExynosMPPModule.cpp
+++ b/libhwc2.1/libresource/ExynosMPPModule.cpp
@@ -41,8 +41,12 @@ bool ExynosMPPModule::checkSpecificRestriction(const uint32_t refreshRate,
VendorGraphicBufferMeta gmeta(src.bufferHandle);
if (isFormatYUV(gmeta.format)) {
- if (src.fullWidth == 3840 && src.w >= 3584 && src.fullHeight >= 2000 && src.h >= 1600) {
- // downscale 4k YUV layer
+ // 16:9 4k or large YUV layer
+ if (src.w >= 3584 && src.h >= 1600) {
+ return true;
+ }
+ // 9:16 4k or large YUV layer
+ if (src.h >= 2600 && src.w >= 1450 && src.h > dst.h && (dst.h * 100 / src.h) < 67) {
return true;
}
} else if (src.w >= 1680 && src.h > dst.h && (dst.h * 100 / src.h) < 60) {