From a584a12308228998b24e2b3dd5c15b8dd651a49b Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 30 Jun 2017 18:48:12 +0200 Subject: [PATCH] radeonsi: fix invalidating bindless buffer descriptors MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The VA is stored at [4:5], not [0:1]. This invalidated all texture buffer descriptors when they were made resident in the current context. This removes few partial flushes and cache invalidations which are needed when updating a bindless descriptor on the fly with a WRITE_DATA packet. Signed-off-by: Samuel Pitoiset Reviewed-by: Nicolai Hähnle --- src/gallium/drivers/radeonsi/si_descriptors.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c index 88f7dcee959..18b070ba3a2 100644 --- a/src/gallium/drivers/radeonsi/si_descriptors.c +++ b/src/gallium/drivers/radeonsi/si_descriptors.c @@ -2361,7 +2361,7 @@ static void si_invalidate_bindless_buf_desc(struct si_context *sctx, uint64_t offset) { struct r600_resource *buf = r600_resource(resource); - uint32_t *desc_list = desc->desc_list; + uint32_t *desc_list = desc->desc_list + 4; uint64_t old_desc_va; assert(resource->target == PIPE_BUFFER); @@ -2374,7 +2374,7 @@ static void si_invalidate_bindless_buf_desc(struct si_context *sctx, /* The buffer has been invalidated when the handle wasn't * resident, update the descriptor and the dirty flag. */ - si_set_buf_desc_address(buf, offset, &desc_list[4]); + si_set_buf_desc_address(buf, offset, &desc_list[0]); desc->dirty = true; sctx->bindless_descriptors_dirty = true; -- 2.30.2