OSDN Git Service

minigbm: Refactored minigbm on top a private API
[android-x86/external-minigbm.git] / gbm_helpers.c
1 /*
2  * Copyright (c) 2016 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 #include <stddef.h>
8 #include <stdio.h>
9
10 #include "drv.h"
11 #include "gbm.h"
12
13 drv_format_t gbm_convert_format(uint32_t format)
14 {
15
16         switch (format) {
17                 case GBM_FORMAT_C8:
18                         return DRV_FORMAT_C8;
19                 case GBM_FORMAT_R8:
20                         return DRV_FORMAT_R8;
21                 case GBM_FORMAT_RG88:
22                         return DRV_FORMAT_RG88;
23                 case GBM_FORMAT_GR88:
24                         return DRV_FORMAT_GR88;
25                 case GBM_FORMAT_RGB332:
26                         return DRV_FORMAT_RGB332;
27                 case GBM_FORMAT_BGR233:
28                         return DRV_FORMAT_BGR233;
29                 case GBM_FORMAT_XRGB4444:
30                         return DRV_FORMAT_XRGB4444;
31                 case GBM_FORMAT_XBGR4444:
32                         return DRV_FORMAT_XBGR4444;
33                 case GBM_FORMAT_RGBX4444:
34                         return DRV_FORMAT_RGBX4444;
35                 case GBM_FORMAT_BGRX4444:
36                         return DRV_FORMAT_BGRX4444;
37                 case GBM_FORMAT_ARGB4444:
38                         return DRV_FORMAT_ARGB4444;
39                 case GBM_FORMAT_ABGR4444:
40                         return DRV_FORMAT_ABGR4444;
41                 case GBM_FORMAT_RGBA4444:
42                         return DRV_FORMAT_RGBA4444;
43                 case GBM_FORMAT_BGRA4444:
44                         return DRV_FORMAT_BGRA4444;
45                 case GBM_FORMAT_XRGB1555:
46                         return DRV_FORMAT_XRGB1555;
47                 case GBM_FORMAT_XBGR1555:
48                         return DRV_FORMAT_XBGR1555;
49                 case GBM_FORMAT_RGBX5551:
50                         return DRV_FORMAT_RGBX5551;
51                 case GBM_FORMAT_BGRX5551:
52                         return DRV_FORMAT_BGRX5551;
53                 case GBM_FORMAT_ARGB1555:
54                         return DRV_FORMAT_ARGB1555;
55                 case GBM_FORMAT_ABGR1555:
56                         return DRV_FORMAT_ABGR1555;
57                 case GBM_FORMAT_RGBA5551:
58                         return DRV_FORMAT_RGBA5551;
59                 case GBM_FORMAT_BGRA5551:
60                         return DRV_FORMAT_BGRA5551;
61                 case GBM_FORMAT_RGB565:
62                         return DRV_FORMAT_RGB565;
63                 case GBM_FORMAT_BGR565:
64                         return DRV_FORMAT_BGR565;
65                 case GBM_FORMAT_RGB888:
66                         return DRV_FORMAT_RGB888;
67                 case GBM_FORMAT_BGR888:
68                         return DRV_FORMAT_BGR888;
69                 case GBM_FORMAT_XRGB8888:
70                         return DRV_FORMAT_XRGB8888;
71                 case GBM_FORMAT_XBGR8888:
72                         return DRV_FORMAT_XBGR8888;
73                 case GBM_FORMAT_RGBX8888:
74                         return DRV_FORMAT_RGBX8888;
75                 case GBM_FORMAT_BGRX8888:
76                         return DRV_FORMAT_BGRX8888;
77                 case GBM_FORMAT_ARGB8888:
78                         return DRV_FORMAT_ARGB8888;
79                 case GBM_FORMAT_ABGR8888:
80                         return DRV_FORMAT_ABGR8888;
81                 case GBM_FORMAT_RGBA8888:
82                         return DRV_FORMAT_RGBA8888;
83                 case GBM_FORMAT_BGRA8888:
84                         return DRV_FORMAT_BGRA8888;
85                 case GBM_FORMAT_XRGB2101010:
86                         return DRV_FORMAT_XRGB2101010;
87                 case GBM_FORMAT_XBGR2101010:
88                         return DRV_FORMAT_XBGR2101010;
89                 case GBM_FORMAT_RGBX1010102:
90                         return DRV_FORMAT_RGBX1010102;
91                 case GBM_FORMAT_BGRX1010102:
92                         return DRV_FORMAT_BGRX1010102;
93                 case GBM_FORMAT_ARGB2101010:
94                         return DRV_FORMAT_ARGB2101010;
95                 case GBM_FORMAT_ABGR2101010:
96                         return DRV_FORMAT_ABGR2101010;
97                 case GBM_FORMAT_RGBA1010102:
98                         return DRV_FORMAT_RGBA1010102;
99                 case GBM_FORMAT_BGRA1010102:
100                         return DRV_FORMAT_BGRA1010102;
101                 case GBM_FORMAT_YUYV:
102                         return DRV_FORMAT_YUYV;
103                 case GBM_FORMAT_YVYU:
104                         return DRV_FORMAT_YVYU;
105                 case GBM_FORMAT_UYVY:
106                         return DRV_FORMAT_UYVY;
107                 case GBM_FORMAT_VYUY:
108                         return DRV_FORMAT_VYUY;
109                 case GBM_FORMAT_AYUV:
110                         return DRV_FORMAT_AYUV;
111                 case GBM_FORMAT_NV12:
112                         return DRV_FORMAT_NV12;
113                 case GBM_FORMAT_NV21:
114                         return DRV_FORMAT_NV21;
115                 case GBM_FORMAT_NV16:
116                         return DRV_FORMAT_NV16;
117                 case GBM_FORMAT_NV61:
118                         return DRV_FORMAT_NV61;
119                 case GBM_FORMAT_YUV410:
120                         return DRV_FORMAT_YUV410;
121                 case GBM_FORMAT_YVU410:
122                         return DRV_FORMAT_YVU410;
123                 case GBM_FORMAT_YUV411:
124                         return DRV_FORMAT_YUV411;
125                 case GBM_FORMAT_YVU411:
126                         return DRV_FORMAT_YVU411;
127                 case GBM_FORMAT_YUV420:
128                         return DRV_FORMAT_YUV420;
129                 case GBM_FORMAT_YVU420:
130                         return DRV_FORMAT_YVU420;
131                 case GBM_FORMAT_YUV422:
132                         return DRV_FORMAT_YUV422;
133                 case GBM_FORMAT_YVU422:
134                         return DRV_FORMAT_YVU422;
135                 case GBM_FORMAT_YUV444:
136                         return DRV_FORMAT_YVU444;
137                 case GBM_FORMAT_YVU444:
138                         return DRV_FORMAT_YVU444;
139         }
140
141         fprintf(stderr, "minigbm: UNKNOWN FORMAT %d\n", format);
142         return DRV_FORMAT_NONE;
143 }
144
145 uint64_t gbm_convert_flags(uint32_t flags)
146 {
147         uint64_t usage = DRV_BO_USE_NONE;
148
149         if (flags & GBM_BO_USE_SCANOUT)
150                 usage |= DRV_BO_USE_SCANOUT;
151         if (flags & GBM_BO_USE_CURSOR)
152                 usage |= DRV_BO_USE_CURSOR;
153         if (flags & GBM_BO_USE_CURSOR_64X64)
154                 usage |= DRV_BO_USE_CURSOR_64X64;
155         if (flags & GBM_BO_USE_RENDERING)
156                 usage |= DRV_BO_USE_RENDERING;
157         if (flags & GBM_BO_USE_LINEAR)
158                 usage |= DRV_BO_USE_LINEAR;
159
160         return usage;
161 }