Mesa (draw-vbuf-interface): r300-gallium: Moar vbufs.

Corbin Simpson csimpson at kemper.freedesktop.org
Wed Mar 4 23:53:56 UTC 2009


Module: Mesa
Branch: draw-vbuf-interface
Commit: a7db387950c2f32618443529d89ec89be084a136
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a7db387950c2f32618443529d89ec89be084a136

Author: Corbin Simpson <MostAwesomeDude at gmail.com>
Date:   Wed Feb 18 01:57:59 2009 -0800

r300-gallium: Moar vbufs.

---

 src/gallium/drivers/r300/r300_swtcl_emit.c |   22 ++++++++++++++++++----
 1 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_swtcl_emit.c b/src/gallium/drivers/r300/r300_swtcl_emit.c
index fb00924..9799eef 100644
--- a/src/gallium/drivers/r300/r300_swtcl_emit.c
+++ b/src/gallium/drivers/r300/r300_swtcl_emit.c
@@ -78,7 +78,7 @@ static boolean r300_swtcl_render_allocate_vertices(struct vbuf_render* render,
     size_t size = (size_t)vertex_size * (size_t)count;
 
     if (r300render->vbo) {
-        pipe_buffer_reference(screen, r300render->vbo, NULL);
+        pipe_buffer_reference(screen, &r300render->vbo, NULL);
     }
 
     r300render->vbo_size = MAX2(size, r300render->vbo_alloc_size);
@@ -126,7 +126,7 @@ static void r300_swtcl_render_release_vertices(struct vbuf_render* render)
     struct r300_swtcl_render* r300render = r300_swtcl_render(render);
     struct pipe_screen* screen = r300render->r300->context.screen;
 
-    pipe_buffer_reference(screen, r300render->vbo, NULL);
+    pipe_buffer_reference(screen, &r300render->vbo, NULL);
 }
 
 static boolean r300_swtcl_render_set_primitive(struct vbuf_render* render,
@@ -196,7 +196,14 @@ static void r300_swtcl_render_draw_arrays(struct vbuf_render* render,
     END_CS;
 
     /* Draw stuff! */
-    BEGIN_CS(2);
+    BEGIN_CS(6);
+
+    /* Set the pointer to our vertex buffer. */
+    OUT_CS(CP_PACKET3(R300_PACKET3_3D_LOAD_VBPNTR, 3));
+    OUT_CS(1);
+    OUT_CS(r300->vertex_info.size | (r300->vertex_info.size << 8));
+    OUT_CS_RELOC(r300render->vbo, 0, RADEON_GEM_DOMAIN_GTT, 0, 0);
+
     OUT_CS(CP_PACKET3(R300_PACKET3_3D_DRAW_VBUF_2, 0));
     OUT_CS(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | (count << 16) |
            r300render->hwprim | R300_VAP_VF_CNTL__INDEX_SIZE_32bit);
@@ -238,7 +245,14 @@ static void r300_swtcl_render_draw(struct vbuf_render* render,
     END_CS;
 
     /* Draw stuff! */
-    BEGIN_CS(10);
+    BEGIN_CS(14);
+
+    /* Set the pointer to our vertex buffer. */
+    OUT_CS(CP_PACKET3(R300_PACKET3_3D_LOAD_VBPNTR, 3));
+    OUT_CS(1);
+    OUT_CS(r300->vertex_info.size | (r300->vertex_info.size << 8));
+    OUT_CS_RELOC(r300render->vbo, 0, RADEON_GEM_DOMAIN_GTT, 0, 0);
+
     OUT_CS(CP_PACKET3(R300_PACKET3_3D_DRAW_INDX_2, 0));
     OUT_CS(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | (count << 16) |
            r300render->hwprim | R300_VAP_VF_CNTL__INDEX_SIZE_32bit);




More information about the mesa-commit mailing list