swrast: use _EnabledCoordUnits for fixed-function texturing
Using _EnabledUnits was wrong because it included vertex texture units. This change plus the prev commit fixes occasional failures of glean/glsl1 vertex texture test failure.
This commit is contained in:
@@ -1211,7 +1211,7 @@ shade_texture_span(GLcontext *ctx, SWspan *span)
|
||||
_swrast_exec_fragment_shader(ctx, span);
|
||||
}
|
||||
}
|
||||
else if (ctx->Texture._EnabledUnits) {
|
||||
else if (ctx->Texture._EnabledCoordUnits) {
|
||||
/* conventional texturing */
|
||||
|
||||
#if CHAN_BITS == 32
|
||||
@@ -1250,7 +1250,7 @@ _swrast_write_rgba_span( GLcontext *ctx, SWspan *span)
|
||||
void * const origRgba = span->array->rgba;
|
||||
const GLboolean shader = (ctx->FragmentProgram._Current
|
||||
|| ctx->ATIFragmentShader._Enabled);
|
||||
const GLboolean shaderOrTexture = shader || ctx->Texture._EnabledUnits;
|
||||
const GLboolean shaderOrTexture = shader || ctx->Texture._EnabledCoordUnits;
|
||||
struct gl_framebuffer *fb = ctx->DrawBuffer;
|
||||
|
||||
/*
|
||||
|
||||
@@ -266,7 +266,7 @@ affine_span(GLcontext *ctx, SWspan *span,
|
||||
struct affine_info *info)
|
||||
{
|
||||
GLchan sample[4]; /* the filtered texture sample */
|
||||
const GLuint texEnableSave = ctx->Texture._EnabledUnits;
|
||||
const GLuint texEnableSave = ctx->Texture._EnabledCoordUnits;
|
||||
|
||||
/* Instead of defining a function for each mode, a test is done
|
||||
* between the outer and inner loops. This is to reduce code size
|
||||
@@ -397,7 +397,7 @@ affine_span(GLcontext *ctx, SWspan *span,
|
||||
GLchan *dest = span->array->rgba[0];
|
||||
|
||||
/* Disable tex units so they're not re-applied in swrast_write_rgba_span */
|
||||
ctx->Texture._EnabledUnits = 0x0;
|
||||
ctx->Texture._EnabledCoordUnits = 0x0;
|
||||
|
||||
span->intTex[0] -= FIXED_HALF;
|
||||
span->intTex[1] -= FIXED_HALF;
|
||||
@@ -504,7 +504,7 @@ affine_span(GLcontext *ctx, SWspan *span,
|
||||
_swrast_write_rgba_span(ctx, span);
|
||||
|
||||
/* re-enable texture units */
|
||||
ctx->Texture._EnabledUnits = texEnableSave;
|
||||
ctx->Texture._EnabledCoordUnits = texEnableSave;
|
||||
|
||||
#undef SPAN_NEAREST
|
||||
#undef SPAN_LINEAR
|
||||
@@ -664,8 +664,8 @@ fast_persp_span(GLcontext *ctx, SWspan *span,
|
||||
GLfloat tex_coord[3], tex_step[3];
|
||||
GLchan *dest = span->array->rgba[0];
|
||||
|
||||
const GLuint savedTexEnable = ctx->Texture._EnabledUnits;
|
||||
ctx->Texture._EnabledUnits = 0;
|
||||
const GLuint texEnableSave = ctx->Texture._EnabledCoordUnits;
|
||||
ctx->Texture._EnabledCoordUnits = 0;
|
||||
|
||||
tex_coord[0] = span->attrStart[FRAG_ATTRIB_TEX0][0] * (info->smask + 1);
|
||||
tex_step[0] = span->attrStepX[FRAG_ATTRIB_TEX0][0] * (info->smask + 1);
|
||||
@@ -778,7 +778,7 @@ fast_persp_span(GLcontext *ctx, SWspan *span,
|
||||
#undef SPAN_LINEAR
|
||||
|
||||
/* restore state */
|
||||
ctx->Texture._EnabledUnits = savedTexEnable;
|
||||
ctx->Texture._EnabledCoordUnits = texEnableSave;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user