gl/spans: Handle SOURCE operations with opaque sources.

SOURCE operations with an opaque are equivalent to OVER.
This can prevent us from falling back in certain cases.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Ravi Nanjundappa 2012-02-06 10:56:55 +05:30 committed by Martin Robinson
parent 4b6b28b5e8
commit 562cc8227f

View file

@ -431,6 +431,13 @@ _cairo_gl_span_renderer_init (cairo_abstract_span_renderer_t *_r,
cairo_operator_t op = composite->op;
cairo_int_status_t status;
if (op == CAIRO_OPERATOR_SOURCE) {
if (! _cairo_pattern_is_opaque (&composite->source_pattern.base,
&composite->source_sample_area))
return CAIRO_INT_STATUS_UNSUPPORTED;
op = CAIRO_OPERATOR_OVER;
}
/* XXX earlier! */
if (op == CAIRO_OPERATOR_CLEAR) {
source = &_cairo_pattern_white.base;