On 03/05/17 06:24 PM, Gerd Hoffmann wrote: > Hi, > >>> R600+ supports bigendian framebuffer formats, so no byteswapping on >>> access is needed. Not sure whenever that includes 16bpp formats or >>> whenever this is limited to the 8 bit-per-color formats [...] >> >> It includes 16bpp. Looking at >> drivers/gpu/drm/radeon/atombios_crtc.c:dce4_crtc_do_set_base(), it sets >> up byte-swapping for all multi-byte formats, so it effectively treats >> all those formats as if they had DRM_FORMAT_BIG_ENDIAN set. > >> If the radeon (and amdgpu) driver were to be changed to use >> drm_mode_legacy_fb_format_he for >= R600, that must also handle 16 bpp, >> which requires DRM_FORMAT_BIG_ENDIAN. So I still don't see how that can >> be removed or even deprecated. > > Ok. > > Dropped patch #1. > > Updated patch #2 to include all formats returned by > drm_mode_legacy_fb_format, and also renamed them to DRM_FORMAT_HOST_*. > > Question is how to go forward with patch #3. I'd prefer to not add > drm_mode_legacy_fb_format_he if possible. Is there a chance to adapt > the radeon and nvidia drivers to a fixed drm_mode_legacy_fb_format > function (returning be formats on be) without invasive changes? Given > they both treat formats as if they had DRM_FORMAT_BIG_ENDIAN set this > could (with the help of the extended patch #2) be a simple > s/DRM_FORMAT_/DRM_FORMAT_HOST/ at the right places ... For radeon this doesn't work with pre-R600 GPUs, which only support little endian formats for display. -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer