xref: /aosp_15_r20/external/skia/src/gpu/android/AHardwareBufferUtils.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker /*
2*c8dee2aaSAndroid Build Coastguard Worker  * Copyright 2023 Google LLC
3*c8dee2aaSAndroid Build Coastguard Worker  *
4*c8dee2aaSAndroid Build Coastguard Worker  * Use of this source code is governed by a BSD-style license that can be
5*c8dee2aaSAndroid Build Coastguard Worker  * found in the LICENSE file.
6*c8dee2aaSAndroid Build Coastguard Worker  */
7*c8dee2aaSAndroid Build Coastguard Worker 
8*c8dee2aaSAndroid Build Coastguard Worker #include "include/android/AHardwareBufferUtils.h"
9*c8dee2aaSAndroid Build Coastguard Worker 
10*c8dee2aaSAndroid Build Coastguard Worker #if __ANDROID_API__ >= 26
11*c8dee2aaSAndroid Build Coastguard Worker 
12*c8dee2aaSAndroid Build Coastguard Worker #include <android/hardware_buffer.h>
13*c8dee2aaSAndroid Build Coastguard Worker 
14*c8dee2aaSAndroid Build Coastguard Worker namespace AHardwareBufferUtils {
15*c8dee2aaSAndroid Build Coastguard Worker 
GetSkColorTypeFromBufferFormat(uint32_t bufferFormat)16*c8dee2aaSAndroid Build Coastguard Worker SkColorType GetSkColorTypeFromBufferFormat(uint32_t bufferFormat) {
17*c8dee2aaSAndroid Build Coastguard Worker     switch (bufferFormat) {
18*c8dee2aaSAndroid Build Coastguard Worker         case AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM:
19*c8dee2aaSAndroid Build Coastguard Worker             return kRGBA_8888_SkColorType;
20*c8dee2aaSAndroid Build Coastguard Worker         case AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM:
21*c8dee2aaSAndroid Build Coastguard Worker             return kRGB_888x_SkColorType;
22*c8dee2aaSAndroid Build Coastguard Worker #if __ANDROID_API__ >= 34
23*c8dee2aaSAndroid Build Coastguard Worker         case AHARDWAREBUFFER_FORMAT_R10G10B10A10_UNORM:
24*c8dee2aaSAndroid Build Coastguard Worker             return kRGBA_10x6_SkColorType;
25*c8dee2aaSAndroid Build Coastguard Worker #endif
26*c8dee2aaSAndroid Build Coastguard Worker         case AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT:
27*c8dee2aaSAndroid Build Coastguard Worker             return kRGBA_F16_SkColorType;
28*c8dee2aaSAndroid Build Coastguard Worker         case AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM:
29*c8dee2aaSAndroid Build Coastguard Worker             return kRGB_565_SkColorType;
30*c8dee2aaSAndroid Build Coastguard Worker         case AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM:
31*c8dee2aaSAndroid Build Coastguard Worker             return kRGB_888x_SkColorType;
32*c8dee2aaSAndroid Build Coastguard Worker         case AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM:
33*c8dee2aaSAndroid Build Coastguard Worker             return kRGBA_1010102_SkColorType;
34*c8dee2aaSAndroid Build Coastguard Worker #if __ANDROID_API__ >= 33
35*c8dee2aaSAndroid Build Coastguard Worker         case AHARDWAREBUFFER_FORMAT_R8_UNORM:
36*c8dee2aaSAndroid Build Coastguard Worker             return kAlpha_8_SkColorType;
37*c8dee2aaSAndroid Build Coastguard Worker #endif
38*c8dee2aaSAndroid Build Coastguard Worker         default:
39*c8dee2aaSAndroid Build Coastguard Worker             // Given that we only use this texture as a source, colorType will not impact how Skia
40*c8dee2aaSAndroid Build Coastguard Worker             // uses the texture.  The only potential affect this is anticipated to have is that for
41*c8dee2aaSAndroid Build Coastguard Worker             // some format types if we are not bound as an OES texture we may get invalid results
42*c8dee2aaSAndroid Build Coastguard Worker             // for SKP capture if we read back the texture.
43*c8dee2aaSAndroid Build Coastguard Worker             return kRGBA_8888_SkColorType;
44*c8dee2aaSAndroid Build Coastguard Worker     }
45*c8dee2aaSAndroid Build Coastguard Worker }
46*c8dee2aaSAndroid Build Coastguard Worker 
47*c8dee2aaSAndroid Build Coastguard Worker }  // namespace AHardwareBufferUtils
48*c8dee2aaSAndroid Build Coastguard Worker 
49*c8dee2aaSAndroid Build Coastguard Worker #endif
50