OSDN Git Service

Fix build.
[android-x86/external-minigbm.git] / cros_gralloc / i915_private_android.cc
1 /*
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.
5  */
6
7 #ifdef DRV_I915
8
9 #include "i915_private_android.h"
10 #include "i915_private_android_types.h"
11
12 #include "cros_gralloc_helpers.h"
13
14 #include <hardware/gralloc.h>
15
16 uint32_t i915_private_convert_format(int format)
17 {
18         switch (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;
41         }
42
43         return DRM_FORMAT_NONE;
44 }
45
46 int32_t i915_private_invert_format(int format)
47 {
48         /* Convert the DRM FourCC into the most specific HAL pixel format. */
49         switch (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;
64         case DRM_FORMAT_R8:
65                 return HAL_PIXEL_FORMAT_BLOB;
66         case DRM_FORMAT_NV12:
67                 return HAL_PIXEL_FORMAT_NV12;
68         case DRM_FORMAT_NV12_Y_TILED_INTEL:
69                 return HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL;
70         case DRM_FORMAT_YUYV:
71                 return HAL_PIXEL_FORMAT_YCbCr_422_I;
72         case DRM_FORMAT_R16:
73                 return HAL_PIXEL_FORMAT_Y16;
74         case DRM_FORMAT_P010:
75                 return HAL_PIXEL_FORMAT_P010_INTEL;
76         case DRM_FORMAT_YUV444:
77                 return HAL_PIXEL_FORMAT_YCbCr_444_888;
78         case DRM_FORMAT_NV21:
79                 return HAL_PIXEL_FORMAT_YCrCb_420_SP;
80         case DRM_FORMAT_NV16:
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;
88         default:
89                 cros_gralloc_error("Unhandled DRM format %4.4s", drmFormat2Str(format));
90         }
91
92         return 0;
93 }
94
95 bool i915_private_supported_yuv_format(uint32_t droid_format)
96 {
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:
106                 return true;
107         default:
108                 return false;
109         }
110
111         return false;
112 }
113
114 #endif