summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorNicolai Hähnle <nhaehnle@gmail.com>2009-10-03 17:24:04 +0200
committerNicolai Hähnle <nhaehnle@gmail.com>2009-10-03 17:27:50 +0200
commit751aa58e01bd2b4f35aa0e1477d77a0dc5490f39 (patch)
treede203b1577dd042a92035f6fce4128fa07813e39 /src/gallium/drivers
parentebbd65eb0658adcb797e0788a3472a7b69b3bfc2 (diff)
downloadexternal_mesa3d-751aa58e01bd2b4f35aa0e1477d77a0dc5490f39.zip
external_mesa3d-751aa58e01bd2b4f35aa0e1477d77a0dc5490f39.tar.gz
external_mesa3d-751aa58e01bd2b4f35aa0e1477d77a0dc5490f39.tar.bz2
r300g: Reset vbo_offset after allocation of a new buffer
This fixes the glxgears bug, among other things. Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/r300/r300_render.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c
index 16f6404..69d1623 100644
--- a/src/gallium/drivers/r300/r300_render.c
+++ b/src/gallium/drivers/r300/r300_render.c
@@ -79,13 +79,14 @@ static boolean r300_render_allocate_vertices(struct vbuf_render* render,
struct pipe_screen* screen = r300->context.screen;
size_t size = (size_t)vertex_size * (size_t)count;
- if (size + r300render->vbo_offset > r300render->vbo_size)
+ if (size + r300render->vbo_offset > r300render->vbo_size)
{
pipe_buffer_reference(&r300->vbo, NULL);
r300render->vbo = pipe_buffer_create(screen,
64,
PIPE_BUFFER_USAGE_VERTEX,
R300_MAX_VBO_SIZE);
+ r300render->vbo_offset = 0;
r300render->vbo_size = R300_MAX_VBO_SIZE;
}
@@ -118,7 +119,7 @@ static void r300_render_unmap_vertices(struct vbuf_render* render,
OUT_CS_REG(R300_VAP_VF_MAX_VTX_INDX, max);
END_CS;
- r300render->vbo_max_used = MAX2(r300render->vbo_max_used,
+ r300render->vbo_max_used = MAX2(r300render->vbo_max_used,
r300render->vertex_size * (max + 1));
pipe_buffer_unmap(screen, r300render->vbo);
}