u_vbuf_mgr: add set_index_buffer function
authorMarek Olšák <maraeo@gmail.com>
Sun, 20 Nov 2011 02:36:49 +0000 (03:36 +0100)
committerMarek Olšák <maraeo@gmail.com>
Sun, 20 Nov 2011 15:24:11 +0000 (16:24 +0100)
It will use the index buffer soon.

src/gallium/auxiliary/util/u_vbuf_mgr.c
src/gallium/auxiliary/util/u_vbuf_mgr.h

index 5d3f137ecb36bef8886c91ccedb8d0151eb36a17..15cdfaead2a7dd3c3f831d7dc131de7915c69bac 100644 (file)
@@ -520,6 +520,19 @@ void u_vbuf_set_vertex_buffers(struct u_vbuf_mgr *mgrb,
    mgr->b.nr_real_vertex_buffers = count;
 }
 
+void u_vbuf_set_index_buffer(struct u_vbuf_mgr *mgr,
+                             const struct pipe_index_buffer *ib)
+{
+   if (ib && ib->buffer) {
+      assert(ib->offset % ib->index_size == 0);
+      pipe_resource_reference(&mgr->index_buffer.buffer, ib->buffer);
+      mgr->index_buffer.offset = ib->offset;
+      mgr->index_buffer.index_size = ib->index_size;
+   } else {
+      pipe_resource_reference(&mgr->index_buffer.buffer, NULL);
+   }
+}
+
 static void
 u_vbuf_upload_buffers(struct u_vbuf_priv *mgr,
                       int min_index, int max_index,
index d854e4449b3a96aee621aef74151b02affca9103..8d39db34677c97146ec1c2ba9366ae145aa4cff4 100644 (file)
@@ -69,6 +69,8 @@ struct u_vbuf_mgr {
 
    /* Precomputed max_index for hardware vertex buffers. */
    unsigned max_index;
+   /* The index buffer. */
+   struct pipe_index_buffer index_buffer;
 
    /* This uploader can optionally be used by the driver.
     *
@@ -126,6 +128,9 @@ void u_vbuf_set_vertex_buffers(struct u_vbuf_mgr *mgr,
                                unsigned count,
                                const struct pipe_vertex_buffer *bufs);
 
+void u_vbuf_set_index_buffer(struct u_vbuf_mgr *mgr,
+                             const struct pipe_index_buffer *ib);
+
 enum u_vbuf_return_flags u_vbuf_draw_begin(struct u_vbuf_mgr *mgr,
                                            const struct pipe_draw_info *info);