diff options
author | Corbin Simpson <MostAwesomeDude@gmail.com> | 2009-03-05 10:46:52 -0800 |
---|---|---|
committer | Corbin Simpson <MostAwesomeDude@gmail.com> | 2009-03-05 12:41:53 -0800 |
commit | 626ac953354156f2545d90960f6712a2248ba795 (patch) | |
tree | 4bfbcf2cc68154d4498d637fef9d1cc089e496cc /src | |
parent | a3b168df48302b5bbd2323685623adee240d03a4 (diff) |
r300-gallium: Fix up vertex count.
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/r300/r300_swtcl_emit.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/gallium/drivers/r300/r300_swtcl_emit.c b/src/gallium/drivers/r300/r300_swtcl_emit.c index 01235674ac..7f0fc02971 100644 --- a/src/gallium/drivers/r300/r300_swtcl_emit.c +++ b/src/gallium/drivers/r300/r300_swtcl_emit.c @@ -174,7 +174,7 @@ static boolean r300_swtcl_render_set_primitive(struct vbuf_render* render, return TRUE; } -static void prepare_render(struct r300_swtcl_render* render) +static void prepare_render(struct r300_swtcl_render* render, unsigned count) { struct r300_context* r300 = render->r300; int i; @@ -186,7 +186,7 @@ static void prepare_render(struct r300_swtcl_render* render) debug_printf("r300: Preparing vertex buffer %p for render, " "vertex size %d, vertex count %d\n", render->vbo, - r300->vertex_info.vinfo.size, render->vbo_size); + r300->vertex_info.vinfo.size, count); /* Set the pointer to our vertex buffer. The emitted values are this: * PACKET3 [3D_LOAD_VBPNTR] * COUNT [1] @@ -194,7 +194,7 @@ static void prepare_render(struct r300_swtcl_render* render) * OFFSET [0] * VBPNTR [relocated BO] */ - BEGIN_CS(5); + BEGIN_CS(7); OUT_CS(CP_PACKET3(R300_PACKET3_3D_LOAD_VBPNTR, 3)); OUT_CS(1); OUT_CS(r300->vertex_info.vinfo.size | @@ -214,7 +214,11 @@ static void r300_swtcl_render_draw_arrays(struct vbuf_render* render, CS_LOCALS(r300); - prepare_render(r300render); + count /= 4; + + r300render->vbo_offset = start; + + prepare_render(r300render, count); debug_printf("r300: Doing vbuf render, count %d\n", count); @@ -237,7 +241,9 @@ static void r300_swtcl_render_draw(struct vbuf_render* render, CS_LOCALS(r300); - prepare_render(r300render); + count /= 4; + + prepare_render(r300render, count); /* Send our indices into an index buffer. */ index_buffer = pipe_buffer_create(screen, 64, PIPE_BUFFER_USAGE_VERTEX, @@ -252,7 +258,7 @@ static void r300_swtcl_render_draw(struct vbuf_render* render, pipe_buffer_unmap(screen, index_buffer); debug_printf("r300: Doing indexbuf render, count %d\n", count); - +#if 0 BEGIN_CS(5); OUT_CS(CP_PACKET3(R300_PACKET3_3D_DRAW_INDX_2, 0)); OUT_CS(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | (count << 16) | @@ -262,6 +268,7 @@ static void r300_swtcl_render_draw(struct vbuf_render* render, OUT_CS(R300_INDX_BUFFER_ONE_REG_WR | (R300_VAP_PORT_IDX0 >> 2)); OUT_CS_RELOC(index_buffer, 0, RADEON_GEM_DOMAIN_GTT, 0, 0); END_CS; +#endif } static void r300_swtcl_render_destroy(struct vbuf_render* render) |