iris: Don't flag IRIS_DIRTY_BINDINGS for constant usage history
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 10 Sep 2019 10:28:59 +0000 (03:28 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 18 Sep 2019 22:44:22 +0000 (15:44 -0700)
commit1e7daaa6c9a1bcf5f1ae7d85519e61f78cf91518
tree2c53b52c7935ff41bcf879bf32e82ba23a9bccd1
parente7db3577f87d64a7f878d8dad6793afa40b3ae2a
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>
src/gallium/drivers/iris/iris_resource.c