if (generic_src->backend != dst->base.backend) { src_clone = _cairo_glitz_surface_clone_similar (dst, generic_src, CAIRO_FORMAT_ARGB32); if (!src_clone) return CAIRO_INT_STATUS_UNSUPPORTED;
if (_glitz_ensure_target (dst->surface)) return CAIRO_INT_STATUS_UNSUPPORTED;  status = _cairo_glitz_pattern_acquire_surfaces (src_pattern, mask_pattern, dst, src_x, src_y, mask_x, mask_y, width, height, &src, &mask, &src_attr, &mask_attr); if (status) return status;  _cairo_glitz_surface_set_attributes (src, &src_attr); if (mask) { _cairo_glitz_surface_set_attributes (mask, &mask_attr); glitz_composite (_glitz_operator (op), src->surface, mask->surface, dst->surface, src_x + src_attr.base.x_offset, src_y + src_attr.base.y_offset, mask_x + mask_attr.base.x_offset, mask_y + mask_attr.base.y_offset, dst_x, dst_y, width, height);
_cairo_glitz_surface_composite (cairo_operator_t op,				cairo_surface_t *generic_src,				cairo_surface_t *generic_mask,				void *abstract_dst,				int src_x,				int src_y,				int mask_x,				int mask_y,				int dst_x,				int dst_y,				unsigned int width,				unsigned int height){    cairo_glitz_surface_t *dst = abstract_dst;    cairo_glitz_surface_t *src = (cairo_glitz_surface_t *) generic_src;    cairo_glitz_surface_t *mask = (cairo_glitz_surface_t *) generic_mask;    cairo_glitz_surface_t *src_clone = NULL;    cairo_glitz_surface_t *mask_clone = NULL;    cairo_int_status_t status;    if (op == CAIRO_OPERATOR_SATURATE)	return CAIRO_INT_STATUS_UNSUPPORTED;    if (generic_src->backend != dst->base.backend) {	src_clone = _cairo_glitz_surface_clone_similar (dst, generic_src,							CAIRO_FORMAT_ARGB32);	if (!src_clone)	    return CAIRO_INT_STATUS_UNSUPPORTED;		src = src_clone;    }        if (generic_mask && (generic_mask->backend != dst->base.backend)) {	mask_clone = _cairo_glitz_surface_clone_similar (dst, generic_mask,							 CAIRO_FORMAT_A8);	if (!mask_clone)	    return CAIRO_INT_STATUS_UNSUPPORTED;		mask = mask_clone;    }    status = _glitz_composite (_glitz_operator (op),			       src->surface,			       (mask)? mask->surface: NULL,			       dst->surface,			       src_x, src_y,			       mask_x, mask_y,			       dst_x, dst_y,			       width, height,			       NULL, NULL);    if (src_clone)	cairo_surface_destroy (&src_clone->base);        if (mask_clone)	cairo_surface_destroy (&mask_clone->base);    return status;}