fix #6072 (Keith Whitwell)

This commit is contained in:
Aapo Tahkola
2006-03-28 10:26:34 +00:00
parent 1155f64cc0
commit b8915340ea

View File

@@ -928,9 +928,12 @@ static void load_texture( struct texenv_fragment_program *p, GLuint unit )
/* TODO: Use D0_MASK_XY where possible. /* TODO: Use D0_MASK_XY where possible.
*/ */
p->src_texture[unit] = emit_texld( p, OPCODE_TXP, if (p->state->unit[unit].enabled)
tmp, WRITEMASK_XYZW, p->src_texture[unit] = emit_texld( p, OPCODE_TXP,
unit, dim, texcoord ); tmp, WRITEMASK_XYZW,
unit, dim, texcoord );
else
p->src_texture[unit] = get_zero(p);
} }
} }
@@ -950,8 +953,6 @@ static GLboolean load_texenv_source( struct texenv_fragment_program *p,
case SRC_TEXTURE5: case SRC_TEXTURE5:
case SRC_TEXTURE6: case SRC_TEXTURE6:
case SRC_TEXTURE7: case SRC_TEXTURE7:
if (!p->state->unit[src - SRC_TEXTURE0].enabled)
return GL_FALSE;
load_texture(p, src - SRC_TEXTURE0); load_texture(p, src - SRC_TEXTURE0);
break; break;
@@ -970,12 +971,16 @@ static GLboolean
load_texunit_sources( struct texenv_fragment_program *p, int unit ) load_texunit_sources( struct texenv_fragment_program *p, int unit )
{ {
struct state_key *key = p->state; struct state_key *key = p->state;
int i, nr = key->unit[unit].NumArgsRGB; GLuint i;
for (i = 0; i < nr; i++) {
if (!load_texenv_source( p, key->unit[unit].OptRGB[i].Source, unit) || for (i = 0; i < key->unit[unit].NumArgsRGB; i++) {
!load_texenv_source( p, key->unit[unit].OptA[i].Source, unit )) load_texenv_source( p, key->unit[unit].OptRGB[i].Source, unit);
return GL_FALSE;
} }
for (i = 0; i < key->unit[unit].NumArgsA; i++) {
load_texenv_source( p, key->unit[unit].OptA[i].Source, unit );
}
return GL_TRUE; return GL_TRUE;
} }
@@ -1028,8 +1033,8 @@ create_new_program(struct state_key *key, GLcontext *ctx,
*/ */
for (unit = 0 ; unit < ctx->Const.MaxTextureUnits ; unit++) for (unit = 0 ; unit < ctx->Const.MaxTextureUnits ; unit++)
if (key->unit[unit].enabled) { if (key->unit[unit].enabled) {
if (load_texunit_sources( &p, unit )) load_texunit_sources( &p, unit );
p.last_tex_stage = unit; p.last_tex_stage = unit;
} }
/* Second pass - emit combine instructions to build final color: /* Second pass - emit combine instructions to build final color: