2 #include <drm_fourcc.h>
5 #include <wayland-util.h>
7 #include "pixel_format.h"
13 #define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0])
21 static const struct ds_tbm_format formats[] =
23 {DRM_FORMAT_C8, TBM_FORMAT_C8},
24 {DRM_FORMAT_RGB332, TBM_FORMAT_RGB332},
25 {DRM_FORMAT_BGR233, TBM_FORMAT_BGR233},
26 {DRM_FORMAT_XRGB4444, TBM_FORMAT_XRGB4444},
27 {DRM_FORMAT_XBGR4444, TBM_FORMAT_XBGR4444},
28 {DRM_FORMAT_RGBX4444, TBM_FORMAT_RGBX4444},
29 {DRM_FORMAT_BGRX4444, TBM_FORMAT_BGRX4444},
30 {DRM_FORMAT_ARGB4444, TBM_FORMAT_ARGB4444},
31 {DRM_FORMAT_ABGR4444, TBM_FORMAT_ABGR4444},
32 {DRM_FORMAT_RGBA4444, TBM_FORMAT_RGBA4444},
33 {DRM_FORMAT_BGRA4444, TBM_FORMAT_BGRA4444},
34 {DRM_FORMAT_XRGB1555, TBM_FORMAT_XRGB1555},
35 {DRM_FORMAT_XBGR1555, TBM_FORMAT_XBGR1555},
36 {DRM_FORMAT_RGBX5551, TBM_FORMAT_RGBX5551},
37 {DRM_FORMAT_BGRX5551, TBM_FORMAT_BGRX5551},
38 {DRM_FORMAT_ARGB1555, TBM_FORMAT_ARGB1555},
39 {DRM_FORMAT_ABGR1555, TBM_FORMAT_ABGR1555},
40 {DRM_FORMAT_RGBA5551, TBM_FORMAT_RGBA5551},
41 {DRM_FORMAT_BGRA5551, TBM_FORMAT_BGRA5551},
42 {DRM_FORMAT_RGB565, TBM_FORMAT_RGB565},
43 {DRM_FORMAT_BGR565, TBM_FORMAT_BGR565},
44 {DRM_FORMAT_RGB888, TBM_FORMAT_RGB888},
45 {DRM_FORMAT_BGR888, TBM_FORMAT_BGR888},
46 {DRM_FORMAT_XRGB8888, TBM_FORMAT_XRGB8888},
47 {DRM_FORMAT_XBGR8888, TBM_FORMAT_XBGR8888},
48 {DRM_FORMAT_RGBX8888, TBM_FORMAT_RGBX8888},
49 {DRM_FORMAT_BGRX8888, TBM_FORMAT_BGRX8888},
50 {DRM_FORMAT_ARGB8888, TBM_FORMAT_ARGB8888},
51 {DRM_FORMAT_ABGR8888, TBM_FORMAT_ABGR8888},
52 {DRM_FORMAT_RGBA8888, TBM_FORMAT_RGBA8888},
53 {DRM_FORMAT_BGRA8888, TBM_FORMAT_BGRA8888},
54 {DRM_FORMAT_XRGB2101010, TBM_FORMAT_XRGB2101010},
55 {DRM_FORMAT_XBGR2101010, TBM_FORMAT_XBGR2101010},
56 {DRM_FORMAT_RGBX1010102, TBM_FORMAT_RGBX1010102},
57 {DRM_FORMAT_BGRX1010102, TBM_FORMAT_BGRX1010102},
58 {DRM_FORMAT_ARGB2101010, TBM_FORMAT_ARGB2101010},
59 {DRM_FORMAT_ABGR2101010, TBM_FORMAT_ABGR2101010},
60 {DRM_FORMAT_RGBA1010102, TBM_FORMAT_RGBA1010102},
61 {DRM_FORMAT_BGRA1010102, TBM_FORMAT_BGRA1010102},
62 {DRM_FORMAT_YUYV, TBM_FORMAT_YUYV},
63 {DRM_FORMAT_YVYU, TBM_FORMAT_YVYU},
64 {DRM_FORMAT_UYVY, TBM_FORMAT_UYVY},
65 {DRM_FORMAT_VYUY, TBM_FORMAT_VYUY},
66 {DRM_FORMAT_AYUV, TBM_FORMAT_AYUV},
67 {DRM_FORMAT_NV12, TBM_FORMAT_NV12},
68 {DRM_FORMAT_NV21, TBM_FORMAT_NV21},
69 {DRM_FORMAT_NV16, TBM_FORMAT_NV16},
70 {DRM_FORMAT_NV61, TBM_FORMAT_NV61},
71 {DRM_FORMAT_YUV410, TBM_FORMAT_YUV410},
72 {DRM_FORMAT_YVU410, TBM_FORMAT_YVU410},
73 {DRM_FORMAT_YUV411, TBM_FORMAT_YUV411},
74 {DRM_FORMAT_YVU411, TBM_FORMAT_YVU411},
75 {DRM_FORMAT_YUV420, TBM_FORMAT_YUV420},
76 {DRM_FORMAT_YVU420, TBM_FORMAT_YVU420},
77 {DRM_FORMAT_YUV422, TBM_FORMAT_YUV422},
78 {DRM_FORMAT_YVU422, TBM_FORMAT_YVU422},
79 {DRM_FORMAT_YUV444, TBM_FORMAT_YUV444},
80 {DRM_FORMAT_YVU444, TBM_FORMAT_YVU444},
84 convert_drm_format_to_tbm(uint32_t fmt)
88 for (i = 0; i < ARRAY_LENGTH(formats); i++) {
89 if (formats[i].drm_format == fmt)
90 return formats[i].tbm_format;
93 ds_err("DRM format 0x%"PRIX32" has no TBM equivalent", fmt);
99 convert_tbm_format_to_drm(uint32_t fmt)
103 for (i = 0; i < ARRAY_LENGTH(formats); i++) {
104 if (formats[i].tbm_format == fmt)
105 return formats[i].drm_format;
108 ds_err("TBM format 0x%"PRIX32" has no DRM equivalent", fmt);
114 ds_tizen_pixel_format_convert_tbm_to_drm(uint32_t tbm_format)
116 return convert_tbm_format_to_drm(tbm_format);