draw: check for an integer overflow when computing stride
[mesa.git] / src / gallium / auxiliary / draw / draw_pt.h
index 5fbb424291572c2c522f95323e7984132c2851c5..29e5499f383eec0eeb1184c6efb759394b8b44ec 100644 (file)
@@ -73,7 +73,7 @@ struct draw_pt_front_end {
                 unsigned start,
                 unsigned count );
 
-   void (*finish)( struct draw_pt_front_end * );
+   void (*flush)( struct draw_pt_front_end *, unsigned flags );
    void (*destroy)( struct draw_pt_front_end * );
 };
 
@@ -93,6 +93,13 @@ struct draw_pt_middle_end {
                    unsigned opt,
                     unsigned *max_vertices );
 
+   /**
+    * Bind/update parameter state such as constants, viewport dims
+    * and clip planes.  Basically, stuff which isn't "baked" into the
+    * shader or pipeline state.
+    */
+   void (*bind_parameters)(struct draw_pt_middle_end *);
+
    void (*run)( struct draw_pt_middle_end *,
                 const unsigned *fetch_elts,
                 unsigned fetch_count,
@@ -178,7 +185,7 @@ struct pt_emit *draw_pt_emit_create( struct draw_context *draw );
  */
 struct pt_so_emit;
 
-void draw_pt_so_emit_prepare( struct pt_so_emit *emit );
+void draw_pt_so_emit_prepare(struct pt_so_emit *emit, boolean use_pre_clip_pos);
 
 void draw_pt_so_emit( struct pt_so_emit *emit,
                       const struct draw_vertex_info *vert_info,
@@ -218,14 +225,16 @@ struct pt_fetch *draw_pt_fetch_create( struct draw_context *draw );
 struct pt_post_vs;
 
 boolean draw_pt_post_vs_run( struct pt_post_vs *pvs,
-                            struct draw_vertex_info *info );
+                            struct draw_vertex_info *info,
+                             const struct draw_prim_info *prim_info );
 
 void draw_pt_post_vs_prepare( struct pt_post_vs *pvs,
                              boolean clip_xy,
                              boolean clip_z,
                              boolean clip_user,
+                              boolean guard_band,
                              boolean bypass_viewport,
-                             boolean opengl,
+                              boolean clip_halfz,
                              boolean need_edgeflags );
 
 struct pt_post_vs *draw_pt_post_vs_create( struct draw_context *draw );