This is what I hope to be the final re-spin of Scott's soft-pin patch series for our Vulkan driver. Why are there over a dozen new patches from me? I started with Scott's v3 and tried to come up with a good way to apply my review feedback on the last patch and it turned into a bit of a rabbit-hole.
The first thing I tried to fix was to make anv bake addresses into surface states up-front wherever possible. I ended up going a bit bananas on plumbing anv_address through everywhere. I think it's a good clean-up in general and should help when we go to do sparse bindings. The second thing I tried to fix was to improve the fix to batch chaining. This led to a couple of patches that clean up the way we do return chaining from secondary command buffers. The modification ended up being basically exactly what Scott did originally but it's now got some nice asserts to keep things sane. Jason Ekstrand (15): util: Add a virtual memory allocator intel/common: Add an address de-cannonicalization helper anv: Add some anv_address helpers anv: Use full anv_addresses in anv_surface_state anv: Use an anv_address in anv_buffer_view anv/cmd_buffer: Use anv_address for handling indirect parameters anv: Use an anv_address in anv_buffer anv/cmd_buffer: Rework surface relocation helpers anv: Use an address for each anv_image plane anv/allocator: Set the BO flags in bo_cache_alloc/import anv/allocator: Support softpin in the BO cache anv: Soft-pin client-allocated memory anv/batch_chain: Call batch_bo_finish at the end of end_batch_buffer anv/batch_chain: Simplify secondary batch return chaining Kenneth Graunke (1): util: Make vma.c support non-power-of-two alignments. Scott D Phillips (7): util: Add a randomized test for the virtual memory allocator anv: Add vma_heap allocators in anv_device anv/blorp: Write relocated values into surface states anv: Soft-pin state pools anv: Use a separate pool for binding tables when soft pinning anv: For pinned BOs, skip relocations, but track bo usage anv: Soft-pin batch buffers anv: Soft-pin everything else configure.ac | 1 + src/intel/common/gen_gem.h | 10 + src/intel/vulkan/anv_allocator.c | 105 ++++++++- src/intel/vulkan/anv_batch_chain.c | 202 +++++++++++------ src/intel/vulkan/anv_blorp.c | 28 +-- src/intel/vulkan/anv_descriptor_set.c | 5 +- src/intel/vulkan/anv_device.c | 189 +++++++++++++--- src/intel/vulkan/anv_image.c | 84 +++---- src/intel/vulkan/anv_intel.c | 15 +- src/intel/vulkan/anv_private.h | 174 +++++++++++++-- src/intel/vulkan/anv_queue.c | 7 +- src/intel/vulkan/gen7_cmd_buffer.c | 8 +- src/intel/vulkan/gen8_cmd_buffer.c | 3 +- src/intel/vulkan/genX_blorp_exec.c | 6 + src/intel/vulkan/genX_cmd_buffer.c | 189 ++++++++-------- src/intel/vulkan/genX_query.c | 17 +- src/intel/vulkan/tests/block_pool_no_free.c | 2 +- src/intel/vulkan/tests/state_pool.c | 2 +- src/intel/vulkan/tests/state_pool_free_list_only.c | 2 +- src/intel/vulkan/tests/state_pool_no_free.c | 2 +- src/util/Makefile.am | 3 +- src/util/Makefile.sources | 4 +- src/util/meson.build | 3 + src/util/tests/vma/Makefile.am | 39 ++++ src/util/tests/vma/meson.build | 29 +++ src/util/tests/vma/vma_random_test.cpp | 244 +++++++++++++++++++++ src/util/vma.c | 234 ++++++++++++++++++++ src/util/vma.h | 53 +++++ 28 files changed, 1344 insertions(+), 316 deletions(-) create mode 100644 src/util/tests/vma/Makefile.am create mode 100644 src/util/tests/vma/meson.build create mode 100644 src/util/tests/vma/vma_random_test.cpp create mode 100644 src/util/vma.c create mode 100644 src/util/vma.h -- 2.5.0.400.gff86faf _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
