diff options
author | Jason Ekstrand <jason.ekstrand@intel.com> | 2016-08-24 23:48:32 -0700 |
---|---|---|
committer | Jason Ekstrand <jason.ekstrand@intel.com> | 2016-08-30 15:08:23 -0700 |
commit | 689971847005219178f5a484dffecf9e5e515192 (patch) | |
tree | a6fd8840cc1a0e3977c20293cb2bea2b849946f6 /src/intel/vulkan/anv_device.c | |
parent | 13c09fdd0cfb62f3f45c39ad01a1c8f4b37c9c19 (diff) | |
download | external_mesa3d-689971847005219178f5a484dffecf9e5e515192.zip external_mesa3d-689971847005219178f5a484dffecf9e5e515192.tar.gz external_mesa3d-689971847005219178f5a484dffecf9e5e515192.tar.bz2 |
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>
Diffstat (limited to 'src/intel/vulkan/anv_device.c')
-rw-r--r-- | src/intel/vulkan/anv_device.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index 0d79ed9..765dc6e 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -879,6 +879,8 @@ VkResult anv_CreateDevice( &device->dynamic_state_block_pool); anv_block_pool_init(&device->instruction_block_pool, device, 128 * 1024); + anv_state_pool_init(&device->instruction_state_pool, + &device->instruction_block_pool); anv_pipeline_cache_init(&device->default_pipeline_cache, device); anv_block_pool_init(&device->surface_state_block_pool, device, 4096); @@ -954,6 +956,7 @@ void anv_DestroyDevice( anv_bo_pool_finish(&device->batch_bo_pool); anv_state_pool_finish(&device->dynamic_state_pool); anv_block_pool_finish(&device->dynamic_state_block_pool); + anv_state_pool_finish(&device->instruction_state_pool); anv_block_pool_finish(&device->instruction_block_pool); anv_state_pool_finish(&device->surface_state_pool); anv_block_pool_finish(&device->surface_state_block_pool); |