From 3cc87edaf1c40a2071a0bae129ba1c557d2da6fc Mon Sep 17 00:00:00 2001 From: Saurabh Shah Date: Tue, 24 Oct 2017 14:09:35 -0700 Subject: [PATCH] hwc/gralloc: Add missing formats Add missing formats FP16, 1010102, P010 variants. Change-Id: I2710a0aff7f87381afb8ec6ee7cb74ecf008f0ae CRs-fixed: 2129663 2128978 2127406 --- libgralloc1/gr_adreno_info.cpp | 2 ++ libgralloc1/gr_adreno_info.h | 3 ++- libgralloc1/gr_buf_mgr.cpp | 3 +++ sdm/libs/hwc2/hwc_layers.cpp | 6 ++++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/libgralloc1/gr_adreno_info.cpp b/libgralloc1/gr_adreno_info.cpp index f71f1d24..1ac99bee 100644 --- a/libgralloc1/gr_adreno_info.cpp +++ b/libgralloc1/gr_adreno_info.cpp @@ -212,6 +212,8 @@ ADRENOPIXELFORMAT AdrenoMemInfo::GetGpuPixelFormat(int hal_format) { return ADRENO_PIXELFORMAT_R10G10B10X2_UNORM; case HAL_PIXEL_FORMAT_ABGR_2101010: return ADRENO_PIXELFORMAT_A2B10G10R10_UNORM; + case HAL_PIXEL_FORMAT_RGBA_FP16: + return ADRENO_PIXELFORMAT_R16G16B16A16_FLOAT; default: ALOGE("%s: No map for format: 0x%x", __FUNCTION__, hal_format); break; diff --git a/libgralloc1/gr_adreno_info.h b/libgralloc1/gr_adreno_info.h index b19256a3..83966ae4 100644 --- a/libgralloc1/gr_adreno_info.h +++ b/libgralloc1/gr_adreno_info.h @@ -37,6 +37,7 @@ namespace gralloc1 { // Adreno Pixel Formats typedef enum { ADRENO_PIXELFORMAT_UNKNOWN = 0, + ADRENO_PIXELFORMAT_R16G16B16A16_FLOAT = 10, ADRENO_PIXELFORMAT_R10G10B10A2_UNORM = 24, // Vertex, Normalized GL_UNSIGNED_INT_10_10_10_2_OES ADRENO_PIXELFORMAT_R8G8B8A8 = 28, ADRENO_PIXELFORMAT_R8G8B8A8_SRGB = 29, @@ -66,7 +67,7 @@ typedef enum { ADRENO_PIXELFORMAT_NV21 = 619, ADRENO_PIXELFORMAT_Y8U8V8A8 = 620, // YUV 4:4:4 packed (1 plane) ADRENO_PIXELFORMAT_Y8 = 625, // Single 8-bit luma only channel YUV format - ADRENO_PIXELFORMAT_TP10 = 648, // YUV 4:2:0 planar 10 bits/comp (2 planes) + ADRENO_PIXELFORMAT_TP10 = 654, // YUV 4:2:0 planar 10 bits/comp (2 planes) } ADRENOPIXELFORMAT; class AdrenoMemInfo { diff --git a/libgralloc1/gr_buf_mgr.cpp b/libgralloc1/gr_buf_mgr.cpp index 202da7e6..cd89d41b 100644 --- a/libgralloc1/gr_buf_mgr.cpp +++ b/libgralloc1/gr_buf_mgr.cpp @@ -832,6 +832,9 @@ static bool IsYuvFormat(const private_handle_t *hnd) { case HAL_PIXEL_FORMAT_RAW10: case HAL_PIXEL_FORMAT_YV12: case HAL_PIXEL_FORMAT_Y8: + case HAL_PIXEL_FORMAT_YCbCr_420_P010: + case HAL_PIXEL_FORMAT_YCbCr_420_TP10_UBWC: + case HAL_PIXEL_FORMAT_YCbCr_420_P010_UBWC: return true; default: return false; diff --git a/sdm/libs/hwc2/hwc_layers.cpp b/sdm/libs/hwc2/hwc_layers.cpp index 6a33b8f3..2466413c 100644 --- a/sdm/libs/hwc2/hwc_layers.cpp +++ b/sdm/libs/hwc2/hwc_layers.cpp @@ -548,6 +548,12 @@ LayerBufferFormat HWCLayer::GetSDMFormat(const int32_t &source, const int flags) case HAL_PIXEL_FORMAT_NV12_ENCODEABLE: format = kFormatYCbCr420SPVenusUbwc; break; + case HAL_PIXEL_FORMAT_RGBA_1010102: + format = kFormatRGBA1010102Ubwc; + break; + case HAL_PIXEL_FORMAT_RGBX_1010102: + format = kFormatRGBX1010102Ubwc; + break; case HAL_PIXEL_FORMAT_YCbCr_420_TP10_UBWC: format = kFormatYCbCr420TP10Ubwc; break;