Mesa (master): st/mesa: call pipe_context::draw_arrays/elements_instanced()

Brian Paul brianp at kemper.freedesktop.org
Mon Apr 5 01:08:32 UTC 2010


Module: Mesa
Branch: master
Commit: 528d100b80f0aaa5f4480c3e42004158763612e9
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=528d100b80f0aaa5f4480c3e42004158763612e9

Author: Brian Paul <brianp at vmware.com>
Date:   Sun Apr  4 18:22:46 2010 -0600

st/mesa: call pipe_context::draw_arrays/elements_instanced()

---

 src/mesa/state_tracker/st_draw.c |   23 +++++++++++++++++++----
 1 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c
index 7f45e3f..e0bb1a0 100644
--- a/src/mesa/state_tracker/st_draw.c
+++ b/src/mesa/state_tracker/st_draw.c
@@ -669,9 +669,17 @@ st_draw_vbo(GLcontext *ctx,
          for (i = 0; i < nr_prims; i++) {
             prim = translate_prim( ctx, prims[i].mode );
             
-            pipe->draw_elements(pipe, indexBuf, indexSize,
-                                prim,
-                                prims[i].start + indexOffset, prims[i].count);
+            if (prims[i].num_instances == 1) {
+               pipe->draw_elements(pipe, indexBuf, indexSize, prim,
+                                   prims[i].start + indexOffset,
+                                   prims[i].count);
+            }
+            else {
+               pipe->draw_elements_instanced(pipe, indexBuf, indexSize, prim,
+                                             prims[i].start + indexOffset,
+                                             prims[i].count,
+                                             0, prims[i].num_instances);
+            }
          }
       }
 
@@ -685,7 +693,14 @@ st_draw_vbo(GLcontext *ctx,
       for (i = 0; i < nr_prims; i++) {
          prim = translate_prim( ctx, prims[i].mode );
 
-         pipe->draw_arrays(pipe, prim, prims[i].start, prims[i].count);
+         if (prims[i].num_instances == 1) {
+            pipe->draw_arrays(pipe, prim, prims[i].start, prims[i].count);
+         }
+         else {
+            pipe->draw_arrays_instanced(pipe, prim, prims[i].start,
+                                        prims[i].count,
+                                        0, prims[i].num_instances);
+         }
       }
    }
 




More information about the mesa-commit mailing list