u_vbuf_mgr: add a way to specify the BIND flag for the upload buffer
[mesa.git] / src / gallium / drivers / softpipe / sp_prim_vbuf.c
index db0d1755103620ff679b0205e61752715f7bfd61..c60249dbfbcde20ef3d81e450144ce1067664794 100644 (file)
@@ -542,6 +542,22 @@ sp_vbuf_draw_arrays(struct vbuf_render *vbr, uint start, uint nr)
    }
 }
 
+static void
+sp_vbuf_so_info(struct vbuf_render *vbr, uint primitives, uint vertices)
+{
+   struct softpipe_vbuf_render *cvbr = softpipe_vbuf_render(vbr);
+   struct softpipe_context *softpipe = cvbr->softpipe;
+   unsigned i;
+
+   for (i = 0; i < softpipe->so_target.num_buffers; ++i) {
+      softpipe->so_target.so_count[i] += vertices;
+   }
+
+   softpipe->so_stats.num_primitives_written = primitives;
+   softpipe->so_stats.primitives_storage_needed =
+      vertices * 4 /*sizeof(float|int32)*/ * 4 /*x,y,z,w*/;
+}
+
 
 static void
 sp_vbuf_destroy(struct vbuf_render *vbr)
@@ -575,6 +591,7 @@ sp_create_vbuf_backend(struct softpipe_context *sp)
    cvbr->base.draw_elements = sp_vbuf_draw_elements;
    cvbr->base.draw_arrays = sp_vbuf_draw_arrays;
    cvbr->base.release_vertices = sp_vbuf_release_vertices;
+   cvbr->base.set_stream_output_info = sp_vbuf_so_info;
    cvbr->base.destroy = sp_vbuf_destroy;
 
    cvbr->softpipe = sp;