|
@@ -89,21 +89,34 @@ pixman_format_code_t qemu_default_pixman_format(int bpp, bool native_endian)
|
|
|
}
|
|
|
|
|
|
/* Note: drm is little endian, pixman is native endian */
|
|
|
+static const struct {
|
|
|
+ uint32_t drm_format;
|
|
|
+ pixman_format_code_t pixman_format;
|
|
|
+} drm_format_pixman_map[] = {
|
|
|
+ { DRM_FORMAT_RGB888, PIXMAN_LE_r8g8b8 },
|
|
|
+ { DRM_FORMAT_ARGB8888, PIXMAN_LE_a8r8g8b8 },
|
|
|
+ { DRM_FORMAT_XRGB8888, PIXMAN_LE_x8r8g8b8 }
|
|
|
+};
|
|
|
+
|
|
|
pixman_format_code_t qemu_drm_format_to_pixman(uint32_t drm_format)
|
|
|
{
|
|
|
- static const struct {
|
|
|
- uint32_t drm_format;
|
|
|
- pixman_format_code_t pixman;
|
|
|
- } map[] = {
|
|
|
- { DRM_FORMAT_RGB888, PIXMAN_LE_r8g8b8 },
|
|
|
- { DRM_FORMAT_ARGB8888, PIXMAN_LE_a8r8g8b8 },
|
|
|
- { DRM_FORMAT_XRGB8888, PIXMAN_LE_x8r8g8b8 }
|
|
|
- };
|
|
|
int i;
|
|
|
|
|
|
- for (i = 0; i < ARRAY_SIZE(map); i++) {
|
|
|
- if (drm_format == map[i].drm_format) {
|
|
|
- return map[i].pixman;
|
|
|
+ for (i = 0; i < ARRAY_SIZE(drm_format_pixman_map); i++) {
|
|
|
+ if (drm_format == drm_format_pixman_map[i].drm_format) {
|
|
|
+ return drm_format_pixman_map[i].pixman_format;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+uint32_t qemu_pixman_to_drm_format(pixman_format_code_t pixman_format)
|
|
|
+{
|
|
|
+ int i;
|
|
|
+
|
|
|
+ for (i = 0; i < ARRAY_SIZE(drm_format_pixman_map); i++) {
|
|
|
+ if (pixman_format == drm_format_pixman_map[i].pixman_format) {
|
|
|
+ return drm_format_pixman_map[i].drm_format;
|
|
|
}
|
|
|
}
|
|
|
return 0;
|