r600g/compute: Defrag the pool if it's necesary
authorBruno Jiménez <brunojimen@gmail.com>
Wed, 16 Jul 2014 21:12:45 +0000 (23:12 +0200)
committerTom Stellard <thomas.stellard@amd.com>
Wed, 23 Jul 2014 14:29:17 +0000 (10:29 -0400)
commit90d7b09ed2011c658aea1b913f8091c0e89a92bb
tree76614619aad0dfcf7836e2cfd550b8a49d9b9c71
parentd8b6f0dacb0277dd4ae0f8152bc34a75206862c5
r600g/compute: Defrag the pool if it's necesary

This patch adds a new member to the pool to track its status.
For now it is used only for the 'fragmented' status, but if
needed it could be used for more statuses.

The pool will be considered fragmented if: An item that isn't
the last is freed or demoted.

This 'strategy' has a problem, although it shouldn't cause any bug.
If for example we have two items, A and B. We choose to free A first,
now the pool will have the 'fragmented' status. If we now free B,
the pool will retain its 'fragmented' status even if it isn't
fragmented.

Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
src/gallium/drivers/r600/compute_memory_pool.c
src/gallium/drivers/r600/compute_memory_pool.h