[Freedreno] [Mesa-dev] tilers and out-of-order rendering..
Jose Fonseca
jfonseca at vmware.com
Mon Jun 6 09:19:15 UTC 2016
On 04/06/16 20:36, Rob Clark wrote:
> On Fri, Jun 3, 2016 at 8:53 AM, Rob Clark <robdclark at gmail.com> wrote:
>> Ok, so I had a really evil thought that I wanted to bounce off
>> people.. it's a quite different approach from the more obvious one
>> discussed below (and which I've already started implementing)
>>
>> Basically, idea is to have a wrapper pipe driver, similar to
>> ddebug/rbug/trace/etc, which re-orders draw calls. All the CSO
>> objects would have to be wrapped in a refcounted thing, so
>> pending-draw's could hang on to their associated state. For things
>> that are not refcounted (draw_info, and all the non-CSO state) there
>> would unfortunately be some memcpy involved.. not sure how bad that
>> would be, but it seems like the thing that could doom the idea?
>
> so the slightly awkward thing is how to deal with things like
> u_blitter (pipe->blit/pipe->copy_region).. if we were re-ordering
> things to avoid unnecessary render target switches, the wrapper layer
> would have to handle these paths itself. But looks like vc4 has some
> special handling (vc4_tile_blit()).. not really sure how that would
> work out.
>
> (and in general, the wrapper layer would want to handle some cases, as
> well as transfer_map, itself.. so it could generate ghost
> pipe_resources for things like writing into a busy texture.. but that
> probably isn't too hard since a wrapper pipe_resource could replace
> the ref to hw driver's pipe_resource and schedule blits to copy from
> previous pipe_resource where needed.. hopefully combination of
> PIPE_TRANSFER_DISCARD* and pipe_draw_info::discard type hint (as I
> mentioned below) could "DCE" those copy blits. Except I somehow need
> to deal w/ CSO's which have reference to the ghosted resource.. bleh)
Yeah, wrapper pipe drivers sound nice in theory, but aren't that great
in practice, for anything other than debugging pipe drivers.
A driver auxiliary library that drivers can opt-in/out and extend, is
much more flexible.
But still, rather than aiming straight at a driver indepedendent code,
it might be better to first prototoype as an internal driver component,
and then generalize/refactor in a 2nd step.
Jose
More information about the Freedreno
mailing list