drm: fourcc byteorder: add bigendian support to drm_mode_legacy_fb_format

Jochen Rollwagen joro-2013 at t-online.de
Thu Apr 27 15:29:47 UTC 2017


Hello there,

Since I’m on a big-endian system I’ve been following the discusssion and 
have two (maybe not quite related, and possibly dumb) questions:

1.There’s been a similar discussion on mesa-dev concerning big-endian 
and #ifdef’s, see

https://lists.freedesktop.org/archives/mesa-dev/2016-February/107701.html

Without checking whether the #defines are actually, well, #defined it’s 
doubtful whether the patch would have any effect on all platforms. 
conclusion from the discussion above was that the whole big-endian 
#ifdef story is „/a very fragile situation/„

2. I’ve recently stumbled across a register definition for (older) 
radeon GPU’s, what caught my eye was

*CB:RB3D_COLORPITCH[0-3] · [R/W] · 32 bits · Access: 8/16/32 · 
MMReg:0x4e38-0x4e44 *

*DESCRIPTION: */Color buffer format and tiling control for all the 
multibuffers and the pitch of multibuffer 0. Unpipelined. The cache must 
be empty before any of the registers are changed. /

Field Name

	

Bits

	

Default

	

Description

COLORPITCH

	

13:1

	

none

	

3D destination pitch in multiples of 2-pixels.

COLORTILE

	

16

	

none

	

Denotes whether the 3D destination is in macrotiled format. POSSIBLE 
VALUES: 00 - 3D destination is not macrotiled 01 - 3D destination is 
macrotiled

COLORMICROTILE

	

18:17

	

none

	

Denotes whether the 3D destination is in microtiled format. POSSIBLE 
VALUES: 00 - 3D destination is no microtiled 01 - 3D destination is 
microtiled 02 - 3D destination is square microtiled. Only available in 
16-bit 03 - (reserved)

COLORENDIAN

	

20:19

	

none

	

Specifies endian control for the color buffer

POSSIBLE VALUES: 00 - No swap 01 - Word swap (2 bytes in 16-bit) 02 - 
Dword swap (4 bytes in a 32-bit) 03 - Half-Dword swap (2 16-bit in a 
32-bit)

COLORFORMAT

	

24:21

	

0x6

	

3D destination color format. POSSIBLE VALUES: 00 - (Reserved) 01 - 
(Reserved) 02 - (Reserved) 03 - ARGB1555 04 - RGB565 05 - (Reserved) 06 
- ARGB8888 07 - ARGB32323232 08 - (Reserved) 09 - I8 10 - ARGB16161616 
11 - YUV422 packed (VYUY) 12 - YUV422 packed (YVYU) 13 - UV88 14 - 
(reserved) 15 - ARGB4444

Dumb question: Could that register be used for just setting the GPU to 
big-endian mode and leave all the swapping to the GPU ?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20170427/8c7832ce/attachment-0001.html>


More information about the dri-devel mailing list