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 WorkerSkColorType 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