gralloc: Add support for HAL_PIXEL_FORMAT_RGBA_FP16 in gralloc
Change-Id: I1596fe12cd380f453988f4c6c8b63ac2bbb11c4b
diff --git a/gralloc/gr_utils.cpp b/gralloc/gr_utils.cpp
index 04c41b3..644ceae 100644
--- a/gralloc/gr_utils.cpp
+++ b/gralloc/gr_utils.cpp
@@ -652,6 +652,7 @@
case HAL_PIXEL_FORMAT_DEPTH_24_STENCIL_8:
case HAL_PIXEL_FORMAT_DEPTH_32F:
case HAL_PIXEL_FORMAT_STENCIL_8:
+ case HAL_PIXEL_FORMAT_RGBA_FP16:
return true;
default:
break;
@@ -797,6 +798,7 @@
case HAL_PIXEL_FORMAT_RGBX_8888:
case HAL_PIXEL_FORMAT_RGBA_1010102:
case HAL_PIXEL_FORMAT_RGBX_1010102:
+ case HAL_PIXEL_FORMAT_RGBA_FP16:
bpp = GetBppForUncompressedRGB(format);
size = alignedw * alignedh * bpp;
size += GetRgbUBwcMetaBufferSize(width, height, bpp);
@@ -842,6 +844,7 @@
case HAL_PIXEL_FORMAT_RGBX_8888:
case HAL_PIXEL_FORMAT_RGBA_1010102:
case HAL_PIXEL_FORMAT_RGBX_1010102:
+ case HAL_PIXEL_FORMAT_RGBA_FP16:
meta_size = GetRgbUBwcMetaBufferSize(hnd->width, hnd->height, bpp);
break;
default:
@@ -1021,36 +1024,10 @@
struct android_ycbcr yuvPlaneInfo[2] = {};
*num_planes = 1;
- stride[0] = 0;
- switch (hnd->format) {
- case HAL_PIXEL_FORMAT_RGB_565:
- case HAL_PIXEL_FORMAT_BGR_565:
- case HAL_PIXEL_FORMAT_RGBA_5551:
- case HAL_PIXEL_FORMAT_RGBA_4444:
- stride[0] = static_cast<uint32_t>(hnd->width * 2);
- break;
- case HAL_PIXEL_FORMAT_RGB_888:
- stride[0] = static_cast<uint32_t>(hnd->width * 3);
- break;
- case HAL_PIXEL_FORMAT_RGBA_8888:
- case HAL_PIXEL_FORMAT_BGRA_8888:
- case HAL_PIXEL_FORMAT_RGBX_8888:
- case HAL_PIXEL_FORMAT_BGRX_8888:
- case HAL_PIXEL_FORMAT_RGBA_1010102:
- case HAL_PIXEL_FORMAT_ARGB_2101010:
- case HAL_PIXEL_FORMAT_RGBX_1010102:
- case HAL_PIXEL_FORMAT_XRGB_2101010:
- case HAL_PIXEL_FORMAT_BGRA_1010102:
- case HAL_PIXEL_FORMAT_ABGR_2101010:
- case HAL_PIXEL_FORMAT_BGRX_1010102:
- case HAL_PIXEL_FORMAT_XBGR_2101010:
- stride[0] = static_cast<uint32_t>(hnd->width * 4);
- break;
- }
-
- // Format is RGB
- if (stride[0]) {
+ if (IsUncompressedRGBFormat(hnd->format)) {
+ uint32_t bpp = GetBppForUncompressedRGB(hnd->format);
+ stride[0] = static_cast<uint32_t>(hnd->width * bpp);
return 0;
}