anv: split internal surface states from descriptors
On Intel HW we use the same mechanism for internal operations surfaces as well as application surfaces (VkDescriptor). This change splits the surface pool in 2, one part dedicated to internal allocations, the other to application VkDescriptors. To do so, the STATE_BASE_ADDRESS::SurfaceStateBaseAddress points to a 4Gb area, with the following layout : - 1Gb of binding table pool - 2Gb of internal surface states - 1Gb of bindless surface states That way any entry from the binding table can refer to both internal & bindless surface states but none of the driver allocations interfere with the allocation of the application. Based off a change from Sviatoslav Peleshko. v2: Allocate image view null surface state from bindless heap (Sviatoslav) Removed debug stuff (Sviatoslav) Signed-off-by:Lionel Landwerlin <lionel.g.landwerlin@intel.com> Closes: #7110 Cc: mesa-stable Tested-by:
Sviatoslav Peleshko <sviatoslav.peleshko@globallogic.com> Reviewed-by:
Tapani Pälli <tapani.palli@intel.com> Part-of: <!19275>
- src/intel/vulkan/anv_allocator.c 3 additions, 3 deletionssrc/intel/vulkan/anv_allocator.c
- src/intel/vulkan/anv_batch_chain.c 5 additions, 1 deletionsrc/intel/vulkan/anv_batch_chain.c
- src/intel/vulkan/anv_cmd_buffer.c 2 additions, 2 deletionssrc/intel/vulkan/anv_cmd_buffer.c
- src/intel/vulkan/anv_descriptor_set.c 8 additions, 3 deletionssrc/intel/vulkan/anv_descriptor_set.c
- src/intel/vulkan/anv_device.c 23 additions, 12 deletionssrc/intel/vulkan/anv_device.c
- src/intel/vulkan/anv_image.c 31 additions, 28 deletionssrc/intel/vulkan/anv_image.c
- src/intel/vulkan/anv_private.h 36 additions, 22 deletionssrc/intel/vulkan/anv_private.h
- src/intel/vulkan/genX_blorp_exec.c 1 addition, 1 deletionsrc/intel/vulkan/genX_blorp_exec.c
- src/intel/vulkan/genX_cmd_buffer.c 16 additions, 17 deletionssrc/intel/vulkan/genX_cmd_buffer.c
- src/intel/vulkan/genX_state.c 2 additions, 2 deletionssrc/intel/vulkan/genX_state.c