cso: add set_index_buffer and draw_vbo passthrough functions
authorMarek Olšák <maraeo@gmail.com>
Wed, 11 Apr 2012 13:51:13 +0000 (15:51 +0200)
committerMarek Olšák <maraeo@gmail.com>
Mon, 23 Apr 2012 23:39:21 +0000 (01:39 +0200)
v2: use util_draw_init_info

Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/auxiliary/cso_cache/cso_context.c
src/gallium/auxiliary/cso_cache/cso_context.h

index 43b834314dc8547fdfe51120ab55e6aa396db226..9ec7a2a9676108fbf0c9254b059d3966761da4e9 100644 (file)
@@ -36,6 +36,7 @@
   */
 
 #include "pipe/p_state.h"
+#include "util/u_draw.h"
 #include "util/u_framebuffer.h"
 #include "util/u_inlines.h"
 #include "util/u_math.h"
@@ -1290,3 +1291,37 @@ cso_restore_stream_outputs(struct cso_context *ctx)
    ctx->nr_so_targets = ctx->nr_so_targets_saved;
    ctx->nr_so_targets_saved = 0;
 }
+
+/* drawing */
+
+void
+cso_set_index_buffer(struct cso_context *cso,
+                     const struct pipe_index_buffer *ib)
+{
+   struct pipe_context *pipe = cso->pipe;
+   pipe->set_index_buffer(pipe, ib);
+}
+
+void
+cso_draw_vbo(struct cso_context *cso,
+             const struct pipe_draw_info *info)
+{
+   struct pipe_context *pipe = cso->pipe;
+   pipe->draw_vbo(pipe, info);
+}
+
+void
+cso_draw_arrays(struct cso_context *cso, uint mode, uint start, uint count)
+{
+   struct pipe_draw_info info;
+
+   util_draw_init_info(&info);
+
+   info.mode = mode;
+   info.start = start;
+   info.count = count;
+   info.min_index = start;
+   info.max_index = start + count - 1;
+
+   cso_draw_vbo(cso, &info);
+}
index 8cc1bbf9de708e30c423e5beef5988e2783eeb99..d0f8bc29550dae55ec800ce36b6369cb0d95a103 100644 (file)
@@ -217,6 +217,19 @@ cso_save_vertex_sampler_views(struct cso_context *cso);
 void
 cso_restore_vertex_sampler_views(struct cso_context *cso);
 
+/* drawing */
+
+void
+cso_set_index_buffer(struct cso_context *cso,
+                     const struct pipe_index_buffer *ib);
+
+void
+cso_draw_vbo(struct cso_context *cso,
+             const struct pipe_draw_info *info);
+
+/* helper drawing function */
+void
+cso_draw_arrays(struct cso_context *cso, uint mode, uint start, uint count);
 
 #ifdef __cplusplus
 }