[PATCH 4/4] miext/damage: Only wrap into the GC ops chain if there's a listener
Aaron Plattner
aplattner at nvidia.com
Sat Dec 17 17:03:16 PST 2011
On 12/13/2011 02:31 PM, Adam Jackson wrote:
> Before:
> 40000000 trep @ 0.0009 msec (1148346.9/sec): PutImage 10x10 square
> 60000000 trep @ 0.0005 msec (2091666.1/sec): ShmPutImage 10x10 square
>
> After:
> 40000000 trep @ 0.0008 msec (1191807.5/sec): PutImage 10x10 square
> 60000000 trep @ 0.0005 msec (2180983.0/sec): ShmPutImage 10x10 square
>
> Signed-off-by: Adam Jackson<ajax at redhat.com>
> ---
> miext/damage/damage.c | 6 +++++-
> 1 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/miext/damage/damage.c b/miext/damage/damage.c
> index d791211..dd4026b 100644
> --- a/miext/damage/damage.c
> +++ b/miext/damage/damage.c
> @@ -437,9 +437,13 @@ damageValidateGC(GCPtr pGC,
> unsigned long changes,
> DrawablePtr pDrawable)
> {
> + drawableDamage(pDrawable);
> DAMAGE_GC_FUNC_PROLOGUE (pGC);
> (*pGC->funcs->ValidateGC)(pGC, changes, pDrawable);
> - pGCPriv->ops = pGC->ops; /* just so it's not NULL */
> + if (pDamage)
> + pGCPriv->ops = pGC->ops; /* just so it's not NULL */
> + else
> + pGCPriv->ops = NULL;
> DAMAGE_GC_FUNC_EPILOGUE (pGC);
> }
I think this needs to be accompanied by a change to DamageRegister (or
miDamageRegister) to bump the drawable's serial number, or else creating
a Damage object on a drawable won't cause GCs that are already validated
against it to have the damage ops hooked in.
-- Aaron
More information about the xorg-devel
mailing list