diff options
author | Eric Anholt <eric@anholt.net> | 2008-06-18 14:07:38 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2008-06-18 14:07:38 -0700 |
commit | 654258a4fe5e7114022c6e02f2844fc469fcc6f3 (patch) | |
tree | 89d285becb87659ab61ee0ceeb35c76726ae93d2 /src/mesa/main/texenvprogram.c | |
parent | 64adeb163d7da6d75b5664cd2ee3783cadaf63d8 (diff) | |
parent | cf29ab3ba075905cca786b52617d7dc993f58033 (diff) |
Merge commit 'origin/master' into drm-gem
Diffstat (limited to 'src/mesa/main/texenvprogram.c')
-rw-r--r-- | src/mesa/main/texenvprogram.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/mesa/main/texenvprogram.c b/src/mesa/main/texenvprogram.c index af19a38c42..512d52704d 100644 --- a/src/mesa/main/texenvprogram.c +++ b/src/mesa/main/texenvprogram.c @@ -68,6 +68,7 @@ struct state_key { struct { GLuint enabled:1; GLuint source_index:3; /* one of TEXTURE_1D/2D/3D/CUBE/RECT_INDEX */ + GLuint shadow:1; GLuint ScaleShiftRGB:2; GLuint ScaleShiftA:2; @@ -219,6 +220,7 @@ static void make_state_key( GLcontext *ctx, struct state_key *key ) key->unit[i].source_index = translate_tex_src_bit(texUnit->_ReallyEnabled); + key->unit[i].shadow = texUnit->_Current->CompareMode == GL_COMPARE_R_TO_TEXTURE; key->unit[i].NumArgsRGB = texUnit->_CurrentCombine->_NumArgsRGB; key->unit[i].NumArgsA = texUnit->_CurrentCombine->_NumArgsA; @@ -945,11 +947,13 @@ static void load_texture( struct texenv_fragment_program *p, GLuint unit ) /* TODO: Use D0_MASK_XY where possible. */ - if (p->state->unit[unit].enabled) + if (p->state->unit[unit].enabled) { p->src_texture[unit] = emit_texld( p, OPCODE_TXP, tmp, WRITEMASK_XYZW, unit, dim, texcoord ); - else + if (p->state->unit[unit].shadow) + p->program->Base.ShadowSamplers |= 1 << unit; + } else p->src_texture[unit] = get_zero(p); } } |