Merge branch 'mesa_7_6_branch'
[mesa.git] / src / gallium / auxiliary / draw / draw_context.c
index 41a4cba1ddde4a8af635b3d3191233f0980ba151..a4f1fcddc1a0cd6f9de25be4bd0c21c791f5da4e 100644 (file)
@@ -103,6 +103,18 @@ void draw_flush( struct draw_context *draw )
 }
 
 
+/**
+ * Specify the Minimum Resolvable Depth factor for polygon offset.
+ * This factor potentially depends on the number of Z buffer bits,
+ * the rasterization algorithm and the arithmetic performed on Z
+ * values between vertex shading and rasterization.  It will vary
+ * from one driver to another.
+ */
+void draw_set_mrd(struct draw_context *draw, double mrd)
+{
+   draw->mrd = mrd;
+}
+
 
 /**
  * Register new primitive rasterization/rendering state.
@@ -115,7 +127,7 @@ void draw_set_rasterizer_state( struct draw_context *draw,
 
    draw->rasterizer = raster;
    draw->bypass_clipping =
-      ((draw->rasterizer && draw->rasterizer->bypass_clipping) ||
+      ((draw->rasterizer && draw->rasterizer->bypass_vs_clip_and_viewport) ||
        draw->driver.bypass_clipping);
 }
 
@@ -126,8 +138,9 @@ void draw_set_driver_clipping( struct draw_context *draw,
    draw_do_flush( draw, DRAW_FLUSH_STATE_CHANGE );
 
    draw->driver.bypass_clipping = bypass_clipping;
-   draw->bypass_clipping = (draw->rasterizer->bypass_clipping || 
-                            draw->driver.bypass_clipping);
+   draw->bypass_clipping =
+      ((draw->rasterizer && draw->rasterizer->bypass_vs_clip_and_viewport) ||
+       draw->driver.bypass_clipping);
 }
 
 
@@ -331,6 +344,21 @@ draw_num_vs_outputs(const struct draw_context *draw)
 }
 
 
+/**
+ * Provide TGSI sampler objects for vertex shaders that use texture fetches.
+ * This might only be used by software drivers for the time being.
+ */
+void
+draw_texture_samplers(struct draw_context *draw,
+                      uint num_samplers,
+                      struct tgsi_sampler **samplers)
+{
+   draw->vs.num_samplers = num_samplers;
+   draw->vs.samplers = samplers;
+}
+
+
+
 
 void draw_set_render( struct draw_context *draw, 
                      struct vbuf_render *render )
@@ -362,7 +390,7 @@ draw_set_mapped_element_buffer_range( struct draw_context *draw,
                                       unsigned eltSize,
                                       unsigned min_index,
                                       unsigned max_index,
-                                      void *elements )
+                                      const void *elements )
 {
    draw->pt.user.elts = elements;
    draw->pt.user.eltSize = eltSize;
@@ -374,7 +402,7 @@ draw_set_mapped_element_buffer_range( struct draw_context *draw,
 void
 draw_set_mapped_element_buffer( struct draw_context *draw,
                                 unsigned eltSize,
-                                void *elements )
+                                const void *elements )
 {
    draw->pt.user.elts = elements;
    draw->pt.user.eltSize = eltSize;