On Fri, Apr 21, 2017 at 09:58:24AM +0200, Gerd Hoffmann wrote:
> While working on graphics support for virtual machines on ppc64 (which
> exists in both little and big endian variants) I've figured the comments
> for various drm fourcc formats in the header file don't match reality.
> 
> Comments says the RGB formats are little endian, but in practice they
> are native endian.  Look at the drm_mode_legacy_fb_format() helper.  It
> maps -- for example -- bpp/depth 32/24 to DRM_FORMAT_XRGB8888, no matter
> whenever the machine is little endian or big endian.  The users of this
> function (fbdev emulation, DRM_IOCTL_MODE_ADDFB) expect the framebuffer
> is native endian, not little endian.  Most userspace also operates on
> native endian only.

I'm not a fan of "native". Native to what? "CPU" or "host" is what I'd
call it.

And what about the mxied endian case? Are you just going to pretend it
doesn't exist or what?

> 
> So, go update the comments for all 16+24+32 bpp RGB formats.
> 
> Leaving the yuv formats as-is.  I have no idea if and how those are used
> on bigendian machines.
> 
> Cc: Ville Syrjälä <ville.syrj...@linux.intel.com>
> Cc: Daniel Vetter <daniel.vet...@intel.com>
> Cc: Pekka Paalanen <ppaala...@gmail.com>
> Cc: Ilia Mirkin <imir...@alum.mit.edu>
> Cc: Michel Dänzer <mic...@daenzer.net>
> Cc: Alex Deucher <alexdeuc...@gmail.com>
> Cc: amd-...@lists.freedesktop.org
> Signed-off-by: Gerd Hoffmann <kra...@redhat.com>
> ---
>  include/uapi/drm/drm_fourcc.h | 82 
> +++++++++++++++++++++----------------------
>  1 file changed, 41 insertions(+), 41 deletions(-)
> 
> diff --git a/include/uapi/drm/drm_fourcc.h b/include/uapi/drm/drm_fourcc.h
> index 995c8f9..1579765 100644
> --- a/include/uapi/drm/drm_fourcc.h
> +++ b/include/uapi/drm/drm_fourcc.h
> @@ -42,68 +42,68 @@ extern "C" {
>  #define DRM_FORMAT_R8                fourcc_code('R', '8', ' ', ' ') /* 
> [7:0] R */
>  
>  /* 16 bpp Red */
> -#define DRM_FORMAT_R16               fourcc_code('R', '1', '6', ' ') /* 
> [15:0] R little endian */
> +#define DRM_FORMAT_R16               fourcc_code('R', '1', '6', ' ') /* 
> [15:0] R native endian */
>  
>  /* 16 bpp RG */
> -#define DRM_FORMAT_RG88              fourcc_code('R', 'G', '8', '8') /* 
> [15:0] R:G 8:8 little endian */
> -#define DRM_FORMAT_GR88              fourcc_code('G', 'R', '8', '8') /* 
> [15:0] G:R 8:8 little endian */
> +#define DRM_FORMAT_RG88              fourcc_code('R', 'G', '8', '8') /* 
> [15:0] R:G 8:8 native endian */
> +#define DRM_FORMAT_GR88              fourcc_code('G', 'R', '8', '8') /* 
> [15:0] G:R 8:8 native endian */
>  
>  /* 32 bpp RG */
> -#define DRM_FORMAT_RG1616    fourcc_code('R', 'G', '3', '2') /* [31:0] R:G 
> 16:16 little endian */
> -#define DRM_FORMAT_GR1616    fourcc_code('G', 'R', '3', '2') /* [31:0] G:R 
> 16:16 little endian */
> +#define DRM_FORMAT_RG1616    fourcc_code('R', 'G', '3', '2') /* [31:0] R:G 
> 16:16 native endian */
> +#define DRM_FORMAT_GR1616    fourcc_code('G', 'R', '3', '2') /* [31:0] G:R 
> 16:16 native endian */
>  
>  /* 8 bpp RGB */
>  #define DRM_FORMAT_RGB332    fourcc_code('R', 'G', 'B', '8') /* [7:0] R:G:B 
> 3:3:2 */
>  #define DRM_FORMAT_BGR233    fourcc_code('B', 'G', 'R', '8') /* [7:0] B:G:R 
> 2:3:3 */
>  
>  /* 16 bpp RGB */
> -#define DRM_FORMAT_XRGB4444  fourcc_code('X', 'R', '1', '2') /* [15:0] 
> x:R:G:B 4:4:4:4 little endian */
> -#define DRM_FORMAT_XBGR4444  fourcc_code('X', 'B', '1', '2') /* [15:0] 
> x:B:G:R 4:4:4:4 little endian */
> -#define DRM_FORMAT_RGBX4444  fourcc_code('R', 'X', '1', '2') /* [15:0] 
> R:G:B:x 4:4:4:4 little endian */
> -#define DRM_FORMAT_BGRX4444  fourcc_code('B', 'X', '1', '2') /* [15:0] 
> B:G:R:x 4:4:4:4 little endian */
> +#define DRM_FORMAT_XRGB4444  fourcc_code('X', 'R', '1', '2') /* [15:0] 
> x:R:G:B 4:4:4:4 native endian */
> +#define DRM_FORMAT_XBGR4444  fourcc_code('X', 'B', '1', '2') /* [15:0] 
> x:B:G:R 4:4:4:4 native endian */
> +#define DRM_FORMAT_RGBX4444  fourcc_code('R', 'X', '1', '2') /* [15:0] 
> R:G:B:x 4:4:4:4 native endian */
> +#define DRM_FORMAT_BGRX4444  fourcc_code('B', 'X', '1', '2') /* [15:0] 
> B:G:R:x 4:4:4:4 native endian */
>  
> -#define DRM_FORMAT_ARGB4444  fourcc_code('A', 'R', '1', '2') /* [15:0] 
> A:R:G:B 4:4:4:4 little endian */
> -#define DRM_FORMAT_ABGR4444  fourcc_code('A', 'B', '1', '2') /* [15:0] 
> A:B:G:R 4:4:4:4 little endian */
> -#define DRM_FORMAT_RGBA4444  fourcc_code('R', 'A', '1', '2') /* [15:0] 
> R:G:B:A 4:4:4:4 little endian */
> -#define DRM_FORMAT_BGRA4444  fourcc_code('B', 'A', '1', '2') /* [15:0] 
> B:G:R:A 4:4:4:4 little endian */
> +#define DRM_FORMAT_ARGB4444  fourcc_code('A', 'R', '1', '2') /* [15:0] 
> A:R:G:B 4:4:4:4 native endian */
> +#define DRM_FORMAT_ABGR4444  fourcc_code('A', 'B', '1', '2') /* [15:0] 
> A:B:G:R 4:4:4:4 native endian */
> +#define DRM_FORMAT_RGBA4444  fourcc_code('R', 'A', '1', '2') /* [15:0] 
> R:G:B:A 4:4:4:4 native endian */
> +#define DRM_FORMAT_BGRA4444  fourcc_code('B', 'A', '1', '2') /* [15:0] 
> B:G:R:A 4:4:4:4 native endian */
>  
> -#define DRM_FORMAT_XRGB1555  fourcc_code('X', 'R', '1', '5') /* [15:0] 
> x:R:G:B 1:5:5:5 little endian */
> -#define DRM_FORMAT_XBGR1555  fourcc_code('X', 'B', '1', '5') /* [15:0] 
> x:B:G:R 1:5:5:5 little endian */
> -#define DRM_FORMAT_RGBX5551  fourcc_code('R', 'X', '1', '5') /* [15:0] 
> R:G:B:x 5:5:5:1 little endian */
> -#define DRM_FORMAT_BGRX5551  fourcc_code('B', 'X', '1', '5') /* [15:0] 
> B:G:R:x 5:5:5:1 little endian */
> +#define DRM_FORMAT_XRGB1555  fourcc_code('X', 'R', '1', '5') /* [15:0] 
> x:R:G:B 1:5:5:5 native endian */
> +#define DRM_FORMAT_XBGR1555  fourcc_code('X', 'B', '1', '5') /* [15:0] 
> x:B:G:R 1:5:5:5 native endian */
> +#define DRM_FORMAT_RGBX5551  fourcc_code('R', 'X', '1', '5') /* [15:0] 
> R:G:B:x 5:5:5:1 native endian */
> +#define DRM_FORMAT_BGRX5551  fourcc_code('B', 'X', '1', '5') /* [15:0] 
> B:G:R:x 5:5:5:1 native endian */
>  
> -#define DRM_FORMAT_ARGB1555  fourcc_code('A', 'R', '1', '5') /* [15:0] 
> A:R:G:B 1:5:5:5 little endian */
> -#define DRM_FORMAT_ABGR1555  fourcc_code('A', 'B', '1', '5') /* [15:0] 
> A:B:G:R 1:5:5:5 little endian */
> -#define DRM_FORMAT_RGBA5551  fourcc_code('R', 'A', '1', '5') /* [15:0] 
> R:G:B:A 5:5:5:1 little endian */
> -#define DRM_FORMAT_BGRA5551  fourcc_code('B', 'A', '1', '5') /* [15:0] 
> B:G:R:A 5:5:5:1 little endian */
> +#define DRM_FORMAT_ARGB1555  fourcc_code('A', 'R', '1', '5') /* [15:0] 
> A:R:G:B 1:5:5:5 native endian */
> +#define DRM_FORMAT_ABGR1555  fourcc_code('A', 'B', '1', '5') /* [15:0] 
> A:B:G:R 1:5:5:5 native endian */
> +#define DRM_FORMAT_RGBA5551  fourcc_code('R', 'A', '1', '5') /* [15:0] 
> R:G:B:A 5:5:5:1 native endian */
> +#define DRM_FORMAT_BGRA5551  fourcc_code('B', 'A', '1', '5') /* [15:0] 
> B:G:R:A 5:5:5:1 native endian */
>  
> -#define DRM_FORMAT_RGB565    fourcc_code('R', 'G', '1', '6') /* [15:0] R:G:B 
> 5:6:5 little endian */
> -#define DRM_FORMAT_BGR565    fourcc_code('B', 'G', '1', '6') /* [15:0] B:G:R 
> 5:6:5 little endian */
> +#define DRM_FORMAT_RGB565    fourcc_code('R', 'G', '1', '6') /* [15:0] R:G:B 
> 5:6:5 native endian */
> +#define DRM_FORMAT_BGR565    fourcc_code('B', 'G', '1', '6') /* [15:0] B:G:R 
> 5:6:5 native endian */
>  
>  /* 24 bpp RGB */
> -#define DRM_FORMAT_RGB888    fourcc_code('R', 'G', '2', '4') /* [23:0] R:G:B 
> little endian */
> -#define DRM_FORMAT_BGR888    fourcc_code('B', 'G', '2', '4') /* [23:0] B:G:R 
> little endian */
> +#define DRM_FORMAT_RGB888    fourcc_code('R', 'G', '2', '4') /* [23:0] R:G:B 
> native endian */
> +#define DRM_FORMAT_BGR888    fourcc_code('B', 'G', '2', '4') /* [23:0] B:G:R 
> native endian */
>  
>  /* 32 bpp RGB */
> -#define DRM_FORMAT_XRGB8888  fourcc_code('X', 'R', '2', '4') /* [31:0] 
> x:R:G:B 8:8:8:8 little endian */
> -#define DRM_FORMAT_XBGR8888  fourcc_code('X', 'B', '2', '4') /* [31:0] 
> x:B:G:R 8:8:8:8 little endian */
> -#define DRM_FORMAT_RGBX8888  fourcc_code('R', 'X', '2', '4') /* [31:0] 
> R:G:B:x 8:8:8:8 little endian */
> -#define DRM_FORMAT_BGRX8888  fourcc_code('B', 'X', '2', '4') /* [31:0] 
> B:G:R:x 8:8:8:8 little endian */
> +#define DRM_FORMAT_XRGB8888  fourcc_code('X', 'R', '2', '4') /* [31:0] 
> x:R:G:B 8:8:8:8 native endian */
> +#define DRM_FORMAT_XBGR8888  fourcc_code('X', 'B', '2', '4') /* [31:0] 
> x:B:G:R 8:8:8:8 native endian */
> +#define DRM_FORMAT_RGBX8888  fourcc_code('R', 'X', '2', '4') /* [31:0] 
> R:G:B:x 8:8:8:8 native endian */
> +#define DRM_FORMAT_BGRX8888  fourcc_code('B', 'X', '2', '4') /* [31:0] 
> B:G:R:x 8:8:8:8 native endian */
>  
> -#define DRM_FORMAT_ARGB8888  fourcc_code('A', 'R', '2', '4') /* [31:0] 
> A:R:G:B 8:8:8:8 little endian */
> -#define DRM_FORMAT_ABGR8888  fourcc_code('A', 'B', '2', '4') /* [31:0] 
> A:B:G:R 8:8:8:8 little endian */
> -#define DRM_FORMAT_RGBA8888  fourcc_code('R', 'A', '2', '4') /* [31:0] 
> R:G:B:A 8:8:8:8 little endian */
> -#define DRM_FORMAT_BGRA8888  fourcc_code('B', 'A', '2', '4') /* [31:0] 
> B:G:R:A 8:8:8:8 little endian */
> +#define DRM_FORMAT_ARGB8888  fourcc_code('A', 'R', '2', '4') /* [31:0] 
> A:R:G:B 8:8:8:8 native endian */
> +#define DRM_FORMAT_ABGR8888  fourcc_code('A', 'B', '2', '4') /* [31:0] 
> A:B:G:R 8:8:8:8 native endian */
> +#define DRM_FORMAT_RGBA8888  fourcc_code('R', 'A', '2', '4') /* [31:0] 
> R:G:B:A 8:8:8:8 native endian */
> +#define DRM_FORMAT_BGRA8888  fourcc_code('B', 'A', '2', '4') /* [31:0] 
> B:G:R:A 8:8:8:8 native endian */
>  
> -#define DRM_FORMAT_XRGB2101010       fourcc_code('X', 'R', '3', '0') /* 
> [31:0] x:R:G:B 2:10:10:10 little endian */
> -#define DRM_FORMAT_XBGR2101010       fourcc_code('X', 'B', '3', '0') /* 
> [31:0] x:B:G:R 2:10:10:10 little endian */
> -#define DRM_FORMAT_RGBX1010102       fourcc_code('R', 'X', '3', '0') /* 
> [31:0] R:G:B:x 10:10:10:2 little endian */
> -#define DRM_FORMAT_BGRX1010102       fourcc_code('B', 'X', '3', '0') /* 
> [31:0] B:G:R:x 10:10:10:2 little endian */
> +#define DRM_FORMAT_XRGB2101010       fourcc_code('X', 'R', '3', '0') /* 
> [31:0] x:R:G:B 2:10:10:10 native endian */
> +#define DRM_FORMAT_XBGR2101010       fourcc_code('X', 'B', '3', '0') /* 
> [31:0] x:B:G:R 2:10:10:10 native endian */
> +#define DRM_FORMAT_RGBX1010102       fourcc_code('R', 'X', '3', '0') /* 
> [31:0] R:G:B:x 10:10:10:2 native endian */
> +#define DRM_FORMAT_BGRX1010102       fourcc_code('B', 'X', '3', '0') /* 
> [31:0] B:G:R:x 10:10:10:2 native endian */
>  
> -#define DRM_FORMAT_ARGB2101010       fourcc_code('A', 'R', '3', '0') /* 
> [31:0] A:R:G:B 2:10:10:10 little endian */
> -#define DRM_FORMAT_ABGR2101010       fourcc_code('A', 'B', '3', '0') /* 
> [31:0] A:B:G:R 2:10:10:10 little endian */
> -#define DRM_FORMAT_RGBA1010102       fourcc_code('R', 'A', '3', '0') /* 
> [31:0] R:G:B:A 10:10:10:2 little endian */
> -#define DRM_FORMAT_BGRA1010102       fourcc_code('B', 'A', '3', '0') /* 
> [31:0] B:G:R:A 10:10:10:2 little endian */
> +#define DRM_FORMAT_ARGB2101010       fourcc_code('A', 'R', '3', '0') /* 
> [31:0] A:R:G:B 2:10:10:10 native endian */
> +#define DRM_FORMAT_ABGR2101010       fourcc_code('A', 'B', '3', '0') /* 
> [31:0] A:B:G:R 2:10:10:10 native endian */
> +#define DRM_FORMAT_RGBA1010102       fourcc_code('R', 'A', '3', '0') /* 
> [31:0] R:G:B:A 10:10:10:2 native endian */
> +#define DRM_FORMAT_BGRA1010102       fourcc_code('B', 'A', '3', '0') /* 
> [31:0] B:G:R:A 10:10:10:2 native endian */
>  
>  /* packed YCbCr */
>  #define DRM_FORMAT_YUYV              fourcc_code('Y', 'U', 'Y', 'V') /* 
> [31:0] Cr0:Y1:Cb0:Y0 8:8:8:8 little endian */
> -- 
> 2.9.3

-- 
Ville Syrjälä
Intel OTC

Reply via email to