[PATCH] exa/mixed: avoid unnecessary dest system buffer copy in prepare_access_reg

xmail at karlt.net xmail at karlt.net
Sun Sep 5 19:58:20 PDT 2010


On Fri, 03 Sep 2010 09:57:37 +0200, Michel Dänzer wrote:

> On Don, 2010-08-26 at 22:57 +1200, Karl Tomlinson wrote: 
>> 
>> A region is only provided to prepare_access_reg for destination pixmaps when
>> the operator will not read from the destination.  A non-NULL region therefore
>> indicates that no pixels in the destination gpu buffer need to be copied to
>> the system buffer.
>> 
>> The provided region still serves a purpose, as it indicates the portion of
>> the system buffer that will be damaged.
>> ---
>>  exa/exa_migration_mixed.c |   42 ++++++++++++++++++++++++++++--------------
>>  1 files changed, 28 insertions(+), 14 deletions(-)
>
> I like the idea of this[0], but unfortunately it breaks the transparency
> of rounded window corners with compiz here, see the attached screenshot.
> Are you seeing this as well?

I haven't been able to reproduce this problem.  Here rounded
corners seem fine with emerald, gtk-, or kde4- window-decorator.

I've been testing with xserver 1.8.2.  Not much has changed in
EXA, but I guess other changes could possibly be involved.

> [0] I was experimenting with always creating the damage record right
> away, but I think this should provide more or less the same (and even
> some more) benefits without the drawbacks.

The patch here doesn't do anything to reduce the initial regions
read during operations that do read the destination.  Creating the
damage record right away could help with that, though
other ExaMigrationRec changes could provide regions there.

For an op where a fetch is known to be necessary, deciding how
much to fetch is a more complex problem.  Sometimes it might be
more efficient to fetch everything at once, if a fetch is
required.


More information about the xorg-devel mailing list