Module: Mesa Branch: refs/tags/untested-1 Commit: 4c5f3723b0e749b4e45c6092104bbdbbb1bdd73a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4c5f3723b0e749b4e45c6092104bbdbbb1bdd73a
Author: Emil Velikov <[email protected]> Date: Thu Jun 13 10:47:59 2013 +0100 nouveau: set cb_dirty flag is we had bound a constant buffer, during transfer_unmap while we're at it rename nouveau_transfer variable to something more sensible Signed-off-by: Emil Velikov <[email protected]> --- src/gallium/drivers/nouveau/nouveau_buffer.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/gallium/drivers/nouveau/nouveau_buffer.c b/src/gallium/drivers/nouveau/nouveau_buffer.c index 89ea2de..63e4c25 100644 --- a/src/gallium/drivers/nouveau/nouveau_buffer.c +++ b/src/gallium/drivers/nouveau/nouveau_buffer.c @@ -322,25 +322,29 @@ static void nouveau_buffer_transfer_unmap(struct pipe_context *pipe, struct pipe_transfer *transfer) { - struct nv04_resource *buf = nv04_resource(transfer->resource); - struct nouveau_transfer *xfr = nouveau_transfer(transfer); struct nouveau_context *nv = nouveau_context(pipe); + struct nouveau_transfer *tx = nouveau_transfer(transfer); + struct nv04_resource *buf = nv04_resource(transfer->resource); - if (xfr->base.usage & PIPE_TRANSFER_WRITE) { + if (tx->base.usage & PIPE_TRANSFER_WRITE) { if (buf->domain == NOUVEAU_BO_VRAM) { nouveau_buffer_upload(nv, buf, transfer->box.x, transfer->box.width); } - if (buf->domain != 0 && (buf->base.bind & (PIPE_BIND_VERTEX_BUFFER | - PIPE_BIND_INDEX_BUFFER))) - nouveau_context(pipe)->vbo_dirty = TRUE; + if (likely(buf->domain)) { + const uint8_t bind = buf->base.bind; + /* make sure we invalidate dedicated caches */ + if (bind & (PIPE_BIND_VERTEX_BUFFER | PIPE_BIND_INDEX_BUFFER)) + nv->vbo_dirty = TRUE; + if (bind & (PIPE_BIND_CONSTANT_BUFFER)) + nv->cb_dirty = TRUE; + } } -// if (!xfr->bo && (xfr->base.usage & PIPE_TRANSFER_WRITE)) - if (xfr->base.usage & PIPE_TRANSFER_WRITE) - NOUVEAU_DRV_STAT(nv->screen, buf_write_bytes_direct, xfr->base.box.width); + if (tx->base.usage & PIPE_TRANSFER_WRITE) + NOUVEAU_DRV_STAT(nv->screen, buf_write_bytes_direct, tx->base.box.width); - FREE(xfr); + FREE(tx); } _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
