summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/texenvprogram.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/main/texenvprogram.c')
-rw-r--r--src/mesa/main/texenvprogram.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/mesa/main/texenvprogram.c b/src/mesa/main/texenvprogram.c
index 050a3a99fed..454d97506ed 100644
--- a/src/mesa/main/texenvprogram.c
+++ b/src/mesa/main/texenvprogram.c
@@ -936,7 +936,7 @@ static struct ureg emit_combine_source( struct texenv_fragment_program *p,
}
}
-static GLboolean args_match( struct state_key *key, GLuint unit )
+static GLboolean args_match( const struct state_key *key, GLuint unit )
{
GLuint i, nr = key->unit[unit].NumArgsRGB;
@@ -1096,11 +1096,10 @@ static struct ureg emit_combine( struct texenv_fragment_program *p,
static struct ureg
emit_texenv(struct texenv_fragment_program *p, GLuint unit)
{
- struct state_key *key = p->state;
+ const struct state_key *key = p->state;
GLboolean saturate;
GLuint rgb_shift, alpha_shift;
- struct ureg out, shift;
- struct ureg dest;
+ struct ureg out, dest;
if (!key->unit[unit].enabled) {
return get_source(p, SRC_PREVIOUS, 0);
@@ -1152,7 +1151,6 @@ emit_texenv(struct texenv_fragment_program *p, GLuint unit)
}
else if (key->unit[unit].ModeRGB == MODE_DOT3_RGBA_EXT ||
key->unit[unit].ModeRGB == MODE_DOT3_RGBA) {
-
out = emit_combine( p, dest, WRITEMASK_XYZW, saturate,
unit,
key->unit[unit].NumArgsRGB,
@@ -1178,7 +1176,10 @@ emit_texenv(struct texenv_fragment_program *p, GLuint unit)
/* Deal with the final shift:
*/
if (alpha_shift || rgb_shift) {
+ struct ureg shift;
+
saturate = GL_TRUE; /* always saturate at this point */
+
if (rgb_shift == alpha_shift) {
shift = register_scalar_const(p, (GLfloat)(1<<rgb_shift));
}
@@ -1278,7 +1279,7 @@ static GLboolean load_texenv_source( struct texenv_fragment_program *p,
static GLboolean
load_texunit_sources( struct texenv_fragment_program *p, int unit )
{
- struct state_key *key = p->state;
+ const struct state_key *key = p->state;
GLuint i;
for (i = 0; i < key->unit[unit].NumArgsRGB; i++) {
@@ -1298,7 +1299,7 @@ load_texunit_sources( struct texenv_fragment_program *p, int unit )
static GLboolean
load_texunit_bumpmap( struct texenv_fragment_program *p, int unit )
{
- struct state_key *key = p->state;
+ const struct state_key *key = p->state;
GLuint bumpedUnitNr = key->unit[unit].OptRGB[1].Source - SRC_TEXTURE0;
struct ureg texcDst, bumpMapRes;
struct ureg constdudvcolor = register_const4f(p, 0.0, 0.0, 0.0, 1.0);