anv: increase binding table pool size to 64KB
authorFelix DeGrood <felix.j.degrood@intel.com>
Thu, 6 Jan 2022 22:23:50 +0000 (14:23 -0800)
committerMarge Bot <emma+marge@anholt.net>
Tue, 11 Jan 2022 19:47:30 +0000 (19:47 +0000)
Binding table pool runs out of capacity quickly on modern games,
requiring new Surface Base Address instructions to be sent. That
is costly due to flushes and stalls.  Increasing BT pool capacity
to 64KB improves performance several workloads.

Fallout4 +4%
Shadow of the Tomb Raider +4%
Borderlands3 +3%

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14483>

src/intel/vulkan/anv_private.h

index 2d4137c..58e0ee3 100644 (file)
@@ -160,7 +160,7 @@ struct intel_perf_query_result;
    (DYNAMIC_STATE_POOL_MAX_ADDRESS - DYNAMIC_STATE_POOL_MIN_ADDRESS + 1)
 #define BINDING_TABLE_POOL_SIZE     \
    (BINDING_TABLE_POOL_MAX_ADDRESS - BINDING_TABLE_POOL_MIN_ADDRESS + 1)
-#define BINDING_TABLE_POOL_BLOCK_SIZE (4096)
+#define BINDING_TABLE_POOL_BLOCK_SIZE (65536)
 #define SURFACE_STATE_POOL_SIZE     \
    (SURFACE_STATE_POOL_MAX_ADDRESS - SURFACE_STATE_POOL_MIN_ADDRESS + 1)
 #define INSTRUCTION_STATE_POOL_SIZE \