mesa: don't update fixed-func programs on irrelevant _NEW_POINT changes
Reviewed-by: Zoltán Böszörményi <zboszor@gmail.com> Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8850>
This commit is contained in:
parent
9fa766adbe
commit
15580e85cc
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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 ||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue