diff options
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/virgl/virgl_buffer.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gallium/drivers/virgl/virgl_buffer.c b/src/gallium/drivers/virgl/virgl_buffer.c index cee26da41b7..4d30c6c340e 100644 --- a/src/gallium/drivers/virgl/virgl_buffer.c +++ b/src/gallium/drivers/virgl/virgl_buffer.c @@ -83,6 +83,9 @@ static void virgl_buffer_transfer_unmap(struct pipe_context *ctx, if (trans->base.usage & PIPE_TRANSFER_WRITE) { struct virgl_screen *vs = virgl_screen(ctx->screen); if (transfer->usage & PIPE_TRANSFER_FLUSH_EXPLICIT) { + if (trans->range.end <= trans->range.start) + goto out; + transfer->box.x += trans->range.start; transfer->box.width = trans->range.end - trans->range.start; trans->offset = transfer->box.x; @@ -96,6 +99,7 @@ static void virgl_buffer_transfer_unmap(struct pipe_context *ctx, } +out: virgl_resource_destroy_transfer(vctx, trans); } |