diff options
author | Midas Chien <midaschieh@google.com> | 2023-03-09 12:36:38 +0000 |
---|---|---|
committer | Midas Chien <midaschieh@google.com> | 2023-03-09 12:44:28 +0000 |
commit | db3d8d21584d84ef71bff3f305e38128856993dc (patch) | |
tree | 137756a980a1977c44801904d3ffcb0b9507a6ae | |
parent | 5f300045ee6dba29f2dea673c8b8f7ec35de5441 (diff) | |
download | gs201-android13-qpr3-c-s3-release.tar.gz |
libhwc2.1: add restriction for 9:16 4k or larger YUV layerandroid-13.0.0_r82android-13.0.0_r81android-13.0.0_r80android-13.0.0_r74android-13.0.0_r73android-13.0.0_r72android-13.0.0_r66android-13.0.0_r65android-13.0.0_r64android-13.0.0_r60android-13.0.0_r59android-13.0.0_r58android13-qpr3-c-s8-releaseandroid13-qpr3-c-s7-releaseandroid13-qpr3-c-s6-releaseandroid13-qpr3-c-s5-releaseandroid13-qpr3-c-s4-releaseandroid13-qpr3-c-s3-releaseandroid13-qpr3-c-s2-releaseandroid13-qpr3-c-s12-releaseandroid13-qpr3-c-s11-releaseandroid13-qpr3-c-s10-releaseandroid13-qpr3-c-s1-release
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.cpp | 8 |
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) { |