mesa/formats: add more MESA_FORMAT_LAYOUTs
[mesa.git] / src / mesa / state_tracker / st_atom_clip.c
index 236d3cf409d814c8ce3b4404ad531322adaf0e75..506a770499f49cc2d8e3621c4549cb8cec00f8d5 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
  * 
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * Copyright 2007 VMware, Inc.
  * All Rights Reserved.
  * 
  * Permission is hereby granted, free of charge, to any person obtaining a
@@ -18,7 +18,7 @@
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -27,7 +27,7 @@
 
  /*
   * Authors:
-  *   Keith Whitwell <keith@tungstengraphics.com>
+  *   Keith Whitwell <keithw@vmware.com>
   */
  
 
@@ -35,6 +35,7 @@
 #include "pipe/p_context.h"
 #include "st_atom.h"
 #include "st_program.h"
+#include "util/u_debug.h"
 #include "cso_cache/cso_context.h"
 
 
@@ -44,32 +45,24 @@ static void update_clip( struct st_context *st )
 {
    struct pipe_clip_state clip;
    const struct gl_context *ctx = st->ctx;
-   GLuint i;
    bool use_eye = FALSE;
 
-   memset(&clip, 0, sizeof(clip));
+   STATIC_ASSERT(sizeof(clip.ucp) <= sizeof(ctx->Transform._ClipUserPlane));
 
    /* 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)
+      if (ctx->_Shader->CurrentProgram[MESA_SHADER_VERTEX])
          use_eye = TRUE;
    }
 
-   for (i = 0; i < PIPE_MAX_CLIP_PLANES; i++) {
-      if (ctx->Transform.ClipPlanesEnabled & (1 << i)) {
-         memcpy(clip.ucp[clip.nr],
-                use_eye ? ctx->Transform.EyeUserPlane[i] : ctx->Transform._ClipUserPlane[i],
-                sizeof(clip.ucp[0]));
-         clip.nr++;
-      }
-   }
+   memcpy(clip.ucp,
+          use_eye ? ctx->Transform.EyeUserPlane
+                  : ctx->Transform._ClipUserPlane, sizeof(clip.ucp));
 
-   clip.depth_clamp = ctx->Transform.DepthClamp != GL_FALSE;
-      
-   if (memcmp(&clip, &st->state.clip, sizeof(clip)) != 0) {
+   if (memcmp(&st->state.clip, &clip, sizeof(clip)) != 0) {
       st->state.clip = clip;
-      cso_set_clip(st->cso_context, &clip);
+      st->pipe->set_clip_state(st->pipe, &clip);
    }
 }
 
@@ -77,8 +70,8 @@ static void update_clip( struct st_context *st )
 const struct st_tracked_state st_update_clip = {
    "st_update_clip",                                   /* name */
    {                                                   /* dirty */
-      (_NEW_TRANSFORM | _NEW_PROGRAM),                 /* mesa */
-      0,                                               /* st */
+      _NEW_TRANSFORM,                                   /* mesa */
+      ST_NEW_VERTEX_PROGRAM,                           /* st */
    },
    update_clip                                         /* update */
 };