From 1e7daaa6c9a1bcf5f1ae7d85519e61f78cf91518 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Tue, 10 Sep 2019 03:28:59 -0700 Subject: [PATCH] iris: Don't flag IRIS_DIRTY_BINDINGS for constant usage history The underlying buffer isn't changing - so we don't need to update any SURFACE_STATE descriptors - we just might have new constants, meaning we need to re-emit 3DSTATE_CONSTANT_XS. On Gen9, this means we need to update 3DSTATE_BINDING_TABLE_POINTERS_XS too, but that's now handled by the explicit check in the previous patch. On Gen9, this should cause us to re-emit the binding table /pointer/ on writing to a buffer with PIPE_BIND_CONSTANT_BUFFER, rather than emitting a whole new /table/. On Gen8 and Gen11, this avoids binding table churn altogether. Cuts 61% of 3DSTATE_BINDING_TABLE_POINTERS_XS packets in a Shadow of Mordor trace on Icelake. Reviewed-by: Caio Marcelo de Oliveira Filho --- src/gallium/drivers/iris/iris_resource.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/gallium/drivers/iris/iris_resource.c b/src/gallium/drivers/iris/iris_resource.c index a140b3f1c6f..4de7b2090a8 100644 --- a/src/gallium/drivers/iris/iris_resource.c +++ b/src/gallium/drivers/iris/iris_resource.c @@ -1899,8 +1899,7 @@ iris_dirty_for_history(struct iris_context *ice, IRIS_DIRTY_CONSTANTS_TES | IRIS_DIRTY_CONSTANTS_GS | IRIS_DIRTY_CONSTANTS_FS | - IRIS_DIRTY_CONSTANTS_CS | - IRIS_ALL_DIRTY_BINDINGS; + IRIS_DIRTY_CONSTANTS_CS; } ice->state.dirty |= dirty; -- 2.30.2