From 21db1c99108dc84166cbd9641f3256b22f571ee3 Mon Sep 17 00:00:00 2001 From: Martin Robinson Date: Fri, 28 Dec 2012 14:10:29 -0800 Subject: [PATCH] gl: Cleanup selection of multisampling mode Fold the choice of multisampling mode into the cairo_gl_composite_t structure itself. This makes it more similar to other settings. --- src/cairo-gl-composite.c | 20 +++++++++----------- src/cairo-gl-msaa-compositor.c | 14 +++++++++----- src/cairo-gl-private.h | 9 ++++----- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/cairo-gl-composite.c b/src/cairo-gl-composite.c index e222c444b..fa62a871d 100644 --- a/src/cairo-gl-composite.c +++ b/src/cairo-gl-composite.c @@ -108,6 +108,12 @@ _cairo_gl_composite_set_spans (cairo_gl_composite_t *setup) setup->spans = TRUE; } +void +_cairo_gl_composite_set_multisample (cairo_gl_composite_t *setup) +{ + setup->multisample = TRUE; +} + void _cairo_gl_composite_set_clip_region (cairo_gl_composite_t *setup, cairo_region_t *clip_region) @@ -623,9 +629,8 @@ _cairo_gl_composite_setup_clipping (cairo_gl_composite_t *setup, } cairo_status_t -_cairo_gl_composite_begin_multisample (cairo_gl_composite_t *setup, - cairo_gl_context_t **ctx_out, - cairo_bool_t multisampling) +_cairo_gl_composite_begin (cairo_gl_composite_t *setup, + cairo_gl_context_t **ctx_out) { unsigned int dst_size, src_size, mask_size, vertex_size; cairo_gl_context_t *ctx; @@ -639,7 +644,7 @@ _cairo_gl_composite_begin_multisample (cairo_gl_composite_t *setup, if (unlikely (status)) return status; - _cairo_gl_context_set_destination (ctx, setup->dst, multisampling); + _cairo_gl_context_set_destination (ctx, setup->dst, setup->multisample); glEnable (GL_BLEND); @@ -716,13 +721,6 @@ FAIL: return status; } -cairo_status_t -_cairo_gl_composite_begin (cairo_gl_composite_t *setup, - cairo_gl_context_t **ctx_out) -{ - return _cairo_gl_composite_begin_multisample (setup, ctx_out, FALSE); -} - static inline void _cairo_gl_composite_draw_tristrip (cairo_gl_context_t *ctx) { diff --git a/src/cairo-gl-msaa-compositor.c b/src/cairo-gl-msaa-compositor.c index 35715d34f..12c416f2b 100644 --- a/src/cairo-gl-msaa-compositor.c +++ b/src/cairo-gl-msaa-compositor.c @@ -371,7 +371,9 @@ _cairo_gl_msaa_compositor_mask (const cairo_compositor_t *compositor, /* We always use multisampling here, because we do not yet have the smarts to calculate when the clip or the source requires it. */ - status = _cairo_gl_composite_begin_multisample (&setup, &ctx, TRUE); + _cairo_gl_composite_set_multisample (&setup); + + status = _cairo_gl_composite_begin (&setup, &ctx); if (unlikely (status)) goto finish; @@ -539,9 +541,10 @@ _cairo_gl_msaa_compositor_stroke (const cairo_compositor_t *compositor, goto finish; _cairo_gl_msaa_compositor_set_clip (composite, &info.setup); + if (antialias != CAIRO_ANTIALIAS_NONE) + _cairo_gl_composite_set_multisample (&info.setup); - status = _cairo_gl_composite_begin_multisample (&info.setup, &info.ctx, - antialias != CAIRO_ANTIALIAS_NONE); + status = _cairo_gl_composite_begin (&info.setup, &info.ctx); if (unlikely (status)) goto finish; @@ -628,9 +631,10 @@ _cairo_gl_msaa_compositor_fill (const cairo_compositor_t *compositor, goto cleanup_setup; _cairo_gl_msaa_compositor_set_clip (composite, &setup); + if (antialias != CAIRO_ANTIALIAS_NONE) + _cairo_gl_composite_set_multisample (&setup); - status = _cairo_gl_composite_begin_multisample (&setup, &ctx, - antialias != CAIRO_ANTIALIAS_NONE); + status = _cairo_gl_composite_begin (&setup, &ctx); if (unlikely (status)) goto cleanup_setup; diff --git a/src/cairo-gl-private.h b/src/cairo-gl-private.h index f17467443..57242a4e6 100644 --- a/src/cairo-gl-private.h +++ b/src/cairo-gl-private.h @@ -372,6 +372,7 @@ typedef struct _cairo_gl_composite { cairo_bool_t spans; cairo_clip_t *clip; + cairo_bool_t multisample; } cairo_gl_composite_t; typedef struct _cairo_gl_font { @@ -531,15 +532,13 @@ _cairo_gl_composite_set_mask_operand (cairo_gl_composite_t *setup, cairo_private void _cairo_gl_composite_set_spans (cairo_gl_composite_t *setup); +cairo_private void +_cairo_gl_composite_set_multisample (cairo_gl_composite_t *setup); + cairo_private cairo_status_t _cairo_gl_composite_begin (cairo_gl_composite_t *setup, cairo_gl_context_t **ctx); -cairo_private cairo_status_t -_cairo_gl_composite_begin_multisample (cairo_gl_composite_t *setup, - cairo_gl_context_t **ctx_out, - cairo_bool_t multisampling); - cairo_private void _cairo_gl_composite_emit_rect (cairo_gl_context_t *ctx, GLfloat x1,