From: "Ville Syrjälä" <ville.syrjala-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
To: "Michel Dänzer" <michel-otUistvHUpPR7s880joybQ@public.gmane.org>
Cc: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
"open list"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
"Gerd Hoffmann" <kraxel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
"Daniel Vetter"
<daniel.vetter-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
"Christian König" <christian.koenig-5C7GfCeVMHo@public.gmane.org>
Subject: Re: [PATCH] drm: fourcc byteorder: brings header file comments in line with reality.
Date: Mon, 24 Apr 2017 16:03:48 +0300 [thread overview]
Message-ID: <20170424130348.GV30290@intel.com> (raw)
In-Reply-To: <de9e5634-ca98-d0e4-e715-c48c860328b2-otUistvHUpPR7s880joybQ@public.gmane.org>
On Mon, Apr 24, 2017 at 03:57:02PM +0900, Michel Dänzer wrote:
> On 22/04/17 07:05 PM, Ville Syrjälä wrote:
> > On Fri, Apr 21, 2017 at 06:14:31PM +0200, Gerd Hoffmann wrote:
> >> Hi,
> >>
> >>>> My personal opinion is that formats in drm_fourcc.h should be
> >>>> independent of the CPU byte order and the function
> >>>> drm_mode_legacy_fb_format() and drivers depending on that incorrect
> >>>> assumption be fixed instead.
> >>>
> >>> The problem is this isn't a kernel-internal thing any more. With the
> >>> addition of the ADDFB2 ioctl the fourcc codes became part of the
> >>> kernel/userspace abi ...
> >>
> >> Ok, added some printk's to the ADDFB and ADDFB2 code paths and tested a
> >> bit. Apparently pretty much all userspace still uses the ADDFB ioctl.
> >> xorg (modesetting driver) does. gnome-shell in wayland mode does.
> >> Seems the big transition to ADDFB2 didn't happen yet.
> >>
> >> I guess that makes changing drm_mode_legacy_fb_format + drivers a
> >> reasonable option ...
> >
> > Yeah, I came to the same conclusion after chatting with some
> > folks on irc.
> >
> > So my current idea is that we change any driver that wants to follow the
> > CPU endianness
>
> This isn't really optional for various reasons, some of which have been
> covered in this discussion.
>
>
> > to declare support for big endian formats if the CPU is
> > big endian. Presumably these are mostly the virtual GPU drivers.
> >
> > Additonally we'll make the mapping performed by drm_mode_legacy_fb_format()
> > driver controlled. That way drivers that got changed to follow CPU
> > endianness can return a framebuffer that matches CPU endianness. And
> > drivers that expect the GPU endianness to not depend on the CPU
> > endianness will keep working as they do now. The downside is that users
> > of the legacy addfb ioctl will need to magically know which endianness
> > they will get, but that is apparently already the case. And users of
> > addfb2 will keep on specifying the endianness explicitly with
> > DRM_FORMAT_BIG_ENDIAN vs. 0.
>
> I'm afraid it's not that simple.
>
> The display hardware of older (pre-R600 generation) Radeon GPUs does not
> support the "big endian" formats directly. In order to allow userspace
> to access pixel data in native endianness with the CPU, we instead use
> byte-swapping functionality which only affects CPU access.
OK, I'm getting confused. Based on our irc discussion I got the
impression you don't byte swap CPU accesses. But since you do, how
do you deal with mixing 8bpp vs. 16bpp vs. 32bpp?
> This means
> that the GPU and CPU effectively see different representations of the
> same video memory contents.
>
> Userspace code dealing with GPU access to pixel data needs to know the
> format as seen by the GPU, whereas code dealing with CPU access needs to
> know the format as seen by the CPU. I don't see any way to express this
> with a single format definition.
Hmm. Well that certainly makes life even more interesting.
--
Ville Syrjälä
Intel OTC
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
WARNING: multiple messages have this Message-ID (diff)
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "Michel Dänzer" <michel@daenzer.net>
Cc: "Gerd Hoffmann" <kraxel@redhat.com>,
amd-gfx@lists.freedesktop.org,
"open list" <linux-kernel@vger.kernel.org>,
dri-devel@lists.freedesktop.org,
"Daniel Vetter" <daniel.vetter@intel.com>,
"Christian König" <christian.koenig@amd.com>
Subject: Re: [PATCH] drm: fourcc byteorder: brings header file comments in line with reality.
Date: Mon, 24 Apr 2017 16:03:48 +0300 [thread overview]
Message-ID: <20170424130348.GV30290@intel.com> (raw)
In-Reply-To: <de9e5634-ca98-d0e4-e715-c48c860328b2@daenzer.net>
On Mon, Apr 24, 2017 at 03:57:02PM +0900, Michel Dänzer wrote:
> On 22/04/17 07:05 PM, Ville Syrjälä wrote:
> > On Fri, Apr 21, 2017 at 06:14:31PM +0200, Gerd Hoffmann wrote:
> >> Hi,
> >>
> >>>> My personal opinion is that formats in drm_fourcc.h should be
> >>>> independent of the CPU byte order and the function
> >>>> drm_mode_legacy_fb_format() and drivers depending on that incorrect
> >>>> assumption be fixed instead.
> >>>
> >>> The problem is this isn't a kernel-internal thing any more. With the
> >>> addition of the ADDFB2 ioctl the fourcc codes became part of the
> >>> kernel/userspace abi ...
> >>
> >> Ok, added some printk's to the ADDFB and ADDFB2 code paths and tested a
> >> bit. Apparently pretty much all userspace still uses the ADDFB ioctl.
> >> xorg (modesetting driver) does. gnome-shell in wayland mode does.
> >> Seems the big transition to ADDFB2 didn't happen yet.
> >>
> >> I guess that makes changing drm_mode_legacy_fb_format + drivers a
> >> reasonable option ...
> >
> > Yeah, I came to the same conclusion after chatting with some
> > folks on irc.
> >
> > So my current idea is that we change any driver that wants to follow the
> > CPU endianness
>
> This isn't really optional for various reasons, some of which have been
> covered in this discussion.
>
>
> > to declare support for big endian formats if the CPU is
> > big endian. Presumably these are mostly the virtual GPU drivers.
> >
> > Additonally we'll make the mapping performed by drm_mode_legacy_fb_format()
> > driver controlled. That way drivers that got changed to follow CPU
> > endianness can return a framebuffer that matches CPU endianness. And
> > drivers that expect the GPU endianness to not depend on the CPU
> > endianness will keep working as they do now. The downside is that users
> > of the legacy addfb ioctl will need to magically know which endianness
> > they will get, but that is apparently already the case. And users of
> > addfb2 will keep on specifying the endianness explicitly with
> > DRM_FORMAT_BIG_ENDIAN vs. 0.
>
> I'm afraid it's not that simple.
>
> The display hardware of older (pre-R600 generation) Radeon GPUs does not
> support the "big endian" formats directly. In order to allow userspace
> to access pixel data in native endianness with the CPU, we instead use
> byte-swapping functionality which only affects CPU access.
OK, I'm getting confused. Based on our irc discussion I got the
impression you don't byte swap CPU accesses. But since you do, how
do you deal with mixing 8bpp vs. 16bpp vs. 32bpp?
> This means
> that the GPU and CPU effectively see different representations of the
> same video memory contents.
>
> Userspace code dealing with GPU access to pixel data needs to know the
> format as seen by the GPU, whereas code dealing with CPU access needs to
> know the format as seen by the CPU. I don't see any way to express this
> with a single format definition.
Hmm. Well that certainly makes life even more interesting.
--
Ville Syrjälä
Intel OTC
next prev parent reply other threads:[~2017-04-24 13:03 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-21 7:58 [PATCH] drm: fourcc byteorder: brings header file comments in line with reality Gerd Hoffmann
2017-04-21 7:58 ` Gerd Hoffmann
2017-04-21 8:06 ` Pekka Paalanen
2017-04-21 8:06 ` Pekka Paalanen
2017-04-21 9:38 ` Gerd Hoffmann
2017-04-21 9:38 ` Gerd Hoffmann
[not found] ` <1492767508.25675.23.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-04-21 9:44 ` Ville Syrjälä
2017-04-21 9:44 ` Ville Syrjälä
[not found] ` <20170421075825.6307-1-kraxel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-04-21 9:25 ` Ville Syrjälä
2017-04-21 9:25 ` Ville Syrjälä
2017-04-21 9:50 ` Gerd Hoffmann
2017-04-21 9:50 ` Gerd Hoffmann
[not found] ` <1492768218.25675.33.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-04-21 11:05 ` Ville Syrjälä
2017-04-21 11:05 ` Ville Syrjälä
2017-04-21 11:08 ` Ville Syrjälä
2017-04-21 11:08 ` Ville Syrjälä
[not found] ` <20170421110804.GH30290-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-04-21 11:40 ` Pekka Paalanen
2017-04-21 11:40 ` Pekka Paalanen
2017-04-21 11:49 ` Ville Syrjälä
2017-04-21 11:49 ` Ville Syrjälä
2017-04-21 12:02 ` Christian König
2017-04-21 11:41 ` Gerd Hoffmann
2017-04-21 11:41 ` Gerd Hoffmann
2017-04-21 11:42 ` Christian König
[not found] ` <f1b0ae60-b20e-ad52-7fbf-32f2c045f5fc-5C7GfCeVMHo@public.gmane.org>
2017-04-21 13:12 ` Gerd Hoffmann
2017-04-21 13:12 ` Gerd Hoffmann
[not found] ` <1492780323.25675.45.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-04-21 13:21 ` Christian König
2017-04-21 13:21 ` Christian König
2017-04-21 13:27 ` Christian König
2017-04-21 13:27 ` Christian König
[not found] ` <fab1354d-bb5d-b196-a698-f465906ffc68-5C7GfCeVMHo@public.gmane.org>
2017-04-21 15:21 ` Harry Wentland
2017-04-21 15:21 ` Harry Wentland
2017-04-21 16:14 ` Gerd Hoffmann
2017-04-21 16:14 ` Gerd Hoffmann
[not found] ` <1492791271.25675.57.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-04-22 10:05 ` Ville Syrjälä
2017-04-22 10:05 ` Ville Syrjälä
2017-04-22 21:59 ` Gerd Hoffmann
2017-04-22 21:59 ` Gerd Hoffmann
[not found] ` <20170422100522.GS30290-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-04-24 6:57 ` Michel Dänzer
2017-04-24 6:57 ` Michel Dänzer
[not found] ` <de9e5634-ca98-d0e4-e715-c48c860328b2-otUistvHUpPR7s880joybQ@public.gmane.org>
2017-04-24 13:03 ` Ville Syrjälä [this message]
2017-04-24 13:03 ` Ville Syrjälä
[not found] ` <20170424130348.GV30290-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-04-25 1:12 ` Michel Dänzer
2017-04-25 1:12 ` Michel Dänzer
[not found] ` <d5c73823-4d63-c44d-8ba9-54f5e80c5497-otUistvHUpPR7s880joybQ@public.gmane.org>
2017-04-25 3:08 ` Michel Dänzer
2017-04-25 3:08 ` Michel Dänzer
2017-04-25 10:26 ` Ville Syrjälä
2017-04-25 10:26 ` Ville Syrjälä
[not found] ` <20170425102607.GL30290-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-04-26 2:10 ` Michel Dänzer
2017-04-26 2:10 ` Michel Dänzer
2017-05-11 21:23 ` Pavel Machek
2017-05-11 21:23 ` Pavel Machek
2017-05-12 9:10 ` Ville Syrjälä
2017-05-12 9:10 ` Ville Syrjälä
2017-04-21 14:49 ` Ilia Mirkin
2017-04-21 14:49 ` Ilia Mirkin
[not found] ` <CAKb7Uvgx2_O8y+HWGv8TEv0BqpXrLL5SdAt2d3gh6g69U6F=Sw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-04-21 16:59 ` Ville Syrjälä
2017-04-21 16:59 ` Ville Syrjälä
[not found] ` <20170421165907.GQ30290-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-04-22 5:07 ` Ilia Mirkin
2017-04-22 5:07 ` Ilia Mirkin
2017-04-22 9:50 ` Ville Syrjälä
2017-04-22 9:50 ` Ville Syrjälä
[not found] ` <20170422095056.GR30290-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-04-22 13:40 ` Ilia Mirkin
2017-04-22 13:40 ` Ilia Mirkin
2017-04-22 13:48 ` Ilia Mirkin
2017-04-22 13:48 ` Ilia Mirkin
[not found] ` <CAKb7Uvig0J2rg=yJT4g8OuqR9RW4x2TzK-DA_zs_Qc_up4dACQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-04-22 19:24 ` Ilia Mirkin
2017-04-22 19:24 ` Ilia Mirkin
2017-04-24 6:33 ` Michel Dänzer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170424130348.GV30290@intel.com \
--to=ville.syrjala-vuqaysv1563yd54fqh9/ca@public.gmane.org \
--cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=christian.koenig-5C7GfCeVMHo@public.gmane.org \
--cc=daniel.vetter-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=kraxel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=michel-otUistvHUpPR7s880joybQ@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.