Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1947068AbdD1KCy convert rfc822-to-8bit (ORCPT ); Fri, 28 Apr 2017 06:02:54 -0400 Received: from mx1.redhat.com ([209.132.183.28]:38472 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1424569AbdD1KCq (ORCPT ); Fri, 28 Apr 2017 06:02:46 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 0F8FD65D01 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=kraxel@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 0F8FD65D01 Message-ID: <1493373758.23357.27.camel@redhat.com> Subject: Re: [PATCH 3/6] drm: fourcc byteorder: add bigendian support to drm_mode_legacy_fb_format From: Gerd Hoffmann To: Michel =?ISO-8859-1?Q?D=E4nzer?= Cc: Daniel Vetter , amd-gfx@lists.freedesktop.org, open list , dri-devel@lists.freedesktop.org Date: Fri, 28 Apr 2017 12:02:38 +0200 In-Reply-To: <668bc373-1614-a095-6085-15c040f322b8@daenzer.net> References: <20170424062532.26722-1-kraxel@redhat.com> <20170424062532.26722-4-kraxel@redhat.com> <3b872a56-80b5-0c44-712f-a9517489eb24@daenzer.net> <1493185990.23739.7.camel@redhat.com> <8f91cc58-16dc-5899-66b6-06d430a18801@daenzer.net> <1493208671.23739.19.camel@redhat.com> <6bd62182-0de5-a8a7-78c3-029fc73ecc91@daenzer.net> <1493275550.31995.31.camel@redhat.com> <668bc373-1614-a095-6085-15c040f322b8@daenzer.net> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT Mime-Version: 1.0 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Fri, 28 Apr 2017 10:02:41 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1536 Lines: 40 Hi, > > So just not using the swapping indeed looks like the only sensible > > option. Which in turn implies there is no BGRA8888 support for dumb > > bos. Hmm, I can see the problem. Userspace expectation appears to be > > that ADDFB configures a native endian framebuffer, which the driver > > simply can't do on bigendian. > > ... with pre-R600 GPUs. Sure. > > So, what can/should the driver do here? Throw errors for ADDFB and > > force userspace to use ADDFB2? From a design point of view the best > > option, but in the other hand I suspect that could break the xorg radeon > > driver ... > > Yes, it would. > One thing we could do is provide a way for userspace to query the > effective format(s) as seen by the GPU and/or CPU. We already have almost no testing on bigendian. I doubt adding generic interfaces specifically to handle this case is going to work because most userspace will simply not implement that correctly (or at all). Having support for this in the radeon ioctls might work, because only radeon kernel + xorg driver have to get things right then. But I suspect we already have that. You've mentioned elsewhere in the thread that the xorg driver doesn't turn on byteswapping, so the ability to configure that seems to be somewhere in the API ... > It might also make sense for the radeon driver to set the > RADEON_TILING_SWAP_{16,32}BIT flags for dumb BOs. That could work. But I guess someone with test hardware needs to try, to make sure we don't miss corner cases here. cheers, Gerd