diff options
Diffstat (limited to 'gralloc/gr_utils.cpp')
-rw-r--r-- | gralloc/gr_utils.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/gralloc/gr_utils.cpp b/gralloc/gr_utils.cpp index 3a21d7f8..d9559122 100644 --- a/gralloc/gr_utils.cpp +++ b/gralloc/gr_utils.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2021, The Linux Foundation. All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -156,7 +156,6 @@ bool IsCompressedRGBFormat(int format) { bool IsCameraCustomFormat(int format) { switch (format) { case HAL_PIXEL_FORMAT_NV21_ZSL: - case HAL_PIXEL_FORMAT_NV12_LINEAR_FLEX: case HAL_PIXEL_FORMAT_NV12_UBWC_FLEX: case HAL_PIXEL_FORMAT_NV12_UBWC_FLEX_2_BATCH: case HAL_PIXEL_FORMAT_NV12_UBWC_FLEX_4_BATCH: @@ -374,6 +373,9 @@ unsigned int GetSize(const BufferInfo &info, unsigned int alignedw, unsigned int } size = ALIGN(alignedw * alignedh * 2, SIZE_4K); break; + case HAL_PIXEL_FORMAT_NV12_LINEAR_FLEX: + size = VENUS_BUFFER_SIZE(COLOR_FMT_NV12_128, width, height); + break; case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS: case HAL_PIXEL_FORMAT_NV12_ENCODEABLE: size = VENUS_BUFFER_SIZE(COLOR_FMT_NV12, width, height); @@ -532,6 +534,10 @@ void GetYuvSPPlaneInfo(const BufferInfo &info, int format, uint32_t width, uint3 c_height = height; break; #ifndef QMAA + case HAL_PIXEL_FORMAT_NV12_LINEAR_FLEX: + c_height = VENUS_UV_SCANLINES(COLOR_FMT_NV12_128, height); + c_size = c_stride * c_height; + break; case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS: case HAL_PIXEL_FORMAT_NV12_ENCODEABLE: c_height = VENUS_UV_SCANLINES(COLOR_FMT_NV12, height); @@ -1129,6 +1135,10 @@ void GetAlignedWidthAndHeight(const BufferInfo &info, unsigned int *alignedw, aligned_w = INT(VENUS_Y_STRIDE(COLOR_FMT_P010, width) / 2); aligned_h = INT(VENUS_Y_SCANLINES(COLOR_FMT_P010, height)); break; + case HAL_PIXEL_FORMAT_NV12_LINEAR_FLEX: + aligned_w = INT(VENUS_Y_STRIDE(COLOR_FMT_NV12_128, width)); + aligned_h = INT(VENUS_Y_SCANLINES(COLOR_FMT_NV12_128, height)); + break; case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS: case HAL_PIXEL_FORMAT_NV12_ENCODEABLE: aligned_w = INT(VENUS_Y_STRIDE(COLOR_FMT_NV12, width)); @@ -1184,6 +1194,7 @@ int GetBufferLayout(private_handle_t *hnd, uint32_t stride[4], uint32_t offset[4 switch (hnd->format) { case HAL_PIXEL_FORMAT_YCbCr_420_SP: case HAL_PIXEL_FORMAT_YCbCr_422_SP: + case HAL_PIXEL_FORMAT_NV12_LINEAR_FLEX: case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS: case HAL_PIXEL_FORMAT_NV12_ENCODEABLE: case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS_UBWC: @@ -1443,6 +1454,7 @@ int GetYUVPlaneInfo(const BufferInfo &info, int32_t format, int32_t width, int32 // Semiplanar case HAL_PIXEL_FORMAT_YCbCr_420_SP: case HAL_PIXEL_FORMAT_YCbCr_422_SP: + case HAL_PIXEL_FORMAT_NV12_LINEAR_FLEX: case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS: case HAL_PIXEL_FORMAT_NV12_ENCODEABLE: // Same as YCbCr_420_SP_VENUS case HAL_PIXEL_FORMAT_NV21_ENCODEABLE: @@ -1675,6 +1687,7 @@ void GetYuvSubSamplingFactor(int32_t format, int *h_subsampling, int *v_subsampl case HAL_PIXEL_FORMAT_YCbCr_420_TP10_UBWC: case HAL_PIXEL_FORMAT_YCbCr_420_P010_UBWC: case HAL_PIXEL_FORMAT_YCbCr_420_P010_VENUS: + case HAL_PIXEL_FORMAT_NV12_LINEAR_FLEX: case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS: case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS_UBWC: case HAL_PIXEL_FORMAT_YCrCb_420_SP_ADRENO: @@ -1844,6 +1857,7 @@ void GetDRMFormat(uint32_t format, uint32_t flags, uint32_t *drm_format, case HAL_PIXEL_FORMAT_XBGR_2101010: *drm_format = DRM_FORMAT_RGBX1010102; break; + case HAL_PIXEL_FORMAT_NV12_LINEAR_FLEX: case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS: *drm_format = DRM_FORMAT_NV12; break; @@ -1895,6 +1909,9 @@ void GetDRMFormat(uint32_t format, uint32_t flags, uint32_t *drm_format, case HAL_PIXEL_FORMAT_YV12: *drm_format = DRM_FORMAT_YVU420; break; + case HAL_PIXEL_FORMAT_RGBA_FP16: + ALOGW("HAL_PIXEL_FORMAT_RGBA_FP16 currently not supported"); + break; default: ALOGE("Unsupported format %d", format); } |