fix #6072 (Keith Whitwell)
This commit is contained in:
@@ -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:
|
||||||
|
Reference in New Issue
Block a user