[Mesa-dev] [PATCH 8/9] drisw: Enable flush control for llvmpipe and softpipe
Roland Scheidegger
sroland at vmware.com
Tue May 19 08:41:23 PDT 2015
On 05/19/2015 04:46 PM, Adam Jackson wrote:
> On Tue, 2015-05-12 at 23:34 +0200, Roland Scheidegger wrote:
>> I like faster!
>>
>> I don't really understand though where the wins come from.
>> softpipe can't have much pending work in the first place (maybe tile
>> cache?), llvmpipe potentially has the rasterizer threads I guess but
>> I'm not quite sure how this works...
>
> Well the purpose of the series is eliminating the implicit glFlush when
> switching contexts, so I think "calling flush way less" is probably the
> entirety of the win. There may not be much work to do, but the cost of
> figuring that out is non-zero. For softpipe, flushing less mostly
> means reducing CPU cycle usage in an entirely cycle-bound execution
> path. For llvmpipe I think we're closer to being bound by data cache
> throughput than by cycle count, so flushing less is reducing the amount
> of redundant d$ work.
>
> The testcase is admittedly pathological, the main loop looks like:
>
> for each window
> minor setup
> for each span in height
> for each window
> draw a bit
> for each window
> swapbuffers
>
> where you have three windows and a height of 100, and every window
> switch is a MakeCurrent. So eliminating the flush on ctxsw is
> eliminating >300 flushes per frame.
>
> - ajax
>
Thanks for the explanation, makes sense. So real world gains probably
unfortunately won't be anywhere close unless someone is really doing
something weird, but every little bit helps...
So,
Acked-by: Roland Scheidegger <sroland at vmware.com>
More information about the mesa-dev
mailing list