llvmpipe: Implement index bias.
authorJosé Fonseca <jfonseca@vmware.com>
Mon, 19 Apr 2010 16:15:11 +0000 (18:15 +0200)
committerJosé Fonseca <jfonseca@vmware.com>
Mon, 19 Apr 2010 16:15:11 +0000 (18:15 +0200)
src/gallium/drivers/llvmpipe/lp_draw_arrays.c
src/gallium/drivers/llvmpipe/lp_state.h

index 86525eea9e9960de7fd6fbd6afd67ee8ffcc6340..0b63e1c889e967d3f774a1f739f1c9a6302e08a3 100644 (file)
@@ -46,7 +46,7 @@ void
 llvmpipe_draw_arrays(struct pipe_context *pipe, unsigned mode,
                      unsigned start, unsigned count)
 {
-   llvmpipe_draw_elements(pipe, NULL, 0, mode, start, count);
+   llvmpipe_draw_elements(pipe, NULL, 0, 0, mode, start, count);
 }
 
 
@@ -59,6 +59,7 @@ void
 llvmpipe_draw_range_elements(struct pipe_context *pipe,
                              struct pipe_resource *indexBuffer,
                              unsigned indexSize,
+                             int indexBias,
                              unsigned min_index,
                              unsigned max_index,
                              unsigned mode, unsigned start, unsigned count)
@@ -81,14 +82,14 @@ llvmpipe_draw_range_elements(struct pipe_context *pipe,
    /* Map index buffer, if present */
    if (indexBuffer) {
       void *mapped_indexes = llvmpipe_resource_data(indexBuffer);
-      draw_set_mapped_element_buffer_range(draw, indexSize,
+      draw_set_mapped_element_buffer_range(draw, indexSize, indexBias,
                                            min_index,
                                            max_index,
                                            mapped_indexes);
    }
    else {
       /* no index/element buffer */
-      draw_set_mapped_element_buffer_range(draw, 0, start,
+      draw_set_mapped_element_buffer_range(draw, 0, 0, start,
                                            start + count - 1, NULL);
    }
 
@@ -102,7 +103,7 @@ llvmpipe_draw_range_elements(struct pipe_context *pipe,
       draw_set_mapped_vertex_buffer(draw, i, NULL);
    }
    if (indexBuffer) {
-      draw_set_mapped_element_buffer(draw, 0, NULL);
+      draw_set_mapped_element_buffer(draw, 0, 0, NULL);
    }
 
    /*
@@ -118,10 +119,11 @@ void
 llvmpipe_draw_elements(struct pipe_context *pipe,
                        struct pipe_resource *indexBuffer,
                        unsigned indexSize,
+                       int indexBias,
                        unsigned mode, unsigned start, unsigned count)
 {
    llvmpipe_draw_range_elements( pipe, indexBuffer,
-                                 indexSize,
+                                 indexSize, indexBias,
                                  0, 0xffffffff,
                                  mode, start, count );
 }
index d89c28a2af2223ee43baa84e644f74d57ef14528..dcbff190b62206657e2f4aa3353e0616970b70e4 100644 (file)
@@ -228,12 +228,12 @@ void llvmpipe_draw_arrays(struct pipe_context *pipe, unsigned mode,
 
 void llvmpipe_draw_elements(struct pipe_context *pipe,
                               struct pipe_resource *indexBuffer,
-                              unsigned indexSize,
+                              unsigned indexSize, int indexBias,
                               unsigned mode, unsigned start, unsigned count);
 void
 llvmpipe_draw_range_elements(struct pipe_context *pipe,
                              struct pipe_resource *indexBuffer,
-                             unsigned indexSize,
+                             unsigned indexSize, int indexBias,
                              unsigned min_index,
                              unsigned max_index,
                              unsigned mode, unsigned start, unsigned count);