diff options
| -rw-r--r-- | docs/relnotes-6.5.3.html | 1 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/i965/brw_program.c | 4 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/i965/brw_vs_tnl.c | 4 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/i965/brw_wm_fp.c | 2 | ||||
| -rw-r--r-- | src/mesa/swrast/s_copypix.c | 7 | ||||
| -rw-r--r-- | src/mesa/swrast/s_drawpix.c | 5 | ||||
| -rw-r--r-- | src/mesa/swrast/s_readpix.c | 4 | 
7 files changed, 21 insertions, 6 deletions
| diff --git a/docs/relnotes-6.5.3.html b/docs/relnotes-6.5.3.html index 86e23d6d0d..b3d2fe6455 100644 --- a/docs/relnotes-6.5.3.html +++ b/docs/relnotes-6.5.3.html @@ -33,6 +33,7 @@ TBD  <li>Fog was errantly applied when a fragment shader was enabled (bug 9346)  <li>glPush/PopClientAttrib didn't handle VBO bindings correctly (bug 9445)  <li>With 32-bit Z buffer, the fragment Z of lines and points was sometimes wrong. +<li>1D convolution state could effect 2D image transfers  </ul> diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c index 1ae065b10d..5d98176dce 100644 --- a/src/mesa/drivers/dri/i965/brw_program.c +++ b/src/mesa/drivers/dri/i965/brw_program.c @@ -117,7 +117,7 @@ static void brwProgramStringNotify( GLcontext *ctx,        if (p == fp)  	 brw->state.dirty.brw |= BRW_NEW_FRAGMENT_PROGRAM;        p->id = brw->program_id++;       -      p->param_state = brw_parameter_list_state_flags(p->program.Base.Parameters);  +      p->param_state = p->program.Base.Parameters->StateFlags;     }     else if (target == GL_VERTEX_PROGRAM_ARB) {        struct brw_context *brw = brw_context(ctx); @@ -126,7 +126,7 @@ static void brwProgramStringNotify( GLcontext *ctx,        if (p == vp)  	 brw->state.dirty.brw |= BRW_NEW_VERTEX_PROGRAM;        p->id = brw->program_id++;       -      p->param_state = brw_parameter_list_state_flags(p->program.Base.Parameters);  +      p->param_state = p->program.Base.Parameters->StateFlags;        /* Also tell tnl about it:         */ diff --git a/src/mesa/drivers/dri/i965/brw_vs_tnl.c b/src/mesa/drivers/dri/i965/brw_vs_tnl.c index e22a26b291..dd1664bf33 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_tnl.c +++ b/src/mesa/drivers/dri/i965/brw_vs_tnl.c @@ -1174,8 +1174,8 @@ static void build_fog( struct tnl_program *p )        switch (p->state->fog_option) {        case FOG_LINEAR: { -	 emit_op3(p, OPCODE_MAD, tmp, 0, input, swizzle1(params,X), swizzle1(params,Y)); -	 emit_op2(p, OPCODE_MUL, tmp, 0, tmp, swizzle1(params,W));  +	 emit_op1(p, OPCODE_ABS, tmp, 0, input); +	 emit_op3(p, OPCODE_MAD, tmp, 0, tmp, swizzle1(params,X), swizzle1(params,Y));  	 emit_op2(p, OPCODE_MAX, tmp, 0, tmp, swizzle1(id,X)); /* saturate */  	 emit_op2(p, OPCODE_MIN, fog, WRITEMASK_X, tmp, swizzle1(id,W));  	 break; diff --git a/src/mesa/drivers/dri/i965/brw_wm_fp.c b/src/mesa/drivers/dri/i965/brw_wm_fp.c index bb0aa35615..ba2dbeccde 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_fp.c +++ b/src/mesa/drivers/dri/i965/brw_wm_fp.c @@ -398,7 +398,7 @@ static struct prog_src_register search_or_add_param6( struct brw_wm_compile *c,     /* Recalculate state dependency:       */ -   c->fp->param_state = brw_parameter_list_state_flags( paramList ); +   c->fp->param_state = paramList->StateFlags;     return src_reg(PROGRAM_STATE_VAR, idx);  } diff --git a/src/mesa/swrast/s_copypix.c b/src/mesa/swrast/s_copypix.c index 7e8ebb4477..b318777072 100644 --- a/src/mesa/swrast/s_copypix.c +++ b/src/mesa/swrast/s_copypix.c @@ -199,7 +199,7 @@ copy_rgba_pixels(GLcontext *ctx, GLint srcx, GLint srcy,     GLint sy, dy, stepy, row;     const GLboolean zoom = ctx->Pixel.ZoomX != 1.0F || ctx->Pixel.ZoomY != 1.0F;     GLint overlapping; -   const GLuint transferOps = ctx->_ImageTransferState; +   GLuint transferOps = ctx->_ImageTransferState;     SWspan span;     if (!ctx->ReadBuffer->_ColorReadBuffer) { @@ -211,6 +211,11 @@ copy_rgba_pixels(GLcontext *ctx, GLint srcx, GLint srcy,        copy_conv_rgba_pixels(ctx, srcx, srcy, width, height, destx, desty);        return;     } +   else if (ctx->Pixel.Convolution1DEnabled) { +      /* make sure we don't apply 1D convolution */ +      transferOps &= ~(IMAGE_CONVOLUTION_BIT | +                       IMAGE_POST_CONVOLUTION_SCALE_BIAS); +   }     /* Determine if copy should be done bottom-to-top or top-to-bottom */     if (srcy < desty) { diff --git a/src/mesa/swrast/s_drawpix.c b/src/mesa/swrast/s_drawpix.c index d97d53e83b..99ad71143e 100644 --- a/src/mesa/swrast/s_drawpix.c +++ b/src/mesa/swrast/s_drawpix.c @@ -619,6 +619,11 @@ draw_rgba_pixels( GLcontext *ctx, GLint x, GLint y,        type = GL_FLOAT;        transferOps &= IMAGE_POST_CONVOLUTION_BITS;     } +   else if (ctx->Pixel.Convolution1DEnabled) { +      /* we only want to apply 1D convolution to glTexImage1D */ +      transferOps &= ~(IMAGE_CONVOLUTION_BIT | +                       IMAGE_POST_CONVOLUTION_SCALE_BIAS); +   }     if (ctx->DrawBuffer->_NumColorDrawBuffers[0] > 0 &&         ctx->DrawBuffer->_ColorDrawBuffers[0][0]->DataType != GL_FLOAT && diff --git a/src/mesa/swrast/s_readpix.c b/src/mesa/swrast/s_readpix.c index c5524c0630..7dc48aec68 100644 --- a/src/mesa/swrast/s_readpix.c +++ b/src/mesa/swrast/s_readpix.c @@ -410,6 +410,10 @@ read_rgba_pixels( GLcontext *ctx,           = (GLubyte *) _mesa_image_address2d(packing, pixels, width, height,                                               format, type, 0, 0); +      /* make sure we don't apply 1D convolution */ +      transferOps &= ~(IMAGE_CONVOLUTION_BIT | +                       IMAGE_POST_CONVOLUTION_SCALE_BIAS); +        for (row = 0; row < height; row++, y++) {           /* Get float rgba pixels */ | 
