I double checked with the existing code and the extension spec. I believe this change is correct. If GL_DOT3_RGBA is used, the alpha mode is ignored.
Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> On 08/06/2014 11:56 AM, ville.syrj...@linux.intel.com wrote: > From: Ville Syrjälä <ville.syrj...@linux.intel.com> > > The spec says using DOT4 for alpha is undefined unless DOT4 is also used > for color. It seems to do the right thing anyway, but better safe than sorry. > > Also override numAlphaArgs to 2 for DOT4 since that's what it wants. > This migth fix something in case the specified alpha mode has only one > argument. Also avoids emitting a needless 3DSTATE_MAP_BLEND_ARG if > the specified alpha mode has three arguments. > > Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com> > --- > src/mesa/drivers/dri/i915/i830_texblend.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/src/mesa/drivers/dri/i915/i830_texblend.c > b/src/mesa/drivers/dri/i915/i830_texblend.c > index 236be59..feea383 100644 > --- a/src/mesa/drivers/dri/i915/i830_texblend.c > +++ b/src/mesa/drivers/dri/i915/i830_texblend.c > @@ -136,7 +136,7 @@ i830SetTexEnvCombine(struct i830_context * i830, > GLuint texel_op, GLuint * state, const GLfloat * factor) > { > const GLuint numColorArgs = combine->_NumArgsRGB; > - const GLuint numAlphaArgs = combine->_NumArgsA; > + GLuint numAlphaArgs = combine->_NumArgsA; > > GLuint blendop; > GLuint ablendop; > @@ -209,7 +209,7 @@ i830SetTexEnvCombine(struct i830_context * i830, > break; > case GL_DOT3_RGBA_EXT: > case GL_DOT3_RGBA: > - blendop = TEXBLENDOP_DOT3; > + blendop = TEXBLENDOP_DOT4; > break; > default: > return pass_through(state, blendUnit); > @@ -273,6 +273,7 @@ i830SetTexEnvCombine(struct i830_context * i830, > if (combine->ModeRGB == GL_DOT3_RGBA_EXT || > combine->ModeRGB == GL_DOT3_RGBA) { > ablendop = TEXBLENDOP_DOT4; > + numAlphaArgs = 2; > args_A[0] = TEXBLENDARG_FACTOR; /* the global factor */ > args_A[1] = TEXBLENDARG_FACTOR; > args_A[2] = TEXBLENDARG_FACTOR; > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev