anv: Add a struct for storing a compiled shader
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 25 Aug 2016 06:48:32 +0000 (23:48 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 30 Aug 2016 22:08:23 +0000 (15:08 -0700)
commit689971847005219178f5a484dffecf9e5e515192
treea6fd8840cc1a0e3977c20293cb2bea2b849946f6
parent13c09fdd0cfb62f3f45c39ad01a1c8f4b37c9c19
anv: Add a struct for storing a compiled shader

This new anv_shader_bin struct stores the compiled kernel (as an anv_state)
as well as all of the metadata that is generated at shader compile time.
The struct is very similar to the old cache_entry struct except that it
is reference counted and stores the actual pipeline_bind_map.  Similarly to
cache_entry, much of the actual data is floating-size and stored after the
main struct.  Unlike cache_entry, which was storred in GPU-accessable
memory, the storage for anv_shader_bin kernels comes from a state pool.
The struct itself is reference-counted so that it can be used by multiple
pipelines at a time without fear of allocation issues.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Cc: "12.0" <mesa-stable@lists.freedesktop.org>
Acked-by: Kristian Høgsberg Kristensen <krh@bitplanet.net>
src/intel/vulkan/anv_device.c
src/intel/vulkan/anv_pipeline_cache.c
src/intel/vulkan/anv_private.h