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 <caio.oliveira@intel.com>
This commit is contained in:
@@ -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;
|
||||
|
Reference in New Issue
Block a user