mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-17 12:50:31 +01:00
texenvprogram: Mark textures using ARB_shadow as ShadowSamplers
Since ARB_fragment_program and friends are defined to ignore the setting of the GL_TEXTURE_COMPARE_FUNC parameter, we have to explicitly enable the shadow comparison by marking the texture unit in ShadowSamplers when appropriate.
This commit is contained in:
parent
2882e51625
commit
83ad2a756e
1 changed files with 6 additions and 2 deletions
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue