Mesa (gallium-index-bias): r300g: Adapt for index bias interface change.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Mon Apr 19 16:22:37 UTC 2010


Module: Mesa
Branch: gallium-index-bias
Commit: dfadf5a579281c6dd4ecdd4ecd5568fbbb1de17e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=dfadf5a579281c6dd4ecdd4ecd5568fbbb1de17e

Author: José Fonseca <jfonseca at vmware.com>
Date:   Mon Apr 19 18:18:45 2010 +0200

r300g: Adapt for index bias interface change.

---

 src/gallium/drivers/r300/r300_context.h |    3 +-
 src/gallium/drivers/r300/r300_render.c  |   42 ++++++++++++++++++------------
 src/gallium/drivers/r300/r300_render.h  |    6 +++-
 3 files changed, 32 insertions(+), 19 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_context.h b/src/gallium/drivers/r300/r300_context.h
index 2e8601b..1e4fd9e 100644
--- a/src/gallium/drivers/r300/r300_context.h
+++ b/src/gallium/drivers/r300/r300_context.h
@@ -327,7 +327,8 @@ struct r300_context {
 
     void (*emit_draw_elements)(
             struct r300_context *r300, struct pipe_resource* indexBuffer,
-            unsigned indexSize, unsigned minIndex, unsigned maxIndex,
+            unsigned indexSize, int indexBias,
+            unsigned minIndex, unsigned maxIndex,
             unsigned mode, unsigned start, unsigned count);
 
 
diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c
index f6bc68c..007f01a 100644
--- a/src/gallium/drivers/r300/r300_render.c
+++ b/src/gallium/drivers/r300/r300_render.c
@@ -298,6 +298,7 @@ void r500_emit_draw_arrays(struct r300_context *r300,
 void r500_emit_draw_elements(struct r300_context *r300,
                              struct pipe_resource* indexBuffer,
                              unsigned indexSize,
+                             int indexBias,
                              unsigned minIndex,
                              unsigned maxIndex,
                              unsigned mode,
@@ -319,6 +320,8 @@ void r500_emit_draw_elements(struct r300_context *r300,
         return;
     }
 
+    assert(indexBias == 0);
+
     maxIndex = MIN2(maxIndex, r300->vertex_buffer_max_index);
 
     DBG(r300, DBG_DRAW, "r300: Indexbuf of %u indices, min %u max %u\n",
@@ -442,6 +445,7 @@ void r300_emit_draw_arrays(struct r300_context *r300,
 void r300_emit_draw_elements(struct r300_context *r300,
                              struct pipe_resource* indexBuffer,
                              unsigned indexSize,
+                             int indexBias,
                              unsigned minIndex,
                              unsigned maxIndex,
                              unsigned mode,
@@ -449,15 +453,15 @@ void r300_emit_draw_elements(struct r300_context *r300,
                              unsigned count)
 {
     if (!r300->stencil_ref_bf_fallback) {
-        r500_emit_draw_elements(r300, indexBuffer, indexSize, minIndex,
-                                maxIndex, mode, start, count);
+        r500_emit_draw_elements(r300, indexBuffer, indexSize, indexBias,
+                                minIndex, maxIndex, mode, start, count);
     } else {
         r300_begin_stencil_ref_fallback(r300);
-        r500_emit_draw_elements(r300, indexBuffer, indexSize, minIndex,
-                                maxIndex, mode, start, count);
+        r500_emit_draw_elements(r300, indexBuffer, indexSize, indexBias,
+                                minIndex, maxIndex, mode, start, count);
         r300_switch_stencil_ref_side(r300);
-        r500_emit_draw_elements(r300, indexBuffer, indexSize, minIndex,
-                                maxIndex, mode, start, count);
+        r500_emit_draw_elements(r300, indexBuffer, indexSize, indexBias,
+                                minIndex, maxIndex, mode, start, count);
         r300_end_stencil_ref_fallback(r300);
     }
 }
@@ -528,6 +532,7 @@ static void r300_align_ushort_elts(struct r300_context *r300,
 void r300_draw_range_elements(struct pipe_context* pipe,
                               struct pipe_resource* indexBuffer,
                               unsigned indexSize,
+                              int indexBias,
                               unsigned minIndex,
                               unsigned maxIndex,
                               unsigned mode,
@@ -574,13 +579,14 @@ void r300_draw_range_elements(struct pipe_context* pipe,
     u_upload_flush(r300->upload_vb);
     u_upload_flush(r300->upload_ib);
     if (alt_num_verts || count <= 65535) {
-        r300->emit_draw_elements(r300, indexBuffer, indexSize, minIndex,
-                                 maxIndex, mode, start, count);
+        r300->emit_draw_elements(r300, indexBuffer, indexSize, indexBias,
+                                 minIndex, maxIndex, mode, start, count);
     } else {
         do {
             short_count = MIN2(count, 65534);
-            r300->emit_draw_elements(r300, indexBuffer, indexSize, minIndex,
-                                      maxIndex, mode, start, short_count);
+            r300->emit_draw_elements(r300, indexBuffer, indexSize, indexBias,
+                                     minIndex, maxIndex,
+                                     mode, start, short_count);
 
             start += short_count;
             count -= short_count;
@@ -602,13 +608,13 @@ void r300_draw_range_elements(struct pipe_context* pipe,
 /* Simple helpers for context setup. Should probably be moved to util. */
 void r300_draw_elements(struct pipe_context* pipe,
                         struct pipe_resource* indexBuffer,
-                        unsigned indexSize, unsigned mode,
+                        unsigned indexSize, int indexBias, unsigned mode,
                         unsigned start, unsigned count)
 {
     struct r300_context *r300 = r300_context(pipe);
 
-    pipe->draw_range_elements(pipe, indexBuffer, indexSize, 0,
-                              r300->vertex_buffer_max_index,
+    pipe->draw_range_elements(pipe, indexBuffer, indexSize, indexBias,
+                              0, r300->vertex_buffer_max_index,
                               mode, start, count);
 }
 
@@ -698,7 +704,7 @@ void r300_swtcl_draw_arrays(struct pipe_context* pipe,
         draw_set_mapped_vertex_buffer(r300->draw, i, buf);
     }
 
-    draw_set_mapped_element_buffer(r300->draw, 0, NULL);
+    draw_set_mapped_element_buffer(r300->draw, 0, 0, NULL);
 
     draw_arrays(r300->draw, mode, start, count);
 
@@ -713,6 +719,7 @@ void r300_swtcl_draw_arrays(struct pipe_context* pipe,
 void r300_swtcl_draw_range_elements(struct pipe_context* pipe,
                                        struct pipe_resource* indexBuffer,
                                        unsigned indexSize,
+                                       int indexBias,
                                        unsigned minIndex,
                                        unsigned maxIndex,
                                        unsigned mode,
@@ -743,7 +750,7 @@ void r300_swtcl_draw_range_elements(struct pipe_context* pipe,
 
     indices = pipe_buffer_map(pipe, indexBuffer,
                               PIPE_TRANSFER_READ, &ib_transfer);
-    draw_set_mapped_element_buffer_range(r300->draw, indexSize,
+    draw_set_mapped_element_buffer_range(r300->draw, indexSize, indexBias,
                                          minIndex, maxIndex, indices);
 
     draw_arrays(r300->draw, mode, start, count);
@@ -756,8 +763,9 @@ void r300_swtcl_draw_range_elements(struct pipe_context* pipe,
 
     pipe_buffer_unmap(pipe, indexBuffer,
 		      ib_transfer);
-    draw_set_mapped_element_buffer_range(r300->draw, 0, start,
-                                         start + count - 1, NULL);
+    draw_set_mapped_element_buffer_range(r300->draw, 0, 0,
+                                         start, start + count - 1,
+                                         NULL);
 }
 
 /* Object for rendering using Draw. */
diff --git a/src/gallium/drivers/r300/r300_render.h b/src/gallium/drivers/r300/r300_render.h
index 85da613..4e78914 100644
--- a/src/gallium/drivers/r300/r300_render.h
+++ b/src/gallium/drivers/r300/r300_render.h
@@ -35,6 +35,7 @@ void r500_emit_draw_arrays(struct r300_context *r300,
 void r500_emit_draw_elements(struct r300_context *r300,
                              struct pipe_resource* indexBuffer,
                              unsigned indexSize,
+                             int indexBias,
                              unsigned minIndex,
                              unsigned maxIndex,
                              unsigned mode,
@@ -53,6 +54,7 @@ void r300_emit_draw_arrays(struct r300_context *r300,
 void r300_emit_draw_elements(struct r300_context *r300,
                              struct pipe_resource* indexBuffer,
                              unsigned indexSize,
+                             int indexBias,
                              unsigned minIndex,
                              unsigned maxIndex,
                              unsigned mode,
@@ -62,6 +64,7 @@ void r300_emit_draw_elements(struct r300_context *r300,
 void r300_draw_range_elements(struct pipe_context* pipe,
                               struct pipe_resource* indexBuffer,
                               unsigned indexSize,
+                              int indexBias,
                               unsigned minIndex,
                               unsigned maxIndex,
                               unsigned mode,
@@ -70,7 +73,7 @@ void r300_draw_range_elements(struct pipe_context* pipe,
 
 void r300_draw_elements(struct pipe_context* pipe,
                         struct pipe_resource* indexBuffer,
-                        unsigned indexSize, unsigned mode,
+                        unsigned indexSize, int indexBias, unsigned mode,
                         unsigned start, unsigned count);
 
 void r300_draw_arrays(struct pipe_context* pipe, unsigned mode,
@@ -84,6 +87,7 @@ void r300_swtcl_draw_arrays(struct pipe_context* pipe,
 void r300_swtcl_draw_range_elements(struct pipe_context* pipe,
                                     struct pipe_resource* indexBuffer,
                                     unsigned indexSize,
+                                    int indexBias,
                                     unsigned minIndex,
                                     unsigned maxIndex,
                                     unsigned mode,




More information about the mesa-commit mailing list