Re: [Mesa-dev] Haiku using the Wayland state_tracker?

2013-03-28 Thread Pekka Paalanen
On Wed, 27 Mar 2013 15:45:23 -0500
Alexander von Gluck IV kallis...@unixzen.com wrote:

 On 03/27/2013 2:37 am, Pekka Paalanen wrote:
  On Tue, 26 Mar 2013 16:47:15 -0500
  Alexander von Gluck IV kallis...@unixzen.com wrote:
  
  I've been hitting several brick walls working on the Haiku GL stuff.
  (mostly due to things being too complex for the time I have 
  available)
  
  Given all the recent publicity for Wayland, I decided to look into 
  the
  wl_shm stuff.  From my point of view wl_shm looks *extremely* simple.
  
  Does anyone see any reason *not* to use the wayland state_tracker for
  Haiku's GL rendering? The only possible down side I see is using EGL 
  vs
  OpenGL. (I admit I don't fully understand the pros and cons of EGL)
  
  I'm not familiar with the wayland state_tracker, so I can only
  comment from the Wayland protocol perspective. I'm not sure what you
  intend to do with wl_shm, either. Are you implementing Wayland
  platform support?
 
 To be honest, we're not related to Wayland in any way.  I'm looking for
 a simple interface between os and GL rendering. The Xorg interface to
 Mesa and Gallium always seemed like overkill for our needs,

Ah, well, I think this is not exactly the interface you are looking for.

The Wayland protocol interfaces, wl_shm and wl_drm, are only to
facilitate buffer passing between processes using the minimum amount of
information needed to be sent over the Wayland wire. Or rather to not
push pixels through the wire but handles and metadata.

To make that actually work, especially wl_drm, they rely on the OS
magic to let it happen. In our case, it is the kernel DRM, DRI2, and
probably some other acronyms I'm not completely familiar with. So what
you see in the Wayland protocol is just the skin of buffer passing, all
the crucial details are hidden below in the OS graphics stack, like how
to turn a GEM flink name into a buffer you can actually do something
with (or whatever).

I'm guessing that there is no magic way to make things work, other than
actually inventing your own magic to begin with, if it doesn't exist
yet.


Thanks,
pq

  If you are only ever going to have software rendered GL, then I guess
  you might use wl_shm. If you have any reason to believe you might ever
  want hardware accelerated GL, then wl_shm won't work. (Actually, you
  probably want to choose between wl_shm and something else according to
  your renderer. Maybe.)
 
 I noticed that the native Wayland code chooses dri or shm based on the
 rendering needs. Thats fine for us (although we don't have any of the
 dri stuff ported or wrapped yet)
 
  wl_shm basically deals with mmappable files, i.e. directly
  CPU-accessible memory. Buffers suitable for hardware rendering or
  texturing are often not CPU-accessible, or extremely slow for that.
  Conversely, CPU-accessible memory is often not usable for GPU, or is
  slow. And you really don't want to have extra copies between CPU and
  GPU memory, especially just for buffer passing.
  
  Mesa contains another Wayland protocol interface used for hardware
  accelerated graphics buffers: wl_drm.
  
  Also, EGL vs. OpenGL is like comparing a bucket to paint. EGL is just
  one form of a bucket, that can give you OpenGL as the paint. There are
  other buckets, and other paints, and you cannot use a bucket as paint,
  nor paint as a bucket. Probably I just didn't understand what you are
  actually comparing here. (and sorry for a bad analogue :-p)
 
 This is actually a good example.  Our (Haiku's) GL Rendering with Mesa 
 swrast
 works fine at the moment. We also have an in-development Gallium driver
 (using llvmpipe or swpipe) *almost* working minus some on-screen stride 
 issues.
 The problem i'm trying to tackle is that by calling private Mesa and 
 Gallium
 functions externally.. the size of the paint can lid keeps changing and 
 keeping
 up between Mesa versions is consuming a lot of resources. (small 
 project trying
 to keep up with a large project, we have the same issue with Webkit)
 
  I have a blog post about Wayland, that is maybe not directly related 
  to
  your question, but might give some insight, I hope:
  http://ppaalanen.blogspot.fi/2012/11/on-supporting-wayland-gl-clients-and.html
 
 I'll take a look.  Thanks!
 
   -- Alex

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] Haiku using the Wayland state_tracker?

2013-03-27 Thread Pekka Paalanen
On Tue, 26 Mar 2013 16:47:15 -0500
Alexander von Gluck IV kallis...@unixzen.com wrote:

 I've been hitting several brick walls working on the Haiku GL stuff. 
 (mostly due to things being too complex for the time I have available)
 
 Given all the recent publicity for Wayland, I decided to look into the 
 wl_shm stuff.  From my point of view wl_shm looks *extremely* simple.
 
 Does anyone see any reason *not* to use the wayland state_tracker for 
 Haiku's GL rendering? The only possible down side I see is using EGL vs 
 OpenGL. (I admit I don't fully understand the pros and cons of EGL)

I'm not familiar with the wayland state_tracker, so I can only
comment from the Wayland protocol perspective. I'm not sure what you
intend to do with wl_shm, either. Are you implementing Wayland
platform support?

If you are only ever going to have software rendered GL, then I guess
you might use wl_shm. If you have any reason to believe you might ever
want hardware accelerated GL, then wl_shm won't work. (Actually, you
probably want to choose between wl_shm and something else according to
your renderer. Maybe.)

wl_shm basically deals with mmappable files, i.e. directly
CPU-accessible memory. Buffers suitable for hardware rendering or
texturing are often not CPU-accessible, or extremely slow for that.
Conversely, CPU-accessible memory is often not usable for GPU, or is
slow. And you really don't want to have extra copies between CPU and
GPU memory, especially just for buffer passing.

Mesa contains another Wayland protocol interface used for hardware
accelerated graphics buffers: wl_drm.

Also, EGL vs. OpenGL is like comparing a bucket to paint. EGL is just
one form of a bucket, that can give you OpenGL as the paint. There are
other buckets, and other paints, and you cannot use a bucket as paint,
nor paint as a bucket. Probably I just didn't understand what you are
actually comparing here. (and sorry for a bad analogue :-p)

I have a blog post about Wayland, that is maybe not directly related to
your question, but might give some insight, I hope:
http://ppaalanen.blogspot.fi/2012/11/on-supporting-wayland-gl-clients-and.html


Thanks,
pq
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev