diff options
author | Siddharth Kapoor <ksiddharth@google.com> | 2022-08-03 23:58:26 -0700 |
---|---|---|
committer | Siddharth Kapoor <ksiddharth@google.com> | 2022-08-09 12:55:26 -0700 |
commit | f74d0cd614e0b9f4332fdf57f4032a69e0fc89aa (patch) | |
tree | 3e7e2b2466ec5363ce1d87847bc0dfd2c6d8f2c3 | |
parent | 95a44caff0969d1711b8e157a73f20a30e65f276 (diff) | |
download | gchips-f74d0cd614e0b9f4332fdf57f4032a69e0fc89aa.tar.gz |
Align stride for RAW10 Camera usage to 32-byte
Bug: 241036080
Signed-off-by: Siddharth Kapoor <ksiddharth@google.com>
Change-Id: I468d6c4d6c3b9395171e849c5de45ae2b075aa9c
-rw-r--r-- | gralloc4/Android.bp | 17 | ||||
-rw-r--r-- | gralloc4/src/Android.bp | 7 | ||||
-rw-r--r-- | gralloc4/src/core/mali_gralloc_bufferallocation.cpp | 14 |
3 files changed, 37 insertions, 1 deletions
diff --git a/gralloc4/Android.bp b/gralloc4/Android.bp index 8edc25a..d97cbdb 100644 --- a/gralloc4/Android.bp +++ b/gralloc4/Android.bp @@ -35,6 +35,7 @@ soong_config_module_type { "gralloc_hwc_force_bgra_8888", "gralloc_hwc_fb_disable_afbc", "gralloc_camera_write_raw16", + "soc" ], properties: [ "cflags", @@ -62,6 +63,15 @@ soong_config_bool_variable { name: "gralloc_camera_write_raw16", } +soong_config_string_variable { + name: "soc", + values: [ + "gs101", + "gs201", + "zuma", + ], +} + arm_gralloc_cc_defaults { name: "arm_gralloc_defaults", owner: "arm", @@ -139,5 +149,12 @@ arm_gralloc_cc_defaults { "-DGRALLOC_CAMERA_WRITE_RAW16=1", ], }, + soc: { + zuma: { + cflags: [ + "-DSOC_ZUMA" + ], + }, + }, }, } diff --git a/gralloc4/src/Android.bp b/gralloc4/src/Android.bp index 867ff2e..a9679c1 100644 --- a/gralloc4/src/Android.bp +++ b/gralloc4/src/Android.bp @@ -38,6 +38,9 @@ cc_library_headers { cc_library_shared { name: "libGralloc4Wrapper", vendor: true, + defaults: [ + "arm_gralloc_defaults", + ], srcs: [ "libGralloc4Wrapper/wrapper.cpp", "allocator/mali_gralloc_ion.cpp", @@ -52,6 +55,10 @@ cc_library_shared { cflags: [ "-DGRALLOC_LIBRARY_BUILD=1", "-Wthread-safety", + /* Minimum buffer dimensions in pixels when buffer will use AFBC */ + /* TODO: set this via BoardConfig */ + "-DGRALLOC_DISP_W=0", + "-DGRALLOC_DISP_H=0", ], static_libs: [ "libgralloc_capabilities", diff --git a/gralloc4/src/core/mali_gralloc_bufferallocation.cpp b/gralloc4/src/core/mali_gralloc_bufferallocation.cpp index 5ec2fd5..4f7af2f 100644 --- a/gralloc4/src/core/mali_gralloc_bufferallocation.cpp +++ b/gralloc4/src/core/mali_gralloc_bufferallocation.cpp @@ -48,6 +48,9 @@ /* IP-specific align values */ #define GPU_BYTE_ALIGN_DEFAULT 64 +#ifdef SOC_ZUMA +#define CAMERA_RAW10_BYTE_ALIGN 32 +#endif /* Always CPU align for Exynos */ #define CAN_SKIP_CPU_ALIGN 0 @@ -613,6 +616,15 @@ static void calc_allocation_size(const int width, hw_align = std::max(hw_align, static_cast<uint16_t>(GPU_BYTE_ALIGN_DEFAULT)); } +#ifdef SOC_ZUMA + if (has_camera_usage && format.id == MALI_GRALLOC_FORMAT_INTERNAL_RAW10) { + /* + * Camera ISP requires RAW10 buffers to have 32-byte aligned stride + */ + hw_align = std::max(hw_align, static_cast<uint16_t>(CAMERA_RAW10_BYTE_ALIGN)); + } +#endif + uint32_t cpu_align = 0; if (!(has_camera_usage && !has_cpu_usage && format.id == MALI_GRALLOC_FORMAT_INTERNAL_RAW10)) { @@ -1082,7 +1094,7 @@ int mali_gralloc_derive_format_and_size(buffer_descriptor_t * const bufDescripto usage & ~(GRALLOC_USAGE_PRIVATE_MASK | GRALLOC_USAGE_SW_READ_MASK | GRALLOC_USAGE_SW_WRITE_MASK), usage & (GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_GPU_DATA_BUFFER), (usage & (GRALLOC_USAGE_HW_VIDEO_ENCODER | GRALLOC_USAGE_HW_VIDEO_DECODER)) && (usage & GRALLOC_USAGE_GOOGLE_IP_BO), - usage & (GRALLOC_USAGE_HW_CAMERA_WRITE | GRALLOC_USAGE_HW_CAMERA_READ), + usage & (GRALLOC_USAGE_HW_CAMERA_WRITE | GRALLOC_USAGE_HW_CAMERA_READ), &bufDescriptor->pixel_stride, &bufDescriptor->alloc_sizes[0], bufDescriptor->plane_info); |