vega: don't enable blending if not necessary
authorRoland Scheidegger <sroland@vmware.com>
Mon, 25 Jan 2010 15:52:14 +0000 (16:52 +0100)
committerRoland Scheidegger <sroland@vmware.com>
Mon, 25 Jan 2010 15:52:14 +0000 (16:52 +0100)
In some places blending was enabled even though it wasn't necessary.
Also remove a (bogus) reenabling of color writes, which wasn't really used.

src/gallium/state_trackers/vega/api_filters.c
src/gallium/state_trackers/vega/mask.c
src/gallium/state_trackers/vega/vg_context.c

index 555d3bd7f9152575f704f7ff61b5887c297289ac..cf4a11bb142ce0ef349600767f136c0c7a9ec8de 100644 (file)
@@ -139,7 +139,7 @@ static void setup_blend()
       blend.rt[0].colormask |= PIPE_MASK_B;
    if (ctx->state.vg.filter_channel_mask & VG_ALPHA)
       blend.rt[0].colormask |= PIPE_MASK_A;
-   blend.rt[0].blend_enable = 1; /* XXX why? */
+   blend.rt[0].blend_enable = 0;
    cso_set_blend(ctx->cso_context, &blend);
 }
 
index d94fa47da62dad1a175f3ad6820ce46cbaf0c7ca..ba8ecef1d2db6bf100a2edc0b937feb8a41c6989 100644 (file)
@@ -354,7 +354,7 @@ static void setup_mask_blend()
    struct pipe_blend_state blend;
 
    memset(&blend, 0, sizeof(struct pipe_blend_state));
-   blend.rt[0].blend_enable = 1; /* XXX why? */
+   blend.rt[0].blend_enable = 0;
    blend.rt[0].colormask = PIPE_MASK_RGBA;
    blend.rt[0].rgb_src_factor = PIPE_BLENDFACTOR_ONE;
    blend.rt[0].alpha_src_factor = PIPE_BLENDFACTOR_ONE;
index f05a5e68c6d64b510dd55b02710d1d275ddf2007..64207d97bac620101e45a2d11bdf04e3db34f03f 100644 (file)
@@ -286,8 +286,6 @@ static void update_clip_state(struct vg_context *ctx)
          renderer_draw_quad(ctx->renderer, minx, miny, maxx, maxy, 0.0f);
       }
 
-      blend->rt[0].colormask = PIPE_MASK_R; /*enable colorwrites*/
-      /* XXX really only for red channel? */
       cso_restore_blend(ctx->cso_context);
       cso_restore_fragment_shader(ctx->cso_context);
 
@@ -311,7 +309,7 @@ void vg_validate_state(struct vg_context *ctx)
          blend->rt[0].alpha_src_factor = PIPE_BLENDFACTOR_ONE;
          blend->rt[0].rgb_dst_factor   = PIPE_BLENDFACTOR_ZERO;
          blend->rt[0].alpha_dst_factor = PIPE_BLENDFACTOR_ZERO;
-         /* could disable blending ? */
+         blend->rt[0].blend_enable = 0;
          break;
       case VG_BLEND_SRC_OVER:
          blend->rt[0].rgb_src_factor   = PIPE_BLENDFACTOR_SRC_ALPHA;
@@ -345,7 +343,7 @@ void vg_validate_state(struct vg_context *ctx)
          blend->rt[0].alpha_src_factor = PIPE_BLENDFACTOR_ONE;
          blend->rt[0].rgb_dst_factor   = PIPE_BLENDFACTOR_ZERO;
          blend->rt[0].alpha_dst_factor = PIPE_BLENDFACTOR_ZERO;
-         /* could disable blending ? */
+         blend->rt[0].blend_enable = 0;
          break;
       case VG_BLEND_ADDITIVE:
          blend->rt[0].rgb_src_factor   = PIPE_BLENDFACTOR_ONE;