(In reply to comment #2)
> >+ pattern->SetExtend(gfxPattern::EXTEND_PAD);
>
> This shouldn't be done on OSX; the quartz surface behaves slightly differently
> and PAD will cause us to take a slow path.
It's necessary. I haven't tried this exact testcase but I can reproduce visual artifacts on OSX without it. Also, looking at cairo-quartz-surface.c, it doesn't seem to take a fallback for EXTEND_PAD, only EXTEND_REPEAT/REFLECT.
> Also, make sure you do the cairo patch bit -- add the patch file itself to
> gfx/cairo and edit gfx/cairo/README to reference it, or it'll get blown away
> next cairo upgrade. Jeff or I will upstream it when we can.
Ok.
(In reply to comment #3)
> I seem to recall problems with PAD being buggy in the X server, but I don't
> remember any details. I guess if reftests pass that's a pretty good sign, but
> how confident are we about the various server/driver combinations? Does Carl
> know?
For the record, I see no regressions in the reftests with this change, but the reftest included in the patch fails -- still analyzing. I think it's an accident of how I wrote the test.
> I basically like the patch but I'd like to see a new version addressing Vlad's
> comments. Also, what does returning UNSUPPORTED actually cause cairo to do
> here?
The failure propagates to _cairo_surface_composite in cairo-surface.c which then calls _cairo_surface_fallback_composite -- so the rendering is the same, but without X-server acceleration.
(In reply to comment #2) >SetExtend( gfxPattern: :EXTEND_ PAD);
> >+ pattern-
>
> This shouldn't be done on OSX; the quartz surface behaves slightly differently
> and PAD will cause us to take a slow path.
It's necessary. I haven't tried this exact testcase but I can reproduce visual artifacts on OSX without it. Also, looking at cairo-quartz- surface. c, it doesn't seem to take a fallback for EXTEND_PAD, only EXTEND_ REPEAT/ REFLECT.
> Also, make sure you do the cairo patch bit -- add the patch file itself to
> gfx/cairo and edit gfx/cairo/README to reference it, or it'll get blown away
> next cairo upgrade. Jeff or I will upstream it when we can.
Ok.
(In reply to comment #3)
> I seem to recall problems with PAD being buggy in the X server, but I don't
> remember any details. I guess if reftests pass that's a pretty good sign, but
> how confident are we about the various server/driver combinations? Does Carl
> know?
For the record, I see no regressions in the reftests with this change, but the reftest included in the patch fails -- still analyzing. I think it's an accident of how I wrote the test.
> I basically like the patch but I'd like to see a new version addressing Vlad's
> comments. Also, what does returning UNSUPPORTED actually cause cairo to do
> here?
The failure propagates to _cairo_ surface_ composite in cairo-surface.c which then calls _cairo_ surface_ fallback_ composite -- so the rendering is the same, but without X-server acceleration.