mesa: fix clip plane enable breakage
authorMarek Olšák <marek.olsak@amd.com>
Sat, 24 Jun 2017 01:16:06 +0000 (03:16 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 27 Jun 2017 16:45:07 +0000 (18:45 +0200)
Broken by:

commit 00173d91b70ae4dcea7c6324ee4858c498cae14b
Author: Marek Olšák <marek.olsak@amd.com>
Date:   Sat Jun 10 12:09:43 2017 +0200

    mesa: don't flag _NEW_TRANSFORM for st/mesa if possible

It also optimizes the case slightly for GL core.

It doesn't try to fix that glEnable might be a bad place to do the
clip plane transformation.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Tested-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
src/mesa/main/enable.c

index e1293f9bf1e129e31045a411042ff187b66ac3b3..18a288d35c2027091e318caffb73fc0b8aed8dee 100644 (file)
@@ -361,8 +361,13 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
 
             if (state) {
                ctx->Transform.ClipPlanesEnabled |= (1 << p);
-               if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES)
+
+               /* The projection matrix transforms the clip plane. */
+               /* TODO: glEnable might not be the best place to do it. */
+               if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES) {
                   _mesa_update_clip_plane(ctx, p);
+                  ctx->NewDriverState |= ctx->DriverFlags.NewClipPlane;
+               }
             }
             else {
                ctx->Transform.ClipPlanesEnabled &= ~(1 << p);