i965: Use current draw buffer instead of drawable visual to get alpha bits
authorIan Romanick <ian.d.romanick@intel.com>
Tue, 15 Dec 2009 00:16:26 +0000 (16:16 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Tue, 15 Dec 2009 00:30:53 +0000 (16:30 -0800)
Use the currently bound draw buffer instead of the visual from the
drawable used to create the context.  This cause problems generating
mipmaps for an RGBA texture in an RGB context.

This fixes the failure in piglit's glsl-lod-bias test reported in bug #25614.

src/mesa/drivers/dri/i965/brw_cc.c
src/mesa/drivers/dri/i965/brw_wm_surface_state.c

index ab301b9a3a07b6f87a0ec1565543d82b5ffe51fe..bac1c3a49c3314fc680f0040a71bae1f390012a1 100644 (file)
@@ -158,9 +158,9 @@ cc_unit_populate_key(struct brw_context *brw, struct brw_cc_unit_key *key)
 
       /* If the renderbuffer is XRGB, we have to frob the blend function to
        * force the destination alpha to 1.0.  This means replacing GL_DST_ALPHA
-       * with GL_ONE and GL_ONE_MINUS_DST_ALPAH with GL_ZERO.
+       * with GL_ONE and GL_ONE_MINUS_DST_ALPHA with GL_ZERO.
        */
-      if (ctx->Visual.alphaBits == 0) {
+      if (ctx->DrawBuffer->Visual.alphaBits == 0) {
         key->blend_src_rgb = fix_xRGB_alpha(key->blend_src_rgb);
         key->blend_src_a   = fix_xRGB_alpha(key->blend_src_a);
         key->blend_dst_rgb = fix_xRGB_alpha(key->blend_dst_rgb);
index 3f9b1fbfdc6011b76866262834895f83e0948da6..8335e5a650ebcbba8aadc4dcf277ce6c3f85b7e3 100644 (file)
@@ -581,7 +581,7 @@ brw_update_renderbuffer_surface(struct brw_context *brw,
    /* As mentioned above, disable writes to the alpha component when the
     * renderbuffer is XRGB.
     */
-   if (ctx->Visual.alphaBits == 0)
+   if (ctx->DrawBuffer->Visual.alphaBits == 0)
      key.color_mask[3] = GL_FALSE;
 
    key.color_blend = (!ctx->Color._LogicOpEnabled &&