On Sat, 13 Jan 2018 09:06:49 -0600 Derek Foreman <der...@osg.samsung.com> said:

> <Heavily trimmed, as I wish to avoid most of the technical and 
> non-technical debate and address one point>
> 
> On 2018-01-13 12:37 AM, Carsten Haitzler wrote:
> > On Fri, 12 Jan 2018 19:48:15 +0000 Mike Blumenkrantz
> > <michael.blumenkra...@gmail.com> said:
> > 
> >>
> >> On Fri, Jan 12, 2018 at 9:45 AM Carsten Haitzler <ras...@rasterman.com>
> >> wrote:
> >>
> >>> On Fri, 12 Jan 2018 13:48:46 +0000 Stephen Houston <smhousto...@gmail.com>
> >>> said:
> >>
> >> Both of these cases are solved by rendering the buffers (both gl and
> >> software) directly in the outer compositor; see
> >> https://phab.enlightenment.org/T6592 on the gadgets workboard for this task
> >> which is already nearing completion.
> > 
> > that doesn't change anything. some work somewhere has to either copy the
> > data to video memory every change OR the the gpu will likely have to
> > composite and thus access data over a bus (eg over pci bus). if it's an
> > embedded system all memory is equal, but subsurface are going to unlikely
> > help because you'll not have enough hw layers to assign to a host of
> > gadgets. there will generally maybe be 2-5 ... maybe on a good day 8 or 10
> > layers, and these are far better used for application windows (e.g.
> > separating desktop, active/focused window or window being moved/dragged,
> > etc. etc.). it's still a gadget rendering to a buffer THEN that buffer
> > having to be copied again ... always. at all times.
> 
> Hey Raster,
> 
> The trick here is that a wl_shm or dmabuf will never actually be 
> rendered by the *nested* compositor.

someone has to render it to the final buffer/screen. either the MAIN compositor
has to do this or it's assigned to a hw layer (thus a hardware compositor does
it). in the end it adds up to an "always there extra buffer or set of buffers
that are swapped". with modules where e is doing all the rendering there is no
such buffer (unless we use map or proxies and force it as a choice). i'm just
pointing out that there is a cost and it's non-free. but it's also "always
there", as opposed to if rendering is done in enlightenment where it can be a
choice turned on and off at will (or on the fly).

> The nested compositor will simply created a proxy buffer and use the 
> existing "hardware" plane infrastructure to place this on a subsurface 
> (I'm calling these virtual hardware planes).  It won't even open the 
> file descriptors, it'll just create parent compositor objects for them 
> and proxy along placement and damage requests.

yup. i got that... but i directly addressed that. the rendering pipeline here
in a wayland sense is:

COPY src texture/image data -> client visible buffer
0    buffer swapped/sent to compositor (zero copy)
COPY compositor read buffer -> write/render to compositor backbuffer
0    compositor display backbuffer

where gadgets inside e are:

COPY src texture/image data -> write/render to compositor backbuffer
0    compositor display backbuffer

if you have enough hw layers for each and every gadget buffer (which i doubt
given that mostly hw has maybe 2 or 3 layers, sometimes 5 or maybe 8), those
layers would be far more effectively spent on mouse cursor and focused client
windows etc... thus the first pipeline is what will be really happening. yes.
if the buffer gets assigned to a hw layer it's

COPY src texture/image data -> client visible buffer
0    buffer swapped/sent to compositor (zero copy)
0    compositor assigns buffer to hw layer

though hw layers aren't totally free either. the hw is dma scanning them every
refresh to the screeen in addition to all other hw layers... :) it depends
where your memory is and so on as to how this impacts things.

> There are a few technical hurdles and @optimizations required to get us 
> there, but that's the tl;dr.
> 
> When finished, this should prevent all "double draw" performance losses 
> as well as allowing some surprising tricks like GL clients proxying 
> dmabuf GPU rendered buffers through a SW rendering nested compositor to 
> a GL rendering parent compositor, which can directly use them as textures.
> 
> Thanks,
> Derek
> 
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
Carsten Haitzler - ras...@rasterman.com


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to