anv/block_pool: Align anv_block_pool state to 64 bits.
authorRafael Antognolli <rafael.antognolli@intel.com>
Mon, 30 Sep 2019 21:08:11 +0000 (14:08 -0700)
committerRafael Antognolli <rafael.antognolli@intel.com>
Thu, 3 Oct 2019 19:40:33 +0000 (12:40 -0700)
commitcdc331c6f9f6b2ffc035018de4445dba9b67c1f7
tree2b500145a6204047ab212293af97f8fdc4a0696f
parent0103d4747a39ddc46f51cc3e97f85414765913fb
anv/block_pool: Align anv_block_pool state to 64 bits.

On 64 bits platforms, some atomic operations like __sync_fetch_and_add()
have constant time, but on 32 bits platforms they are implemented with a
loop and might take much longer.

Additionally, it seems like if their operands are not aligned to 64
bits, they also require extra memory accesses. From the Intel
Architecture's Developer Manual Vol. 1, 4.1.1:

 "A word or doubleword operand that crosses a 4-byte boundary or a
 quadword operand that crosses an 8-byte boundary is considered
 unaligned and requires two separate memory bus cycles for access."

Forcing the u64 field to be aligned to 64 bits seems to make the unit
tests that are stressing this finish much faster.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/vulkan/anv_private.h