i965: Allocate dummy slots for point sprites before computing VUE map.
[mesa.git] / src / mesa / drivers / dri / i965 / gen7_clip_state.c
index c23ba8cab5ca2ca91066d47cfbd16807da735809..3bc6de05393c97b5ac07c1cb8e65e742d07618df 100644 (file)
@@ -26,6 +26,7 @@
 #include "brw_defines.h"
 #include "brw_util.h"
 #include "intel_batchbuffer.h"
+#include "main/fbobject.h"
 
 static void
 upload_clip_state(struct brw_context *brw)
@@ -35,9 +36,17 @@ upload_clip_state(struct brw_context *brw)
    uint32_t depth_clamp = 0;
    uint32_t provoking, userclip;
    uint32_t dw1 = GEN6_CLIP_STATISTICS_ENABLE;
+   uint32_t nonperspective_barycentric_enable_flag = 0;
 
    /* _NEW_BUFFERS */
-   GLboolean render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0;
+   bool render_to_fbo = _mesa_is_user_fbo(brw->intel.ctx.DrawBuffer);
+
+   /* CACHE_NEW_WM_PROG */
+   if (brw->wm.prog_data->barycentric_interp_modes &
+       BRW_WM_NONPERSPECTIVE_BARYCENTRIC_BITS) {
+      nonperspective_barycentric_enable_flag =
+         GEN6_CLIP_NON_PERSPECTIVE_BARYCENTRIC_ENABLE;
+   }
 
    dw1 |= GEN7_CLIP_EARLY_CULL;
 
@@ -82,7 +91,7 @@ upload_clip_state(struct brw_context *brw)
    }
 
    /* _NEW_TRANSFORM */
-   userclip = (1 << brw_count_bits(ctx->Transform.ClipPlanesEnabled)) - 1;
+   userclip = ctx->Transform.ClipPlanesEnabled;
 
    BEGIN_BATCH(4);
    OUT_BATCH(_3DSTATE_CLIP << 16 | (4 - 2));
@@ -90,7 +99,9 @@ upload_clip_state(struct brw_context *brw)
    OUT_BATCH(GEN6_CLIP_ENABLE |
             GEN6_CLIP_API_OGL |
             GEN6_CLIP_MODE_NORMAL |
+             nonperspective_barycentric_enable_flag |
             GEN6_CLIP_XY_TEST |
+            GEN6_CLIP_GB_TEST |
             userclip << GEN6_USER_CLIP_CLIP_DISTANCES_SHIFT |
             depth_clamp |
             provoking);
@@ -107,7 +118,7 @@ const struct brw_tracked_state gen7_clip_state = {
                 _NEW_LIGHT |
                 _NEW_TRANSFORM),
       .brw   = BRW_NEW_CONTEXT,
-      .cache = 0
+      .cache = CACHE_NEW_WM_PROG
    },
    .emit = upload_clip_state,
 };