Hi freescale,
For using platform I.MX6QP and Android 6.0.1, test camera format is failed in CTSV R13.
CTSV need to test format N21, YV12, YUY2,(160x120, 176x144, 320x180, 320x240, ...,640x480).
Question list :
(1.) It test YUY2 format is failed for handing preview screen was show green screen.
For logcat issue log:
01-18 03:10:50.856 221 1252 E imx6.gralloc: int GPUBufferManager::lockYUVHandle(private_handle_t*, android_ycbcr*) not support format:0x14
01-18 03:10:50.856 221 1252 W GraphicBufferMapper: lock(...) failed -22 (Invalid argument)
01-18 03:10:50.892 221 311 E FslCameraHAL: processBufferWithIPU:320, IPU_CHECK_TASK ret=12
01-18 03:10:50.892 221 1252 E imx6.gralloc: int GPUBufferManager::lockYUVHandle(private_handle_t*, android_ycbcr*) not support format:0x14
01-18 03:10:50.892 221 1252 W GraphicBufferMapper: lock(...) failed -22 (Invalid argument)
01-18 03:10:50.924 221 311 E FslCameraHAL: processBufferWithIPU:320, IPU_CHECK_TASK ret=12
01-18 03:10:50.924 221 1252 E imx6.gralloc: int GPUBufferManager::lockYUVHandle(private_handle_t*, android_ycbcr*)
For failed status:
Test_fail_picture
(2.) For test YV12 , 424X240, the result is failed.
Logcat failed log:
01-18 03:29:51.547 1213 1229 D OpenGLRenderer: endAllStagingAnimators on 0x917f0700 (ListPopupWindow$DropDownListView) with handle 0x92564f30
01-18 03:29:51.637 221 1259 I FslCameraHAL: Stream::Stream(int, camera3_stream_t*, Camera*) create preview stream
01-18 03:29:51.637 221 1259 I FslCameraHAL: stream: w:424, h:240, format:0x103, usage:0x8000302, buffers:3
01-18 03:29:51.637 221 1259 I FslCameraHAL: create callback stream
01-18 03:29:51.637 221 1259 I FslCameraHAL: stream: w:424, h:240, format:0x101, usage:0x8000303, buffers:3
01-18 03:29:51.650 221 1325 I FslCameraHAL: int32_t VideoStream::configure(android::sp<Stream>): w:160, h:120, sensor format:0x14, stream format:0x103, fps:15, num:3
01-18 03:29:51.651 221 311 I FslCameraHAL: virtual int32_t UvcDevice::UvcStream::onDeviceStopLocked()
01-18 03:29:51.664 221 311 I FslCameraHAL: virtual int32_t DMAStream::freeBuffersLocked()
01-18 03:29:51.664 221 311 I FslCameraHAL: freeBufferToIon buffer num:3
01-18 03:29:51.664 221 311 I FslCameraHAL: virtual int32_t UvcDevice::UvcStream::onDeviceConfigureLocked()
01-18 03:29:51.664 221 311 I FslCameraHAL: virtual int32_t DMAStream::onDeviceConfigureLocked()
01-18 03:29:51.664 221 311 I FslCameraHAL: virtual int32_t USPStream::onDeviceConfigureLocked()
01-18 03:29:51.664 221 311 I FslCameraHAL: virtual int32_t MMAPStream::onDeviceConfigureLocked()
01-18 03:29:51.664 221 311 I FslCameraHAL: Width * Height 424 x 240 format YUYV, fps: 15
01-18 03:29:51.664 221 311 E FslCameraHAL: width:424 height:240 is not supported.
01-18 03:29:51.694 221 311 I FslCameraHAL: virtual int32_t DMAStream::allocateBuffersLocked()
01-18 03:29:51.694 221 311 I FslCameraHAL: allocateBufferFromIon buffer num:3
01-18 03:29:51.696 221 311 I FslCameraHAL: phyalloc ptr:0xa9b8d000, phy:0x26180000, ionSize:208896
01-18 03:29:51.698 221 311 I FslCameraHAL: phyalloc ptr:0xa9b21000, phy:0x261c0000, ionSize:208896
01-18 03:29:51.701 221 311 I FslCameraHAL: phyalloc ptr:0xa9aee000, phy:0x26200000, ionSize:208896
01-18 03:29:51.701 221 311 I FslCameraHAL: virtual int32_t UvcDevice::UvcStream::onDeviceStartLocked()
01-18 03:29:51.701 221 311 I FslCameraHAL: buf[0] length:203520
01-18 03:29:51.701 221 311 I FslCameraHAL: buf[1] length:203520
01-18 03:29:51.701 221 311 I FslCameraHAL: buf[2] length:203520
Fail Piture:
YV12_test_fail
For freescale camera HAL description ./hardware/imx/mx6/libcamera3/CameraHAL.cpp
/* Hardware limitation on I.MX6DQ platform
* VPU only support NV12&I420 format.
* IPU doesn't support NV21 format.
* But android framework requires NV21&YV12 format support.
* YV12&I420 Y/UV stride doesn't match between android framework and IPU/GPU.
** Android YV12&I420 define:
* - a horizontal stride multiple of 16 pixels
* - a vertical stride equal to the height
* - y_size = stride * height
* - c_stride = ALIGN(stride/2, 16)
*
** GPU YV12&I420 limitation:
* - GPU limit Y stride to be 32 alignment, and UV stride 16 alignment.
*
** IPU hardware YV12&I420 limitation:
* - IPU limit the Y stride to be 2x of the UV stride alignment.
** IPU driver YV12&I420 define:
* - y_stride = width
* - uv_stride = y_stride / 2;
* So there is work around to treat the format on I.MX6DQ platform:
* Change format NV21&YV12 to NV12&I420 in Camera framework.
* The NV21 format required by CTS is treated as NV12.
* YUV alignment required by CTS doesn't match on I.MX6DQ platform.
*/
How to fix the issue in IMX6qp for CTSV?