Mesa (master): iris: Drop 'old_address' parameter from iris_rebind_buffer
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Nov 25 23:55:40 UTC 2019
Module: Mesa
Branch: master
Commit: 4c1f81ad6220db86f49f33e034764db37523425e
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4c1f81ad6220db86f49f33e034764db37523425e
Author: Kenneth Graunke <kenneth at whitecape.org>
Date: Thu Oct 31 09:41:49 2019 -0700
iris: Drop 'old_address' parameter from iris_rebind_buffer
We can just compare the VERTEX_BUFFER_STATE address field to the
current BO's address. When calling rebind, we've already updated
the resource to the new buffer, but the state will have the old
address.
---
src/gallium/drivers/iris/iris_context.h | 3 +--
src/gallium/drivers/iris/iris_resource.c | 2 +-
src/gallium/drivers/iris/iris_state.c | 8 ++++----
3 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/src/gallium/drivers/iris/iris_context.h b/src/gallium/drivers/iris/iris_context.h
index b83582658f3..b81cd30441a 100644
--- a/src/gallium/drivers/iris/iris_context.h
+++ b/src/gallium/drivers/iris/iris_context.h
@@ -432,8 +432,7 @@ struct iris_vtable {
struct iris_batch *batch,
const struct pipe_grid_info *grid);
void (*rebind_buffer)(struct iris_context *ice,
- struct iris_resource *res,
- uint64_t old_address);
+ struct iris_resource *res);
void (*resolve_conditional_render)(struct iris_context *ice);
void (*load_register_reg32)(struct iris_batch *batch, uint32_t dst,
uint32_t src);
diff --git a/src/gallium/drivers/iris/iris_resource.c b/src/gallium/drivers/iris/iris_resource.c
index df1bf0f7451..296d99ed810 100644
--- a/src/gallium/drivers/iris/iris_resource.c
+++ b/src/gallium/drivers/iris/iris_resource.c
@@ -1265,7 +1265,7 @@ iris_invalidate_resource(struct pipe_context *ctx,
/* Rebind the buffer, replacing any state referring to the old BO's
* address, and marking state dirty so it's reemitted.
*/
- ice->vtbl.rebind_buffer(ice, res, old_bo->gtt_offset);
+ ice->vtbl.rebind_buffer(ice, res);
util_range_set_empty(&res->valid_buffer_range);
diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c
index 4f615ee9060..37f1ae26c17 100644
--- a/src/gallium/drivers/iris/iris_state.c
+++ b/src/gallium/drivers/iris/iris_state.c
@@ -6368,8 +6368,7 @@ iris_destroy_state(struct iris_context *ice)
static void
iris_rebind_buffer(struct iris_context *ice,
- struct iris_resource *res,
- uint64_t old_address)
+ struct iris_resource *res)
{
struct pipe_context *ctx = &ice->ctx;
struct iris_screen *screen = (void *) ctx->screen;
@@ -6398,9 +6397,10 @@ iris_rebind_buffer(struct iris_context *ice,
STATIC_ASSERT(GENX(VERTEX_BUFFER_STATE_BufferStartingAddress_start) == 32);
STATIC_ASSERT(GENX(VERTEX_BUFFER_STATE_BufferStartingAddress_bits) == 64);
uint64_t *addr = (uint64_t *) &state->state[1];
+ struct iris_bo *bo = iris_resource_bo(state->resource);
- if (*addr == old_address + state->offset) {
- *addr = res->bo->gtt_offset + state->offset;
+ if (*addr != bo->gtt_offset + state->offset) {
+ *addr = bo->gtt_offset + state->offset;
ice->state.dirty |= IRIS_DIRTY_VERTEX_BUFFERS;
}
}
More information about the mesa-commit
mailing list