diff options
author | Marek Olšák <[email protected]> | 2014-03-08 23:34:36 +0100 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2014-03-11 19:18:02 +0100 |
commit | e1a9a54464c31f7b3b69d686d82f425dffb65f40 (patch) | |
tree | 3b3376288ce8d98b8e3e7a79688a21e721830efd /src/gallium/drivers/radeonsi | |
parent | 74d95adea08b3f94ed7d8f7f9cee693a6cd49a44 (diff) |
r600g,radeonsi: attempt to fix racy multi-context apps calling BufferData
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=75061
v2: minimize the window where cs_buf != new_buf
Diffstat (limited to 'src/gallium/drivers/radeonsi')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_descriptors.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c index bf2206dc1bc..0c58d5fd045 100644 --- a/src/gallium/drivers/radeonsi/si_descriptors.c +++ b/src/gallium/drivers/radeonsi/si_descriptors.c @@ -723,10 +723,7 @@ static void si_invalidate_buffer(struct pipe_context *ctx, struct pipe_resource unsigned i, shader, alignment = rbuffer->buf->alignment; uint64_t old_va = r600_resource_va(ctx->screen, buf); - /* Discard the buffer. */ - pb_reference(&rbuffer->buf, NULL); - - /* Create a new one in the same pipe_resource. */ + /* Reallocate the buffer in the same pipe_resource. */ r600_init_resource(&sctx->screen->b, rbuffer, rbuffer->b.b.width0, alignment, TRUE); |