summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r300/r300_screen_buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/r300/r300_screen_buffer.c')
-rw-r--r--src/gallium/drivers/r300/r300_screen_buffer.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/gallium/drivers/r300/r300_screen_buffer.c b/src/gallium/drivers/r300/r300_screen_buffer.c
index 11ad87ed89..d9c491f1e6 100644
--- a/src/gallium/drivers/r300/r300_screen_buffer.c
+++ b/src/gallium/drivers/r300/r300_screen_buffer.c
@@ -62,8 +62,8 @@ void r300_upload_index_buffer(struct r300_context *r300,
unsigned count)
{
unsigned index_offset;
- boolean flushed;
uint8_t *ptr = r300_buffer(*index_buffer)->user_buffer;
+ boolean flushed;
*index_buffer = NULL;
@@ -74,6 +74,11 @@ void r300_upload_index_buffer(struct r300_context *r300,
index_buffer, &flushed);
*start = index_offset / index_size;
+
+ if (flushed || !r300->upload_ib_validated) {
+ r300->upload_ib_validated = FALSE;
+ r300->validate_buffers = TRUE;
+ }
}
void r300_upload_user_buffers(struct r300_context *r300)
@@ -91,8 +96,12 @@ void r300_upload_user_buffers(struct r300_context *r300)
r300_buffer(vb->buffer)->user_buffer,
&vb->buffer_offset, &vb->buffer, &flushed);
- r300->validate_buffers = TRUE;
r300->vertex_arrays_dirty = TRUE;
+
+ if (flushed || !r300->upload_vb_validated) {
+ r300->upload_vb_validated = FALSE;
+ r300->validate_buffers = TRUE;
+ }
}
}
}