Nested procedures into X12

Adam Jackson ajax at nwnk.net
Thu Jun 18 07:41:50 PDT 2015


On Wed, 2015-06-17 at 16:52 -0700, Keith Packard wrote:

> Having the code shared is nice, but the big cost of GL these days is
> all of the rendering and shader compiler state. Steaming megabytes of 
> data for every application. Memory is cheap these days; maybe we 
> don't care anymore.

There's a reason I said vulkan, but sure.  For that matter we could go
reinvent D11.  

> If all we're talking about are ridiculous rendering, then it's 
> actually easier than you fear -- the cost is in computing the 
> operation mask, not the blt operation that follows from that. And the 
> operation mask is independent of the source or destination operands. 
> Imagine doing:
> 
>         ProcPolyArc() {
> 
>                 if (!arc_started) {
>                         start_drawing_arcs_in_another_thread(stuff);
>                         ClientSleep();
>                 }
> 
>                 if (arc_finished) {
>                         mask = mask_from_async_drawing(client);
>                         PushPixels(src, dst, mask);
>                 }
>         }
> 
> You'd need to verify that the GC hadn't been changed between the two
> steps, but otherwise I think this would work fine.

Not just that the GC hasn't changed, that it's still valid for the
drawable; window resize will invalidate your composite clip.  And you
need to redo all the object lookup since the drawable may have been
destroyed and another created with the same XID, or the security policy
may have changed.  And if Xinerama is involved you'd need to build the
mask in the dispatch layer since otherwise you'd be breaking atomicity
across screens.

Which, if someone really wants to implement all that, I certainly won't
stop them.

- ajax


More information about the xorg-devel mailing list