All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
To: "Michel Dänzer" <michel-otUistvHUpPR7s880joybQ@public.gmane.org>
Cc: Daniel Vetter
	<daniel.vetter-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Gerd Hoffmann <kraxel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Subject: Re: [PATCH 0/6] drm: tackle byteorder issues, take two
Date: Mon, 24 Apr 2017 20:28:17 +0300	[thread overview]
Message-ID: <20170424172817.GC30290@intel.com> (raw)
In-Reply-To: <20170424142603.GX30290-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>

On Mon, Apr 24, 2017 at 05:26:03PM +0300, Ville Syrjälä wrote:
> On Mon, Apr 24, 2017 at 04:54:25PM +0900, Michel Dänzer wrote:
> > On 24/04/17 04:36 PM, Gerd Hoffmann wrote:
> > > 
> > >>>   drm: fourcc byteorder: add DRM_FORMAT_CPU_*
> > >>>   drm: fourcc byteorder: add bigendian support to
> > >>>     drm_mode_legacy_fb_format
> > >>
> > >> As I explained in my last followup in the "[PATCH] drm: fourcc
> > >> byteorder: brings header file comments in line with reality." thread,
> > >> the mapping between GPU and CPU formats has to be provided by the
> > >> driver, it cannot be done statically.
> > > 
> > > Well, the drm fourcc codes represent the cpu view (i.e. what userspace
> > > will fill the ADDFB2-created framebuffers with).
> > 
> > Ville is adamant that they represent the GPU view. This needs to be
> > resolved one way or the other.
> 
> Since the byte swapping can happen either for CPU or display access
> I guess we can't just consider the GPU and display as a single entity.
> 
> We may need to consider several agents:
> 1. display
> 2. GPU
> 3. CPU
> 4. other DMA
> 
> Not sure what we can say about 4. I presume it's going to be like the
> GPU or the CPU in the sense that it might go through the CPU byte
> swapping logic or not. I'm just going to ignore it.
> 
> Let's say we have the following bytes in memory
> (in order of increasing address): A,B,C,D
> We'll assume GPU and display are LE natively. Each component will see
> the resulting 32bpp 8888 pixel as follows (msb left->lsb right):
> 
> LE CPU w/ no byte swapping:
>  display: DCBA
>  GPU: DCBA
>  CPU: DCBA
>  = everyone agrees
> 
> BE CPU w/ no byte swapping:
>  display: DCBA
>  GPU: DCBA
>  CPU: ABCD
>  = GPU and display agree
> 
> BE CPU w/ display byte swapping:
>  display: ABCD
>  GPU: DCBA
>  CPU: ABCD
>  = CPU and display agree

So after some further thought this seems like a somewhat crazy
combination. It does make sense from the simplicity POV in that 
the CPU byte swapping isn't needed, and thus the problems with
concurrent access to buffers with different pixel sizes vanish.

However the GPU has to somehow be able to produce data the display
can consume, so presumably there must be some knobs in the GPU to do
the opposite byte swapping that the display does, or the GPU must be
restricted to only use framebuffers in formats like 8888.

> 
> BE CPU w/ CPU access byte swapping:
>  display: DCBA
>  GPU: DCBA
>  CPU: DCBA
>  = everyone agrees
> 
> BE CPU w/ both display and CPU byte swapping:
>  display: ABCD
>  GPU: DCBA
>  CPU: DCBA
>  = CPU and GPU agree (doesn't seem all that useful)
> 
> The different byte swapping tricks must have seemed like a great idea to
> someone, but in the end they're just making our life more miserable.
> 
> > > The gpu view can certainly differ from that.  Implementing this is up
> > > to the driver IMO.
> > > 
> > > When running on dumb framebuffers userspace doesn't need to know what
> > > the gpu view is.
> 
> True. So for that we'd just need to consider whether the CPU and display
> agree or disagree on the byte order. And I guess we'd have to pick from
> the following choices for a BE CPU:
> 
> CPU and display agree:
>  * FB is big endian, or FB is host endian (or whatever we would call it)
> CPU and display disagree:
>  * FB is little endian, or FB is foreign endian (or whatever)
> 
> > > 
> > > When running in opengl mode there will be a hardware-specific mesa
> > > driver in userspace, which will either know what the gpu view is (for
> > > example because there is only one way to implement this in hardware) or
> > > it can use hardware-specific ioctls to ask the kernel driver what the
> > > gpu view is.
> > 
> > Not sure this can be hidden in the OpenGL driver. How would e.g. a
> > Wayland compositor or the Xorg modesetting driver know which OpenGL
> > format corresponds to a given DRM_FORMAT?
> 
> How are GL formats defined? /me needs to go read the spec again.
> 
> -- 
> Ville Syrjälä
> Intel OTC

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

  parent reply	other threads:[~2017-04-24 17:28 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-24  6:25 [PATCH 0/6] drm: tackle byteorder issues, take two Gerd Hoffmann
     [not found] ` <20170424062532.26722-1-kraxel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-04-24  6:25   ` [PATCH 1/6] drm: fourcc byteorder: drop DRM_FORMAT_BIG_ENDIAN Gerd Hoffmann
2017-04-24  6:25     ` Gerd Hoffmann
2017-04-24  6:25   ` [PATCH 2/6] drm: fourcc byteorder: add DRM_FORMAT_CPU_* Gerd Hoffmann
2017-04-24  6:25     ` Gerd Hoffmann
2017-04-24  6:25   ` [PATCH 4/6] drm: fourcc byteorder: adapt bochs-drm to drm_mode_legacy_fb_format update Gerd Hoffmann
2017-04-24  6:25     ` Gerd Hoffmann
2017-04-24  6:25   ` [PATCH 5/6] drm: fourcc byteorder: adapt virtio " Gerd Hoffmann
2017-04-24  6:25     ` Gerd Hoffmann
2017-04-24  7:03   ` [PATCH 0/6] drm: tackle byteorder issues, take two Michel Dänzer
     [not found]     ` <484f319e-c2b7-adc8-4ecf-537803cc2eee-otUistvHUpPR7s880joybQ@public.gmane.org>
2017-04-24  7:36       ` Gerd Hoffmann
2017-04-24  7:54         ` Michel Dänzer
     [not found]           ` <f6555947-598f-0dfe-b15d-cda291778e8e-otUistvHUpPR7s880joybQ@public.gmane.org>
2017-04-24 14:26             ` Ville Syrjälä
2017-04-24 17:06               ` Daniel Stone
     [not found]               ` <20170424142603.GX30290-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-04-24 17:28                 ` Ville Syrjälä [this message]
2017-04-25  0:49                 ` Michel Dänzer
     [not found]                   ` <65ba8ab7-d647-4b9e-1e8c-aa6e9b1ff996-otUistvHUpPR7s880joybQ@public.gmane.org>
2017-04-25  9:50                     ` Ville Syrjälä
2017-04-24  6:25 ` [PATCH 3/6] drm: fourcc byteorder: add bigendian support to drm_mode_legacy_fb_format Gerd Hoffmann
2017-04-24  6:25   ` Gerd Hoffmann
     [not found]   ` <20170424062532.26722-4-kraxel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-04-25  3:18     ` Michel Dänzer
2017-04-25  3:18       ` Michel Dänzer
2017-04-25  9:52       ` Ville Syrjälä
     [not found]         ` <20170425095259.GK30290-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-04-26  2:00           ` Michel Dänzer
2017-04-26  2:00             ` Michel Dänzer
     [not found]             ` <b306654e-ae14-99f5-d129-8fc1fb8cc05d-otUistvHUpPR7s880joybQ@public.gmane.org>
2017-04-26 14:30               ` Ville Syrjälä
2017-04-26 14:30                 ` Ville Syrjälä
     [not found]       ` <3b872a56-80b5-0c44-712f-a9517489eb24-otUistvHUpPR7s880joybQ@public.gmane.org>
2017-04-26  5:53         ` Gerd Hoffmann
2017-04-26  5:53           ` Gerd Hoffmann
2017-04-26  9:21           ` Michel Dänzer
2017-04-26  9:21             ` Michel Dänzer
     [not found]             ` <8f91cc58-16dc-5899-66b6-06d430a18801-otUistvHUpPR7s880joybQ@public.gmane.org>
2017-04-26 12:11               ` Gerd Hoffmann
2017-04-26 12:11                 ` Gerd Hoffmann
2017-04-27  0:52                 ` Michel Dänzer
2017-04-27  0:52                   ` Michel Dänzer
     [not found]                   ` <6bd62182-0de5-a8a7-78c3-029fc73ecc91-otUistvHUpPR7s880joybQ@public.gmane.org>
2017-04-27  6:45                     ` Gerd Hoffmann
2017-04-27  6:45                       ` Gerd Hoffmann
2017-04-27  7:02                       ` Michel Dänzer
     [not found]                         ` <668bc373-1614-a095-6085-15c040f322b8-otUistvHUpPR7s880joybQ@public.gmane.org>
2017-04-28 10:02                           ` Gerd Hoffmann
2017-04-28 10:02                             ` Gerd Hoffmann
     [not found]           ` <1493185990.23739.7.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-04-26 13:28             ` Eric Engestrom
2017-04-26 13:28               ` Eric Engestrom
     [not found]               ` <20170426132801.lldz7uwwlp3euozy-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org>
2017-04-26 13:57                 ` Gerd Hoffmann
2017-04-26 13:57                   ` Gerd Hoffmann
2017-04-24  6:25 ` [PATCH 4/6] drm: fourcc byteorder: adapt bochs-drm to drm_mode_legacy_fb_format update Gerd Hoffmann
2017-04-24  6:25 ` [PATCH 5/6] drm: fourcc byteorder: adapt virtio " Gerd Hoffmann
2017-04-24  6:25 ` [PATCH 6/6] drm: fourcc byteorder: virtio restrict to XRGB8888 Gerd Hoffmann
2017-04-24  6:25   ` Gerd Hoffmann

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=20170424172817.GC30290@intel.com \
    --to=ville.syrjala-vuqaysv1563yd54fqh9/ca@public.gmane.org \
    --cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@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=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.