anv/sparse: add the initial code for Sparse Resources
This giant patch implements a huge chunk of the Vulkan Sparse Resources API. I previously had this as a nice series of many smaller patches that evolved as the xe.ko added more features, but once I was asked to squash some of the major reworks I realized I wouldn't be able easily rewrite history, so I just squased basically the whole series into a giant patch. I may end up splitting this again later if I find a way to properly do it. If we want to support the DX12 API through vkd3d we need to support part of the the Sparse Resources API. If we don't, a bunch of Steam games won't work. For now we only support the xe.ko backend, but the vast majority of the code is KMD-independent and so an i915.ko implementation would use most of what's here, just extending the part that binds and unbinds memory. v2+: There's no way to sanely track the version history of this patch in this commit message. Please refer to Gitlab. Reviewed-by:Lionel Landwerlin <lionel.g.landwerlin@intel.com> Signed-off-by:
Paulo Zanoni <paulo.r.zanoni@intel.com> Part-of: <mesa/mesa!23045>
- src/intel/vulkan/anv_batch_chain.c 100 additions, 8 deletionssrc/intel/vulkan/anv_batch_chain.c
- src/intel/vulkan/anv_device.c 79 additions, 38 deletionssrc/intel/vulkan/anv_device.c
- src/intel/vulkan/anv_formats.c 100 additions, 20 deletionssrc/intel/vulkan/anv_formats.c
- src/intel/vulkan/anv_image.c 247 additions, 37 deletionssrc/intel/vulkan/anv_image.c
- src/intel/vulkan/anv_pipeline.c 1 addition, 0 deletionssrc/intel/vulkan/anv_pipeline.c
- src/intel/vulkan/anv_private.h 103 additions, 0 deletionssrc/intel/vulkan/anv_private.h
- src/intel/vulkan/anv_sparse.c 670 additions, 0 deletionssrc/intel/vulkan/anv_sparse.c
- src/intel/vulkan/genX_cmd_buffer.c 60 additions, 8 deletionssrc/intel/vulkan/genX_cmd_buffer.c
- src/intel/vulkan/meson.build 1 addition, 0 deletionssrc/intel/vulkan/meson.build