diff --git a/src/gallium/drivers/nouveau/nv30/nv30_vbo.c b/src/gallium/drivers/nouveau/nv30/nv30_vbo.c index 8ab5b8dd80e..67479e689ac 100644 --- a/src/gallium/drivers/nouveau/nv30/nv30_vbo.c +++ b/src/gallium/drivers/nouveau/nv30/nv30_vbo.c @@ -24,6 +24,7 @@ */ #include "util/format/u_format.h" +#include "util/u_draw.h" #include "util/u_inlines.h" #include "util/u_prim.h" #include "translate/translate.h" @@ -550,13 +551,7 @@ nv30_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info, unsigned num_draws) { if (num_draws > 1) { - struct pipe_draw_info tmp_info = *info; - - for (unsigned i = 0; i < num_draws; i++) { - nv30_draw_vbo(pipe, &tmp_info, indirect, &draws[i], 1); - if (tmp_info.increment_draw_id) - tmp_info.drawid++; - } + util_draw_multi(pipe, info, indirect, draws, num_draws); return; } diff --git a/src/gallium/drivers/nouveau/nv50/nv50_vbo.c b/src/gallium/drivers/nouveau/nv50/nv50_vbo.c index 16ce34b0224..e531b3f03af 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_vbo.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_vbo.c @@ -22,6 +22,7 @@ #include "pipe/p_context.h" #include "pipe/p_state.h" +#include "util/u_draw.h" #include "util/u_inlines.h" #include "util/u_prim.h" #include "util/format/u_format.h" @@ -762,13 +763,7 @@ nv50_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info, unsigned num_draws) { if (num_draws > 1) { - struct pipe_draw_info tmp_info = *info; - - for (unsigned i = 0; i < num_draws; i++) { - nv50_draw_vbo(pipe, &tmp_info, indirect, &draws[i], 1); - if (tmp_info.increment_draw_id) - tmp_info.drawid++; - } + util_draw_multi(pipe, info, indirect, draws, num_draws); return; } diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c b/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c index 7d331304ff2..d0d109bf6d1 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c @@ -24,6 +24,7 @@ #include "pipe/p_context.h" #include "pipe/p_state.h" +#include "util/u_draw.h" #include "util/u_inlines.h" #include "util/format/u_format.h" #include "translate/translate.h" @@ -928,13 +929,7 @@ nvc0_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info, unsigned num_draws) { if (num_draws > 1) { - struct pipe_draw_info tmp_info = *info; - - for (unsigned i = 0; i < num_draws; i++) { - nvc0_draw_vbo(pipe, &tmp_info, indirect, &draws[i], 1); - if (tmp_info.increment_draw_id) - tmp_info.drawid++; - } + util_draw_multi(pipe, info, indirect, draws, num_draws); return; }