Cairo and X optimization (was Re: performance work)

Greg Smith gregsmitholpc at gmail.com
Tue Dec 23 09:35:20 EST 2008


Hi Jordan et al,

Thanks a lot for the advice. I'm forking this thread and will reply on 
the other one too.

One question here on your suggested methodology. Are you suggesting that 
we try those X composite hooks and then re-run the benchmark to see if 
it improves?

All,

Is anyone interested in getting in to this X windows code?

We have some momentum now including a test bed and baseline results so 
it may be the right time to work on everybody's favorite bugaboo: 
performance.

Thanks,

Greg S

Jordan Crouse wrote:
> Greg Smith wrote:
>> Hi Jordan,
>>
>> Looks like we made a little more progress on graphics benchmarking. 
>> See Neil's results below.
>>
>> I updated the feature page with the test results so far:
>> http://wiki.laptop.org/go/Feature_roadmap/General_UI_sluggishness
>>
>> What's next?
>>
>> Do we know enough now to target a particular section of the code for 
>> optimization?
>>
> My previous email was pretty long, so I thought I would answer this last 
> question separately.   I can help guide you with the operations that are 
> slower with acceleration.   There may be other optimizations to be had 
> within cairo or elsewhere in the X world, but I'll have to leave those 
> to  people who understand that code better.
> 
> The majority of the operations will probably be composite operations. 
> You will want to instrument the three composite hooks in the X driver 
> and their sub-functions:  lx_check_composite, lx_prepare_composite, and 
> lx_do_composite (in lx_exa.c).
> 
> lx_check_composite is the function where EXA checks to see if we are 
> willing to do the operation at all - most of the acceleration rejects 
> should happen here. lx_prepare_composite is where we store the 
> information we need for the ensuing composite operation(s) - we can also 
> bail out here, but there is an incremental cost in leading EXA further 
> down the primrose path before rejecting it.  lx_do_composite() obviously 
> is where the operation happens.  You will want to concentrate on these 
> functions - instrument the code to figure out why we accept or reject an 
> operation and why we take so long in rejecting certain operations. 
> Profiling these functions may also help you figure out where we are 
> spending our time.
> 
> So, in short - become one with the ErrorF() and good luck... :)
> 
> Jordan
> 



More information about the Devel mailing list