mesa: fix fallthrough in glformats
[mesa.git] / src / mesa / state_tracker / st_atom_clip.c
index 700899934d8826176d2ca852762a848331cbecbb..0db3a5d543199af798c703825d652778e3365576 100644 (file)
@@ -41,7 +41,7 @@
 
 /* Second state atom for user clip planes:
  */
-static void update_clip( struct st_context *st )
+void st_update_clip( struct st_context *st )
 {
    struct pipe_clip_state clip;
    const struct gl_context *ctx = st->ctx;
@@ -51,24 +51,18 @@ static void update_clip( struct st_context *st )
 
    /* if we have a vertex shader that writes clip vertex we need to pass
       the pre-projection transformed coordinates into the driver. */
-   if (st->vp) {
-      if (ctx->Shader.CurrentVertexProgram)
-         use_eye = TRUE;
-   }
+   if (ctx->_Shader->CurrentProgram[MESA_SHADER_VERTEX])
+      use_eye = TRUE;
 
+   /* _ClipUserPlane = _NEW_TRANSFORM | _NEW_PROJECTION
+    * EyeUserPlane = _NEW_TRANSFORM
+    */
    memcpy(clip.ucp,
           use_eye ? ctx->Transform.EyeUserPlane
                   : ctx->Transform._ClipUserPlane, sizeof(clip.ucp));
-   st->state.clip = clip;
-   cso_set_clip(st->cso_context, &clip);
-}
-
 
-const struct st_tracked_state st_update_clip = {
-   "st_update_clip",                                   /* name */
-   {                                                   /* dirty */
-      _NEW_TRANSFORM,                                   /* mesa */
-      ST_NEW_VERTEX_PROGRAM,                           /* st */
-   },
-   update_clip                                         /* update */
-};
+   if (memcmp(&st->state.clip, &clip, sizeof(clip)) != 0) {
+      st->state.clip = clip;
+      st->pipe->set_clip_state(st->pipe, &clip);
+   }
+}