summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiddharth Kapoor <ksiddharth@google.com>2022-08-03 23:58:26 -0700
committerSiddharth Kapoor <ksiddharth@google.com>2022-08-09 12:55:26 -0700
commitf74d0cd614e0b9f4332fdf57f4032a69e0fc89aa (patch)
tree3e7e2b2466ec5363ce1d87847bc0dfd2c6d8f2c3
parent95a44caff0969d1711b8e157a73f20a30e65f276 (diff)
downloadgchips-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.bp17
-rw-r--r--gralloc4/src/Android.bp7
-rw-r--r--gralloc4/src/core/mali_gralloc_bufferallocation.cpp14
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);