diff --git a/src/mesa/main/attrib.c b/src/mesa/main/attrib.c index 206395616be..2661af360ca 100644 --- a/src/mesa/main/attrib.c +++ b/src/mesa/main/attrib.c @@ -1049,7 +1049,7 @@ _mesa_PopAttrib(void) } if (ctx->Extensions.ARB_point_sprite) { if (ctx->Point.CoordReplace != attr->Point.CoordReplace) { - ctx->NewState |= _NEW_POINT; + ctx->NewState |= _NEW_POINT | _NEW_FF_VERT_PROGRAM; ctx->Point.CoordReplace = attr->Point.CoordReplace; if (ctx->Driver.TexEnv) { diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c index 7806b21471e..ae1744b428e 100644 --- a/src/mesa/main/enable.c +++ b/src/mesa/main/enable.c @@ -1089,7 +1089,8 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state) goto invalid_enum_error; if (ctx->Point.PointSprite == state) return; - FLUSH_VERTICES(ctx, _NEW_POINT, GL_POINT_BIT | GL_ENABLE_BIT); + FLUSH_VERTICES(ctx, _NEW_POINT | _NEW_FF_VERT_PROGRAM | + _NEW_FF_FRAG_PROGRAM, GL_POINT_BIT | GL_ENABLE_BIT); ctx->Point.PointSprite = state; break; diff --git a/src/mesa/main/points.c b/src/mesa/main/points.c index 124f3ca07ec..1b0be65fa9b 100644 --- a/src/mesa/main/points.c +++ b/src/mesa/main/points.c @@ -130,7 +130,7 @@ _mesa_PointParameterfv( GLenum pname, const GLfloat *params) case GL_DISTANCE_ATTENUATION_EXT: if (TEST_EQ_3V(ctx->Point.Params, params)) return; - FLUSH_VERTICES(ctx, _NEW_POINT, GL_POINT_BIT); + FLUSH_VERTICES(ctx, _NEW_POINT | _NEW_FF_VERT_PROGRAM, GL_POINT_BIT); COPY_3V(ctx->Point.Params, params); ctx->Point._Attenuated = (ctx->Point.Params[0] != 1.0F || ctx->Point.Params[1] != 0.0F || diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index 0967366b057..82308054ec6 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -488,12 +488,12 @@ _mesa_update_state_locked( struct gl_context *ctx ) if (ctx->FragmentProgram._UsesTexEnvProgram) { prog_flags |= _NEW_BUFFERS | _NEW_TEXTURE_OBJECT | _NEW_FOG | - _NEW_FF_FRAG_PROGRAM | _NEW_POINT | _NEW_RENDERMODE | + _NEW_FF_FRAG_PROGRAM | _NEW_RENDERMODE | _NEW_COLOR | _NEW_TEXTURE_STATE; } if (ctx->VertexProgram._UsesTnlProgram) - prog_flags |= _NEW_FF_VERT_PROGRAM | _NEW_POINT | _NEW_FOG; + prog_flags |= _NEW_FF_VERT_PROGRAM | _NEW_FOG; if (new_state & prog_flags) { /* When we generate programs from fixed-function vertex/fragment state diff --git a/src/mesa/main/texenv.c b/src/mesa/main/texenv.c index 24e47b099e4..9f7125d51b6 100644 --- a/src/mesa/main/texenv.c +++ b/src/mesa/main/texenv.c @@ -490,12 +490,14 @@ _mesa_texenvfv_indexed( struct gl_context* ctx, GLuint texunit, GLenum target, if (iparam0 == GL_TRUE) { if (ctx->Point.CoordReplace & (1u << texunit)) return; - FLUSH_VERTICES(ctx, _NEW_POINT, GL_POINT_BIT); + FLUSH_VERTICES(ctx, _NEW_POINT | _NEW_FF_VERT_PROGRAM, + GL_POINT_BIT); ctx->Point.CoordReplace |= (1u << texunit); } else if (iparam0 == GL_FALSE) { if (~(ctx->Point.CoordReplace) & (1u << texunit)) return; - FLUSH_VERTICES(ctx, _NEW_POINT, GL_POINT_BIT); + FLUSH_VERTICES(ctx, _NEW_POINT | _NEW_FF_VERT_PROGRAM, + GL_POINT_BIT); ctx->Point.CoordReplace &= ~(1u << texunit); } else { _mesa_error( ctx, GL_INVALID_VALUE, "glTexEnv(param=0x%x)", iparam0);