@ -1,5 +1,5 @@
/*
/*
* Copyright © 2016 Collabora , Ltd .
* Copyright © 2016 , 2019 Collabora , Ltd .
* Copyright ( c ) 2018 DisplayLink ( UK ) Ltd .
* Copyright ( c ) 2018 DisplayLink ( UK ) Ltd .
*
*
* Permission is hereby granted , free of charge , to any person obtaining a
* Permission is hereby granted , free of charge , to any person obtaining a
@ -53,6 +53,12 @@
# endif
# endif
# define DRM_FORMAT(f) .format = DRM_FORMAT_ ## f, .drm_format_name = #f
# define DRM_FORMAT(f) .format = DRM_FORMAT_ ## f, .drm_format_name = #f
# define BITS_RGBA_FIXED(r_, g_, b_, a_) \
. bits . r = r_ , \
. bits . g = g_ , \
. bits . b = b_ , \
. bits . a = a_ , \
. component_type = PIXEL_COMPONENT_TYPE_FIXED
# include "weston-egl-ext.h"
# include "weston-egl-ext.h"
@ -64,20 +70,25 @@
static const struct pixel_format_info pixel_format_table [ ] = {
static const struct pixel_format_info pixel_format_table [ ] = {
{
{
DRM_FORMAT ( XRGB4444 ) ,
DRM_FORMAT ( XRGB4444 ) ,
BITS_RGBA_FIXED ( 4 , 4 , 4 , 0 ) ,
} ,
} ,
{
{
DRM_FORMAT ( ARGB4444 ) ,
DRM_FORMAT ( ARGB4444 ) ,
BITS_RGBA_FIXED ( 4 , 4 , 4 , 4 ) ,
. opaque_substitute = DRM_FORMAT_XRGB4444 ,
. opaque_substitute = DRM_FORMAT_XRGB4444 ,
} ,
} ,
{
{
DRM_FORMAT ( XBGR4444 ) ,
DRM_FORMAT ( XBGR4444 ) ,
BITS_RGBA_FIXED ( 4 , 4 , 4 , 0 ) ,
} ,
} ,
{
{
DRM_FORMAT ( ABGR4444 ) ,
DRM_FORMAT ( ABGR4444 ) ,
BITS_RGBA_FIXED ( 4 , 4 , 4 , 4 ) ,
. opaque_substitute = DRM_FORMAT_XBGR4444 ,
. opaque_substitute = DRM_FORMAT_XBGR4444 ,
} ,
} ,
{
{
DRM_FORMAT ( RGBX4444 ) ,
DRM_FORMAT ( RGBX4444 ) ,
BITS_RGBA_FIXED ( 4 , 4 , 4 , 0 ) ,
# if __BYTE_ORDER == __LITTLE_ENDIAN
# if __BYTE_ORDER == __LITTLE_ENDIAN
GL_FORMAT ( GL_RGBA ) ,
GL_FORMAT ( GL_RGBA ) ,
GL_TYPE ( GL_UNSIGNED_SHORT_4_4_4_4 ) ,
GL_TYPE ( GL_UNSIGNED_SHORT_4_4_4_4 ) ,
@ -85,6 +96,7 @@ static const struct pixel_format_info pixel_format_table[] = {
} ,
} ,
{
{
DRM_FORMAT ( RGBA4444 ) ,
DRM_FORMAT ( RGBA4444 ) ,
BITS_RGBA_FIXED ( 4 , 4 , 4 , 4 ) ,
. opaque_substitute = DRM_FORMAT_RGBX4444 ,
. opaque_substitute = DRM_FORMAT_RGBX4444 ,
# if __BYTE_ORDER == __LITTLE_ENDIAN
# if __BYTE_ORDER == __LITTLE_ENDIAN
GL_FORMAT ( GL_RGBA ) ,
GL_FORMAT ( GL_RGBA ) ,
@ -93,29 +105,36 @@ static const struct pixel_format_info pixel_format_table[] = {
} ,
} ,
{
{
DRM_FORMAT ( BGRX4444 ) ,
DRM_FORMAT ( BGRX4444 ) ,
BITS_RGBA_FIXED ( 4 , 4 , 4 , 0 ) ,
} ,
} ,
{
{
DRM_FORMAT ( BGRA4444 ) ,
DRM_FORMAT ( BGRA4444 ) ,
BITS_RGBA_FIXED ( 4 , 4 , 4 , 4 ) ,
. opaque_substitute = DRM_FORMAT_BGRX4444 ,
. opaque_substitute = DRM_FORMAT_BGRX4444 ,
} ,
} ,
{
{
DRM_FORMAT ( XRGB1555 ) ,
DRM_FORMAT ( XRGB1555 ) ,
BITS_RGBA_FIXED ( 5 , 5 , 5 , 0 ) ,
. depth = 15 ,
. depth = 15 ,
. bpp = 16 ,
. bpp = 16 ,
} ,
} ,
{
{
DRM_FORMAT ( ARGB1555 ) ,
DRM_FORMAT ( ARGB1555 ) ,
BITS_RGBA_FIXED ( 5 , 5 , 5 , 1 ) ,
. opaque_substitute = DRM_FORMAT_XRGB1555 ,
. opaque_substitute = DRM_FORMAT_XRGB1555 ,
} ,
} ,
{
{
DRM_FORMAT ( XBGR1555 ) ,
DRM_FORMAT ( XBGR1555 ) ,
BITS_RGBA_FIXED ( 5 , 5 , 5 , 0 ) ,
} ,
} ,
{
{
DRM_FORMAT ( ABGR1555 ) ,
DRM_FORMAT ( ABGR1555 ) ,
BITS_RGBA_FIXED ( 5 , 5 , 5 , 1 ) ,
. opaque_substitute = DRM_FORMAT_XBGR1555 ,
. opaque_substitute = DRM_FORMAT_XBGR1555 ,
} ,
} ,
{
{
DRM_FORMAT ( RGBX5551 ) ,
DRM_FORMAT ( RGBX5551 ) ,
BITS_RGBA_FIXED ( 5 , 5 , 5 , 0 ) ,
# if __BYTE_ORDER == __LITTLE_ENDIAN
# if __BYTE_ORDER == __LITTLE_ENDIAN
GL_FORMAT ( GL_RGBA ) ,
GL_FORMAT ( GL_RGBA ) ,
GL_TYPE ( GL_UNSIGNED_SHORT_5_5_5_1 ) ,
GL_TYPE ( GL_UNSIGNED_SHORT_5_5_5_1 ) ,
@ -123,6 +142,7 @@ static const struct pixel_format_info pixel_format_table[] = {
} ,
} ,
{
{
DRM_FORMAT ( RGBA5551 ) ,
DRM_FORMAT ( RGBA5551 ) ,
BITS_RGBA_FIXED ( 5 , 5 , 5 , 1 ) ,
. opaque_substitute = DRM_FORMAT_RGBX5551 ,
. opaque_substitute = DRM_FORMAT_RGBX5551 ,
# if __BYTE_ORDER == __LITTLE_ENDIAN
# if __BYTE_ORDER == __LITTLE_ENDIAN
GL_FORMAT ( GL_RGBA ) ,
GL_FORMAT ( GL_RGBA ) ,
@ -131,13 +151,16 @@ static const struct pixel_format_info pixel_format_table[] = {
} ,
} ,
{
{
DRM_FORMAT ( BGRX5551 ) ,
DRM_FORMAT ( BGRX5551 ) ,
BITS_RGBA_FIXED ( 5 , 5 , 5 , 0 ) ,
} ,
} ,
{
{
DRM_FORMAT ( BGRA5551 ) ,
DRM_FORMAT ( BGRA5551 ) ,
BITS_RGBA_FIXED ( 5 , 5 , 5 , 1 ) ,
. opaque_substitute = DRM_FORMAT_BGRX5551 ,
. opaque_substitute = DRM_FORMAT_BGRX5551 ,
} ,
} ,
{
{
DRM_FORMAT ( RGB565 ) ,
DRM_FORMAT ( RGB565 ) ,
BITS_RGBA_FIXED ( 5 , 6 , 5 , 0 ) ,
. depth = 16 ,
. depth = 16 ,
. bpp = 16 ,
. bpp = 16 ,
# if __BYTE_ORDER == __LITTLE_ENDIAN
# if __BYTE_ORDER == __LITTLE_ENDIAN
@ -147,17 +170,21 @@ static const struct pixel_format_info pixel_format_table[] = {
} ,
} ,
{
{
DRM_FORMAT ( BGR565 ) ,
DRM_FORMAT ( BGR565 ) ,
BITS_RGBA_FIXED ( 5 , 6 , 5 , 0 ) ,
} ,
} ,
{
{
DRM_FORMAT ( RGB888 ) ,
DRM_FORMAT ( RGB888 ) ,
BITS_RGBA_FIXED ( 8 , 8 , 8 , 0 ) ,
} ,
} ,
{
{
DRM_FORMAT ( BGR888 ) ,
DRM_FORMAT ( BGR888 ) ,
BITS_RGBA_FIXED ( 8 , 8 , 8 , 0 ) ,
GL_FORMAT ( GL_RGB ) ,
GL_FORMAT ( GL_RGB ) ,
GL_TYPE ( GL_UNSIGNED_BYTE ) ,
GL_TYPE ( GL_UNSIGNED_BYTE ) ,
} ,
} ,
{
{
DRM_FORMAT ( XRGB8888 ) ,
DRM_FORMAT ( XRGB8888 ) ,
BITS_RGBA_FIXED ( 8 , 8 , 8 , 0 ) ,
. depth = 24 ,
. depth = 24 ,
. bpp = 32 ,
. bpp = 32 ,
GL_FORMAT ( GL_BGRA_EXT ) ,
GL_FORMAT ( GL_BGRA_EXT ) ,
@ -165,6 +192,7 @@ static const struct pixel_format_info pixel_format_table[] = {
} ,
} ,
{
{
DRM_FORMAT ( ARGB8888 ) ,
DRM_FORMAT ( ARGB8888 ) ,
BITS_RGBA_FIXED ( 8 , 8 , 8 , 8 ) ,
. opaque_substitute = DRM_FORMAT_XRGB8888 ,
. opaque_substitute = DRM_FORMAT_XRGB8888 ,
. depth = 32 ,
. depth = 32 ,
. bpp = 32 ,
. bpp = 32 ,
@ -173,40 +201,49 @@ static const struct pixel_format_info pixel_format_table[] = {
} ,
} ,
{
{
DRM_FORMAT ( XBGR8888 ) ,
DRM_FORMAT ( XBGR8888 ) ,
BITS_RGBA_FIXED ( 8 , 8 , 8 , 0 ) ,
GL_FORMAT ( GL_RGBA ) ,
GL_FORMAT ( GL_RGBA ) ,
GL_TYPE ( GL_UNSIGNED_BYTE ) ,
GL_TYPE ( GL_UNSIGNED_BYTE ) ,
} ,
} ,
{
{
DRM_FORMAT ( ABGR8888 ) ,
DRM_FORMAT ( ABGR8888 ) ,
BITS_RGBA_FIXED ( 8 , 8 , 8 , 8 ) ,
. opaque_substitute = DRM_FORMAT_XBGR8888 ,
. opaque_substitute = DRM_FORMAT_XBGR8888 ,
GL_FORMAT ( GL_RGBA ) ,
GL_FORMAT ( GL_RGBA ) ,
GL_TYPE ( GL_UNSIGNED_BYTE ) ,
GL_TYPE ( GL_UNSIGNED_BYTE ) ,
} ,
} ,
{
{
DRM_FORMAT ( RGBX8888 ) ,
DRM_FORMAT ( RGBX8888 ) ,
BITS_RGBA_FIXED ( 8 , 8 , 8 , 0 ) ,
} ,
} ,
{
{
DRM_FORMAT ( RGBA8888 ) ,
DRM_FORMAT ( RGBA8888 ) ,
BITS_RGBA_FIXED ( 8 , 8 , 8 , 8 ) ,
. opaque_substitute = DRM_FORMAT_RGBX8888 ,
. opaque_substitute = DRM_FORMAT_RGBX8888 ,
} ,
} ,
{
{
DRM_FORMAT ( BGRX8888 ) ,
DRM_FORMAT ( BGRX8888 ) ,
BITS_RGBA_FIXED ( 8 , 8 , 8 , 0 ) ,
} ,
} ,
{
{
DRM_FORMAT ( BGRA8888 ) ,
DRM_FORMAT ( BGRA8888 ) ,
BITS_RGBA_FIXED ( 8 , 8 , 8 , 8 ) ,
. opaque_substitute = DRM_FORMAT_BGRX8888 ,
. opaque_substitute = DRM_FORMAT_BGRX8888 ,
} ,
} ,
{
{
DRM_FORMAT ( XRGB2101010 ) ,
DRM_FORMAT ( XRGB2101010 ) ,
BITS_RGBA_FIXED ( 10 , 10 , 10 , 0 ) ,
. depth = 30 ,
. depth = 30 ,
. bpp = 32 ,
. bpp = 32 ,
} ,
} ,
{
{
DRM_FORMAT ( ARGB2101010 ) ,
DRM_FORMAT ( ARGB2101010 ) ,
BITS_RGBA_FIXED ( 10 , 10 , 10 , 2 ) ,
. opaque_substitute = DRM_FORMAT_XRGB2101010 ,
. opaque_substitute = DRM_FORMAT_XRGB2101010 ,
} ,
} ,
{
{
DRM_FORMAT ( XBGR2101010 ) ,
DRM_FORMAT ( XBGR2101010 ) ,
BITS_RGBA_FIXED ( 10 , 10 , 10 , 0 ) ,
# if __BYTE_ORDER == __LITTLE_ENDIAN
# if __BYTE_ORDER == __LITTLE_ENDIAN
GL_FORMAT ( GL_RGBA ) ,
GL_FORMAT ( GL_RGBA ) ,
GL_TYPE ( GL_UNSIGNED_INT_2_10_10_10_REV_EXT ) ,
GL_TYPE ( GL_UNSIGNED_INT_2_10_10_10_REV_EXT ) ,
@ -214,6 +251,7 @@ static const struct pixel_format_info pixel_format_table[] = {
} ,
} ,
{
{
DRM_FORMAT ( ABGR2101010 ) ,
DRM_FORMAT ( ABGR2101010 ) ,
BITS_RGBA_FIXED ( 10 , 10 , 10 , 2 ) ,
. opaque_substitute = DRM_FORMAT_XBGR2101010 ,
. opaque_substitute = DRM_FORMAT_XBGR2101010 ,
# if __BYTE_ORDER == __LITTLE_ENDIAN
# if __BYTE_ORDER == __LITTLE_ENDIAN
GL_FORMAT ( GL_RGBA ) ,
GL_FORMAT ( GL_RGBA ) ,
@ -222,16 +260,20 @@ static const struct pixel_format_info pixel_format_table[] = {
} ,
} ,
{
{
DRM_FORMAT ( RGBX1010102 ) ,
DRM_FORMAT ( RGBX1010102 ) ,
BITS_RGBA_FIXED ( 10 , 10 , 10 , 0 ) ,
} ,
} ,
{
{
DRM_FORMAT ( RGBA1010102 ) ,
DRM_FORMAT ( RGBA1010102 ) ,
BITS_RGBA_FIXED ( 10 , 10 , 10 , 2 ) ,
. opaque_substitute = DRM_FORMAT_RGBX1010102 ,
. opaque_substitute = DRM_FORMAT_RGBX1010102 ,
} ,
} ,
{
{
DRM_FORMAT ( BGRX1010102 ) ,
DRM_FORMAT ( BGRX1010102 ) ,
BITS_RGBA_FIXED ( 10 , 10 , 10 , 0 ) ,
} ,
} ,
{
{
DRM_FORMAT ( BGRA1010102 ) ,
DRM_FORMAT ( BGRA1010102 ) ,
BITS_RGBA_FIXED ( 10 , 10 , 10 , 2 ) ,
. opaque_substitute = DRM_FORMAT_BGRX1010102 ,
. opaque_substitute = DRM_FORMAT_BGRX1010102 ,
} ,
} ,
{
{