[PATCH xserver RFC v2] glamor: fix wrong offset on composite rectangles

Olivier Fourdan ofourdan at redhat.com
Fri Apr 15 08:57:54 UTC 2016


Hi all,

Gentle reminder, could someone please review or give some feedback on this patch?

If this is not the right fix, just let me know. Yet the problem is real and reproducible (see the reproducer I attached in the bug)

Thanks
Olivier

----- Original Message -----
> Hi all,
> 
> Anyone to give some feedback on this patch?
> 
> It fixes bug #94568 for me (there is a simple reproducer there) and I have
> not noticed any ill effect in my (limited) testing here.
> 
> I tried to see if rendercheck would detect such an issue but apprently it
> doesn't, even with a patch in render check to map its window farther from
> (0,0).
> 
> But the good point is rendercheck doesn't seem to report any regression with
> this patch either (but again, I am not sure I can trust rendercheck on
> that).
> 
> Cheers,
> Olivier
> 
> ----- Original Message -----
> > When using PictOpSrc, the destination is wrongly shifted back to (0, 0).
> > 
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94568
> > 
> > Signed-off-by: Olivier Fourdan <ofourdan at redhat.com>
> > ---
> >  v2: Cleaup-up, move relevant code where it's actually used;
> >      Note: I am not entirely confident with this patch, it fixes the issue
> >      for me but I am definitely not certain it's correct...
> > 
> >  glamor/glamor_compositerects.c | 18 +++++++++---------
> >  1 file changed, 9 insertions(+), 9 deletions(-)
> > 
> > diff --git a/glamor/glamor_compositerects.c
> > b/glamor/glamor_compositerects.c
> > index 885a6c0..199e627 100644
> > --- a/glamor/glamor_compositerects.c
> > +++ b/glamor/glamor_compositerects.c
> > @@ -107,7 +107,6 @@ glamor_composite_rectangles(CARD8 op,
> >      struct glamor_pixmap_private *priv;
> >      pixman_region16_t region;
> >      pixman_box16_t *boxes;
> > -    int dst_x, dst_y;
> >      int num_boxes;
> >      PicturePtr source = NULL;
> >      Bool need_free_region = FALSE;
> > @@ -225,17 +224,18 @@ glamor_composite_rectangles(CARD8 op,
> >             RegionExtents(&region)->x2, RegionExtents(&region)->y2,
> >             RegionNumRects(&region));
> >  
> > -    glamor_get_drawable_deltas(dst->pDrawable, pixmap, &dst_x, &dst_y);
> > -    pixman_region_translate(&region, dst_x, dst_y);
> > -
> > -    DEBUGF("%s: pixmap +(%d, %d) extents (%d, %d),(%d, %d)\n",
> > -           __FUNCTION__, dst_x, dst_y,
> > -           RegionExtents(&region)->x1, RegionExtents(&region)->y1,
> > -           RegionExtents(&region)->x2, RegionExtents(&region)->y2);
> > -
> >      boxes = pixman_region_rectangles(&region, &num_boxes);
> >      if (op == PictOpSrc || op == PictOpClear) {
> >          CARD32 pixel;
> > +        int dst_x, dst_y;
> > +
> > +        glamor_get_drawable_deltas(dst->pDrawable, pixmap, &dst_x,
> > &dst_y);
> > +        pixman_region_translate(&region, dst_x, dst_y);
> > +
> > +        DEBUGF("%s: pixmap +(%d, %d) extents (%d, %d),(%d, %d)\n",
> > +               __FUNCTION__, dst_x, dst_y,
> > +               RegionExtents(&region)->x1, RegionExtents(&region)->y1,
> > +               RegionExtents(&region)->x2, RegionExtents(&region)->y2);
> >  
> >          if (op == PictOpClear)
> >              pixel = 0;
> > --
> > 2.5.0
> > 
> > _______________________________________________
> > xorg-devel at lists.x.org: X.Org development
> > Archives: http://lists.x.org/archives/xorg-devel
> > Info: https://lists.x.org/mailman/listinfo/xorg-devel
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: https://lists.x.org/mailman/listinfo/xorg-devel


More information about the xorg-devel mailing list