From 1dec611dd1c56ab236b00a77dac85206c441ed69 Mon Sep 17 00:00:00 2001 From: LuK1337 Date: Wed, 16 Oct 2019 14:50:14 +0200 Subject: gralloc: Add option for unaligned NV21_ZSL pixel format * Not sure why this is a thing but on some devices (eg. Samsung Galaxy Tab S5e) aligning NV21_ZSL to 64 results in invalid width and height. Change-Id: I8611752798a8c66ba55d52d826aa532fd76abe33 --- gralloc/Android.mk | 4 ++++ gralloc/gr_utils.cpp | 2 ++ 2 files changed, 6 insertions(+) diff --git a/gralloc/Android.mk b/gralloc/Android.mk index 4dffadea..c3f41337 100644 --- a/gralloc/Android.mk +++ b/gralloc/Android.mk @@ -46,6 +46,10 @@ else ifeq ($(TARGET_USES_YCRCB_VENUS_CAMERA_PREVIEW),true) LOCAL_CFLAGS += -DUSE_YCRCB_CAMERA_PREVIEW_VENUS endif +ifeq ($(TARGET_USES_UNALIGNED_NV21_ZSL),true) + LOCAL_CFLAGS += -DUSE_UNALIGNED_NV21_ZSL +endif + LOCAL_ADDITIONAL_DEPENDENCIES := $(common_deps) LOCAL_SRC_FILES := gr_utils.cpp gr_adreno_info.cpp include $(BUILD_SHARED_LIBRARY) diff --git a/gralloc/gr_utils.cpp b/gralloc/gr_utils.cpp index 20508344..d157ad61 100644 --- a/gralloc/gr_utils.cpp +++ b/gralloc/gr_utils.cpp @@ -1064,8 +1064,10 @@ void GetAlignedWidthAndHeight(const BufferInfo &info, unsigned int *alignedw, case HAL_PIXEL_FORMAT_RAW_OPAQUE: break; case HAL_PIXEL_FORMAT_NV21_ZSL: +#ifndef USE_UNALIGNED_NV21_ZSL aligned_w = ALIGN(width, 64); aligned_h = ALIGN(height, 64); +#endif break; case HAL_PIXEL_FORMAT_NV12_HEIF: aligned_w = INT(VENUS_Y_STRIDE(COLOR_FMT_NV12_512, width)); -- cgit v1.2.3