diff options
author | 2017-02-10 18:50:17 -0800 | |
---|---|---|
committer | 2017-02-15 17:00:46 -0800 | |
commit | 541f22658ab1617c9d12c98684ab40248df8749b (patch) | |
tree | ff1527eb4f7bfe7abd263e3c33b7e965634e1c09 | |
parent | bb5afada05e597b8a74e3888863319c319c3c944 (diff) |
Add RGBA 10:10:10:2 format for surfaces
Bug: 2984164
Test: CtsHardwareTestCases
Change-Id: Ifc90e413f414a19ac09e923e48ec7ff45d3e930b
-rw-r--r-- | include/android/hardware_buffer.h | 19 | ||||
-rw-r--r-- | include/android/native_window.h | 2 | ||||
-rw-r--r-- | include/ui/PixelFormat.h | 17 | ||||
-rw-r--r-- | libs/gui/CpuConsumer.cpp | 1 | ||||
-rw-r--r-- | libs/gui/GLConsumer.cpp | 1 | ||||
-rw-r--r-- | libs/ui/PixelFormat.cpp | 2 | ||||
-rw-r--r-- | services/surfaceflinger/DisplayHardware/HWComposer_hwc1.cpp | 1 | ||||
-rw-r--r-- | services/surfaceflinger/Layer.cpp | 1 |
8 files changed, 28 insertions, 16 deletions
diff --git a/include/android/hardware_buffer.h b/include/android/hardware_buffer.h index 24e217eefd..9c08c7b0b0 100644 --- a/include/android/hardware_buffer.h +++ b/include/android/hardware_buffer.h @@ -38,41 +38,48 @@ enum { * Vulkan: VK_FORMAT_R8G8B8A8_UNORM * OpenGL ES: GL_RGBA8 */ - AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM = 1, + AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM = 1, /** * Corresponding formats: * Vulkan: VK_FORMAT_R8G8B8A8_UNORM * OpenGL ES: GL_RGBA8 */ - AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM = 2, + AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM = 2, /** * Corresponding formats: * Vulkan: VK_FORMAT_R8G8B8_UNORM * OpenGL ES: GL_RGB8 */ - AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM = 3, + AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM = 3, /** * Corresponding formats: * Vulkan: VK_FORMAT_R5G6B5_UNORM_PACK16 * OpenGL ES: GL_RGB565 */ - AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM = 4, + AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM = 4, /** * Corresponding formats: * Vulkan: VK_FORMAT_R16G16B16A16_SFLOAT * OpenGL ES: GL_RGBA16F */ - AHARDWAREBUFFER_FORMAT_R16G16B16A16_SFLOAT = 0x16, + AHARDWAREBUFFER_FORMAT_R16G16B16A16_SFLOAT = 0x16, + + /** + * Corresponding formats: + * Vulkan: VK_FORMAT_A2R10G10B10_UNORM_PACK32 + * OpenGL ES: GL_RGB10_A2 + */ + AHARDWAREBUFFER_FORMAT_A2R10G10B10_UNORM_PACK32 = 0x2b, /** * An opaque binary blob format that must have height 1, with width equal to * the buffer size in bytes. */ - AHARDWAREBUFFER_FORMAT_BLOB = 0x21, + AHARDWAREBUFFER_FORMAT_BLOB = 0x21, }; enum { diff --git a/include/android/native_window.h b/include/android/native_window.h index 7d8d657424..6a46d7f93c 100644 --- a/include/android/native_window.h +++ b/include/android/native_window.h @@ -48,8 +48,6 @@ enum { WINDOW_FORMAT_RGBX_8888 = AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM, /** Red: 5 bits, Green: 6 bits, Blue: 5 bits. **/ WINDOW_FORMAT_RGB_565 = AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM, - /** Red: 16 bits, Green: 16 bits, Blue: 16 bits, Alpha: 16 bits. **/ - WINDOW_FORMAT_RGBA_FP16 = 0x16, }; struct ANativeWindow; diff --git a/include/ui/PixelFormat.h b/include/ui/PixelFormat.h index ab7a9a37a5..02773d92fc 100644 --- a/include/ui/PixelFormat.h +++ b/include/ui/PixelFormat.h @@ -53,14 +53,15 @@ enum { // real pixel formats supported for rendering ----------------------------- - PIXEL_FORMAT_RGBA_8888 = HAL_PIXEL_FORMAT_RGBA_8888, // 4x8-bit RGBA - PIXEL_FORMAT_RGBX_8888 = HAL_PIXEL_FORMAT_RGBX_8888, // 4x8-bit RGB0 - PIXEL_FORMAT_RGB_888 = HAL_PIXEL_FORMAT_RGB_888, // 3x8-bit RGB - PIXEL_FORMAT_RGB_565 = HAL_PIXEL_FORMAT_RGB_565, // 16-bit RGB - PIXEL_FORMAT_BGRA_8888 = HAL_PIXEL_FORMAT_BGRA_8888, // 4x8-bit BGRA - PIXEL_FORMAT_RGBA_5551 = 6, // 16-bit ARGB - PIXEL_FORMAT_RGBA_4444 = 7, // 16-bit ARGB - PIXEL_FORMAT_RGBA_FP16 = HAL_PIXEL_FORMAT_RGBA_FP16, // 64-bit RGBA + PIXEL_FORMAT_RGBA_8888 = HAL_PIXEL_FORMAT_RGBA_8888, // 4x8-bit RGBA + PIXEL_FORMAT_RGBX_8888 = HAL_PIXEL_FORMAT_RGBX_8888, // 4x8-bit RGB0 + PIXEL_FORMAT_RGB_888 = HAL_PIXEL_FORMAT_RGB_888, // 3x8-bit RGB + PIXEL_FORMAT_RGB_565 = HAL_PIXEL_FORMAT_RGB_565, // 16-bit RGB + PIXEL_FORMAT_BGRA_8888 = HAL_PIXEL_FORMAT_BGRA_8888, // 4x8-bit BGRA + PIXEL_FORMAT_RGBA_5551 = 6, // 16-bit ARGB + PIXEL_FORMAT_RGBA_4444 = 7, // 16-bit ARGB + PIXEL_FORMAT_RGBA_FP16 = HAL_PIXEL_FORMAT_RGBA_FP16, // 64-bit RGBA + PIXEL_FORMAT_RGBA_1010102 = HAL_PIXEL_FORMAT_RGBA_1010102, // 32-bit RGBA }; typedef int32_t PixelFormat; diff --git a/libs/gui/CpuConsumer.cpp b/libs/gui/CpuConsumer.cpp index a9bafef8b6..ae7c65c441 100644 --- a/libs/gui/CpuConsumer.cpp +++ b/libs/gui/CpuConsumer.cpp @@ -65,6 +65,7 @@ static bool isPossiblyYUV(PixelFormat format) { case HAL_PIXEL_FORMAT_RGBA_8888: case HAL_PIXEL_FORMAT_RGBX_8888: case HAL_PIXEL_FORMAT_RGBA_FP16: + case HAL_PIXEL_FORMAT_RGBA_1010102: case HAL_PIXEL_FORMAT_RGB_888: case HAL_PIXEL_FORMAT_RGB_565: case HAL_PIXEL_FORMAT_BGRA_8888: diff --git a/libs/gui/GLConsumer.cpp b/libs/gui/GLConsumer.cpp index 9532c52ee4..55e0d264bb 100644 --- a/libs/gui/GLConsumer.cpp +++ b/libs/gui/GLConsumer.cpp @@ -863,6 +863,7 @@ void GLConsumer::computeTransformMatrix(float outTransform[16], case PIXEL_FORMAT_RGBA_8888: case PIXEL_FORMAT_RGBX_8888: case PIXEL_FORMAT_RGBA_FP16: + case PIXEL_FORMAT_RGBA_1010102: case PIXEL_FORMAT_RGB_888: case PIXEL_FORMAT_RGB_565: case PIXEL_FORMAT_BGRA_8888: diff --git a/libs/ui/PixelFormat.cpp b/libs/ui/PixelFormat.cpp index 734472d2b1..e88fdd5e84 100644 --- a/libs/ui/PixelFormat.cpp +++ b/libs/ui/PixelFormat.cpp @@ -27,6 +27,7 @@ uint32_t bytesPerPixel(PixelFormat format) { case PIXEL_FORMAT_RGBA_8888: case PIXEL_FORMAT_RGBX_8888: case PIXEL_FORMAT_BGRA_8888: + case PIXEL_FORMAT_RGBA_1010102: return 4; case PIXEL_FORMAT_RGB_888: return 3; @@ -45,6 +46,7 @@ uint32_t bitsPerPixel(PixelFormat format) { case PIXEL_FORMAT_RGBA_8888: case PIXEL_FORMAT_RGBX_8888: case PIXEL_FORMAT_BGRA_8888: + case PIXEL_FORMAT_RGBA_1010102: return 32; case PIXEL_FORMAT_RGB_888: return 24; diff --git a/services/surfaceflinger/DisplayHardware/HWComposer_hwc1.cpp b/services/surfaceflinger/DisplayHardware/HWComposer_hwc1.cpp index cc5578df17..e0946a758b 100644 --- a/services/surfaceflinger/DisplayHardware/HWComposer_hwc1.cpp +++ b/services/surfaceflinger/DisplayHardware/HWComposer_hwc1.cpp @@ -1160,6 +1160,7 @@ static String8 getFormatStr(PixelFormat format) { case PIXEL_FORMAT_RGBA_8888: return String8("RGBA_8888"); case PIXEL_FORMAT_RGBX_8888: return String8("RGBx_8888"); case PIXEL_FORMAT_RGBA_FP16: return String8("RGBA_FP16"); + case PIXEL_FORMAT_RGBA_1010102: return String8("RGBA_1010102"); case PIXEL_FORMAT_RGB_888: return String8("RGB_888"); case PIXEL_FORMAT_RGB_565: return String8("RGB_565"); case PIXEL_FORMAT_BGRA_8888: return String8("BGRA_8888"); diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index 3a9bca6bb0..bb1fca68d7 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -1299,6 +1299,7 @@ bool Layer::getOpacityForFormat(uint32_t format) { case HAL_PIXEL_FORMAT_RGBA_8888: case HAL_PIXEL_FORMAT_BGRA_8888: case HAL_PIXEL_FORMAT_RGBA_FP16: + case HAL_PIXEL_FORMAT_RGBA_1010102: return false; } // in all other case, we have no blending (also for unknown formats) |