From: Xiang, Haihao Date: Thu, 20 Nov 2008 08:54:16 +0000 (+0800) Subject: mesa: fix shadow sampling unit issue. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b6bb5e09e0ad1f61f96c65bbc870bd493df12f1a;p=mesa.git mesa: fix shadow sampling unit issue. texture comparison logic is bypassed if the currently bound texture is not a depth/depth_stencil texture. --- diff --git a/src/mesa/main/texenvprogram.c b/src/mesa/main/texenvprogram.c index dcd7f905679..ba7ce4a3cc6 100644 --- a/src/mesa/main/texenvprogram.c +++ b/src/mesa/main/texenvprogram.c @@ -213,16 +213,21 @@ static void make_state_key( GLcontext *ctx, struct state_key *key ) for (i=0;iTexture.Unit[i]; + GLenum format; if (!texUnit->_ReallyEnabled || !texUnit->Enabled) continue; + format = texUnit->_Current->Image[0][texUnit->_Current->BaseLevel]->_BaseFormat; + key->unit[i].enabled = 1; key->enabled_units |= (1<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].shadow = ((texUnit->_Current->CompareMode == GL_COMPARE_R_TO_TEXTURE) && + ((format == GL_DEPTH_COMPONENT) || + (format == GL_DEPTH_STENCIL_EXT))); key->unit[i].NumArgsRGB = texUnit->_CurrentCombine->_NumArgsRGB; key->unit[i].NumArgsA = texUnit->_CurrentCombine->_NumArgsA;