anv/allocator: Use util_dynarray for blocks in anv_state_stream
authorJason Ekstrand <jason@jlekstrand.net>
Thu, 26 Mar 2020 17:57:36 +0000 (12:57 -0500)
committerMarge Bot <eric+marge@anholt.net>
Tue, 31 Mar 2020 08:12:07 +0000 (08:12 +0000)
commit896a7c28eb4b993751bb49659de7511b3fc68756
tree5dde5918dafbf11f6010ce57f74229d72ab035ec
parent63bec07e14d1cd8e01bf45bcda341bb364620cfc
anv/allocator: Use util_dynarray for blocks in anv_state_stream

When we originally wrote a bunch of the allocation data structures, we
re-used the GPU memory for CPU-side data structures.  It's a bit more
memory efficient and usually ok.  However, this has a couple of
problems:

 1. It makes it MUCH more likely that the GPU will accidentlly stomp
    CPU-side data structures and cause nearly impossible to debug
    crashes.

 2. With discrete GPUs, the memory will be mapped somehow and that map
    may be across the BAR so it could have horribly slow CPU access.
    This is bad for our CPU-side data structures.

In the case of anv_state_stream, it also made the data structure
massively more complex than it needed to be.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4336>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4336>
src/intel/vulkan/anv_allocator.c
src/intel/vulkan/anv_private.h