display: Add support to HAL_PIXEL_FORMAT_NV21_ZSL format

Add Support to HAL_PIXEL_FORMAT_NV21_ZSL format in gralloc for
camera capture usecase.
This support is required because, CPP module requires 64 byte
aligned width and height to resolve corruption in bottom/left edge
of the landscape/portrait buffer.

Change-Id: Id3e0e5f3d695d5111f3469f78a1d52aad9bea4f4
(cherry picked from commit 512ee1dcef6fa47dfdcf3990fea29bd85f967f02)
This commit is contained in:
Ramkumar Radhakrishnan
2013-07-23 16:12:08 -07:00
committed by Arun Kumar K.R
parent 62e1d731cd
commit ff511027c4
3 changed files with 12 additions and 1 deletions

View File

@@ -161,6 +161,9 @@ int AdrenoMemInfo::getStride(int width, int format)
case HAL_PIXEL_FORMAT_BLOB: case HAL_PIXEL_FORMAT_BLOB:
stride = width; stride = width;
break; break;
case HAL_PIXEL_FORMAT_NV21_ZSL:
stride = ALIGN(width, 64);
break;
default: break; default: break;
} }
} }
@@ -340,6 +343,10 @@ size_t getBufferSizeAndDimensions(int width, int height, int format,
alignedw = width; alignedw = width;
size = width; size = width;
break; break;
case HAL_PIXEL_FORMAT_NV21_ZSL:
alignedh = ALIGN(height, 64);
size = ALIGN((alignedw*alignedh) + (alignedw* alignedh)/2, 4096);
break;
default: default:
ALOGE("unrecognized pixel format: 0x%x", format); ALOGE("unrecognized pixel format: 0x%x", format);
return -EINVAL; return -EINVAL;

View File

@@ -267,7 +267,10 @@ int gpu_context_t::alloc_impl(int w, int h, int format, int usage,
//the usage bits, gralloc assigns a format. //the usage bits, gralloc assigns a format.
if(format == HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED) { if(format == HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED) {
if(usage & GRALLOC_USAGE_HW_VIDEO_ENCODER) if(usage & GRALLOC_USAGE_HW_VIDEO_ENCODER)
grallocFormat = HAL_PIXEL_FORMAT_NV12_ENCODEABLE; //NV12 grallocFormat = HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS;
else if((usage & GRALLOC_USAGE_HW_CAMERA_MASK)
== GRALLOC_USAGE_HW_CAMERA_ZSL)
grallocFormat = HAL_PIXEL_FORMAT_NV21_ZSL; //NV21 ZSL
else if(usage & GRALLOC_USAGE_HW_CAMERA_READ) else if(usage & GRALLOC_USAGE_HW_CAMERA_READ)
grallocFormat = HAL_PIXEL_FORMAT_YCrCb_420_SP; //NV21 grallocFormat = HAL_PIXEL_FORMAT_YCrCb_420_SP; //NV21
else if(usage & GRALLOC_USAGE_HW_CAMERA_WRITE) else if(usage & GRALLOC_USAGE_HW_CAMERA_WRITE)

View File

@@ -105,6 +105,7 @@ enum {
HAL_PIXEL_FORMAT_YCrCb_444_SP = 0x110, HAL_PIXEL_FORMAT_YCrCb_444_SP = 0x110,
HAL_PIXEL_FORMAT_YCrCb_422_I = 0x111, HAL_PIXEL_FORMAT_YCrCb_422_I = 0x111,
HAL_PIXEL_FORMAT_BGRX_8888 = 0x112, HAL_PIXEL_FORMAT_BGRX_8888 = 0x112,
HAL_PIXEL_FORMAT_NV21_ZSL = 0x113,
HAL_PIXEL_FORMAT_INTERLACE = 0x180, HAL_PIXEL_FORMAT_INTERLACE = 0x180,
}; };