}
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) {
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;
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 ||
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
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);