[PATCH v8 3/9] ui/pixman: add qemu_drm_format_to_pixman()
Kirti Wankhede
kwankhede at nvidia.com
Fri Mar 9 06:08:49 UTC 2018
Looks good.
Reviewed by: Kirti Wankhede <kwankhede at nvidia.com>
Thanks,
Kirti
On 3/6/2018 5:04 PM, Gerd Hoffmann wrote:
> Map drm fourcc codes to pixman formats.
>
> Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>
> ---
> include/ui/qemu-pixman.h | 5 +++++
> ui/qemu-pixman.c | 22 ++++++++++++++++++++++
> 2 files changed, 27 insertions(+)
>
> diff --git a/include/ui/qemu-pixman.h b/include/ui/qemu-pixman.h
> index 4a67e01232..b7c82d17fc 100644
> --- a/include/ui/qemu-pixman.h
> +++ b/include/ui/qemu-pixman.h
> @@ -33,6 +33,8 @@
> # define PIXMAN_BE_r8g8b8a8 PIXMAN_r8g8b8a8
> # define PIXMAN_BE_x8b8g8r8 PIXMAN_x8b8g8r8
> # define PIXMAN_BE_a8b8g8r8 PIXMAN_a8b8g8r8
> +# define PIXMAN_LE_r8g8b8 PIXMAN_b8g8r8
> +# define PIXMAN_LE_a8r8g8b8 PIXMAN_b8g8r8a8
> # define PIXMAN_LE_x8r8g8b8 PIXMAN_b8g8r8x8
> #else
> # define PIXMAN_BE_r8g8b8 PIXMAN_b8g8r8
> @@ -44,6 +46,8 @@
> # define PIXMAN_BE_r8g8b8a8 PIXMAN_a8b8g8r8
> # define PIXMAN_BE_x8b8g8r8 PIXMAN_r8g8b8x8
> # define PIXMAN_BE_a8b8g8r8 PIXMAN_r8g8b8a8
> +# define PIXMAN_LE_r8g8b8 PIXMAN_r8g8b8
> +# define PIXMAN_LE_a8r8g8b8 PIXMAN_a8r8g8b8
> # define PIXMAN_LE_x8r8g8b8 PIXMAN_x8r8g8b8
> #endif
>
> @@ -51,6 +55,7 @@
>
> PixelFormat qemu_pixelformat_from_pixman(pixman_format_code_t format);
> pixman_format_code_t qemu_default_pixman_format(int bpp, bool native_endian);
> +pixman_format_code_t qemu_drm_format_to_pixman(uint32_t drm_format);
> int qemu_pixman_get_type(int rshift, int gshift, int bshift);
> pixman_format_code_t qemu_pixman_get_format(PixelFormat *pf);
> bool qemu_pixman_check_format(DisplayChangeListener *dcl,
> diff --git a/ui/qemu-pixman.c b/ui/qemu-pixman.c
> index 6e591ab821..3e52abd92d 100644
> --- a/ui/qemu-pixman.c
> +++ b/ui/qemu-pixman.c
> @@ -6,6 +6,7 @@
> #include "qemu/osdep.h"
> #include "qemu-common.h"
> #include "ui/console.h"
> +#include "standard-headers/drm/drm_fourcc.h"
>
> PixelFormat qemu_pixelformat_from_pixman(pixman_format_code_t format)
> {
> @@ -88,6 +89,27 @@ pixman_format_code_t qemu_default_pixman_format(int bpp, bool native_endian)
> return 0;
> }
>
> +/* Note: drm is little endian, pixman is native endian */
> +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;
> + }
> + }
> + return 0;
> +}
> +
> int qemu_pixman_get_type(int rshift, int gshift, int bshift)
> {
> int type = PIXMAN_TYPE_OTHER;
>
More information about the intel-gvt-dev
mailing list