anv: Patch constant data pointers into shaders with using softpin
authorJason Ekstrand <jason@jlekstrand.net>
Sat, 8 Aug 2020 21:29:36 +0000 (16:29 -0500)
committerMarge Bot <eric+marge@anholt.net>
Wed, 2 Sep 2020 19:48:44 +0000 (19:48 +0000)
commit5ee32428373dd2e9ffcb419d26cb8ebe3788f298
tree07c6ee7ce5d23343f8593764cd3be08d3356d234
parenta06955f4ef623c3767739f7b73438eb54b59222c
anv: Patch constant data pointers into shaders with using softpin

When we have softpin, we know the address of the shader constant data at
shader upload time because it's sitting at the end of the shader.  This
commit changes ANV to use patch constants to embed the address in the
shader patch the right address in at upload time.  This allows us to
avoid having to set up a UBO binding on-the-fly for shader constants.

This commit uses an A64 message but it's quite possible that we could
also use an A32 message and make the dataport do the 64-bit add for us.
However, load_global is what we have right now so it was easier to just
use that.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6244>
src/intel/vulkan/anv_nir_apply_pipeline_layout.c
src/intel/vulkan/anv_pipeline_cache.c
src/intel/vulkan/anv_private.h