2 * Copyright 2017 The Chromium OS Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file.
9 #include "i915_private_android.h"
10 #include "i915_private_android_types.h"
12 #include "cros_gralloc_helpers.h"
14 #include <hardware/gralloc.h>
16 uint32_t i915_private_convert_format(int format)
19 case HAL_PIXEL_FORMAT_NV12:
20 return DRM_FORMAT_NV12;
21 case HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL:
22 return DRM_FORMAT_NV12_Y_TILED_INTEL;
23 case HAL_PIXEL_FORMAT_YCbCr_422_I:
24 return DRM_FORMAT_YUYV;
25 case HAL_PIXEL_FORMAT_Y16:
26 return DRM_FORMAT_R16;
27 case HAL_PIXEL_FORMAT_YCbCr_444_888:
28 return DRM_FORMAT_YUV444;
29 case HAL_PIXEL_FORMAT_YCrCb_420_SP:
30 return DRM_FORMAT_NV21;
31 case HAL_PIXEL_FORMAT_YCbCr_422_SP:
32 return DRM_FORMAT_NV16;
33 case HAL_PIXEL_FORMAT_YCbCr_422_888:
34 return DRM_FORMAT_YUV422;
35 case HAL_PIXEL_FORMAT_P010_INTEL:
36 return DRM_FORMAT_P010;
37 case HAL_PIXEL_FORMAT_RGBA_FP16:
38 return DRM_FORMAT_XBGR161616;
39 case HAL_PIXEL_FORMAT_RGBA_1010102:
40 return DRM_FORMAT_ABGR2101010;
43 return DRM_FORMAT_NONE;
46 int32_t i915_private_invert_format(int format)
48 /* Convert the DRM FourCC into the most specific HAL pixel format. */
50 case DRM_FORMAT_ARGB8888:
51 return HAL_PIXEL_FORMAT_BGRA_8888;
52 case DRM_FORMAT_RGB565:
53 return HAL_PIXEL_FORMAT_RGB_565;
54 case DRM_FORMAT_RGB888:
55 return HAL_PIXEL_FORMAT_RGB_888;
56 case DRM_FORMAT_ABGR8888:
57 return HAL_PIXEL_FORMAT_RGBA_8888;
58 case DRM_FORMAT_XBGR8888:
59 return HAL_PIXEL_FORMAT_RGBX_8888;
60 case DRM_FORMAT_FLEX_YCbCr_420_888:
61 return HAL_PIXEL_FORMAT_YCbCr_420_888;
62 case DRM_FORMAT_YVU420_ANDROID:
63 return HAL_PIXEL_FORMAT_YV12;
65 return HAL_PIXEL_FORMAT_BLOB;
67 return HAL_PIXEL_FORMAT_NV12;
68 case DRM_FORMAT_NV12_Y_TILED_INTEL:
69 return HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL;
71 return HAL_PIXEL_FORMAT_YCbCr_422_I;
73 return HAL_PIXEL_FORMAT_Y16;
75 return HAL_PIXEL_FORMAT_P010_INTEL;
76 case DRM_FORMAT_YUV444:
77 return HAL_PIXEL_FORMAT_YCbCr_444_888;
79 return HAL_PIXEL_FORMAT_YCrCb_420_SP;
81 return HAL_PIXEL_FORMAT_YCbCr_422_SP;
82 case DRM_FORMAT_YUV422:
83 return HAL_PIXEL_FORMAT_YCbCr_422_888;
84 case DRM_FORMAT_XBGR161616:
85 return HAL_PIXEL_FORMAT_RGBA_FP16;
86 case DRM_FORMAT_ABGR2101010:
87 return HAL_PIXEL_FORMAT_RGBA_1010102;
89 cros_gralloc_error("Unhandled DRM format %4.4s", drmFormat2Str(format));
95 bool i915_private_supported_yuv_format(uint32_t droid_format)
97 switch (droid_format) {
98 case HAL_PIXEL_FORMAT_NV12:
99 case HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL:
100 case HAL_PIXEL_FORMAT_YCbCr_422_I:
101 case HAL_PIXEL_FORMAT_YCbCr_422_888:
102 case HAL_PIXEL_FORMAT_YCbCr_444_888:
103 case HAL_PIXEL_FORMAT_YCrCb_420_SP:
104 case HAL_PIXEL_FORMAT_Y16:
105 case HAL_PIXEL_FORMAT_P010_INTEL: