summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenry Song <henry.song@samsung.com>2012-05-02 21:54:55 +0200
committerMartin Robinson <mrobinson@igalia.com>2013-01-15 15:09:03 -0800
commit769ea3b2c757adc9f8f348fdc93bb46f35c2f6b8 (patch)
tree950f6438b488a489ba1a2d563651966e4d7d3f48
parentd01a502710296c9b15755f445f6fdda289a2df0b (diff)
gl: Support for non-texture sources and masks
If a GL surface is not a texture and is used as source or mask, fall back to using an image surface as an intermediary. Fixes subsurface-image-repeat, subsurface-modify-child, subsurface-modify-parent, subsurface-outside-target, subsurface-pad, subsurface-reflect, subsurface-repeat, and subsurface-scale.
-rw-r--r--src/cairo-gl-operand.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/cairo-gl-operand.c b/src/cairo-gl-operand.c
index ee6c08e6..47d01046 100644
--- a/src/cairo-gl-operand.c
+++ b/src/cairo-gl-operand.c
@@ -269,6 +269,9 @@ _cairo_gl_surface_operand_init (cairo_gl_operand_t *operand,
if (surface->base.device && surface->base.device != dst->base.device)
return CAIRO_INT_STATUS_UNSUPPORTED;
+ if (! _cairo_gl_surface_is_texture (surface))
+ return CAIRO_INT_STATUS_UNSUPPORTED;
+
status = _resolve_multisampling (surface);
if (unlikely (status))
return status;