summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBas Nieuwenhuizen <[email protected]>2019-10-30 03:29:21 +0100
committerBas Nieuwenhuizen <[email protected]>2019-10-30 11:38:50 +0100
commit2e3a635ee698db793c999cb5f86cd2d66abddd37 (patch)
tree7ee7326a7f54d85e1658d418e21719124e9e25c2
parentd78809632f58da1a34c23ccfd4456cb889276f39 (diff)
radv: Add an early exit in the secure compile if we already have the cache entries.
Reviewed-by: Timothy Arceri <[email protected]>
-rw-r--r--src/amd/vulkan/radv_pipeline.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index 422b0771a79..55a5d2a3c53 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -4644,6 +4644,20 @@ radv_secure_compile(struct radv_pipeline *pipeline,
allowed_hashes[i]);
}
+ /* Do an early exit if all cache entries are already there. */
+ bool may_need_copy_shader = pStages[MESA_SHADER_GEOMETRY];
+ void *main_entry = disk_cache_get(device->physical_device->disk_cache, allowed_hashes[0], 20);
+ void *copy_entry = NULL;
+ if (may_need_copy_shader)
+ copy_entry = disk_cache_get(device->physical_device->disk_cache, allowed_hashes[1], 20);
+
+ bool has_all_cache_entries = main_entry && (!may_need_copy_shader || copy_entry);
+ free(main_entry);
+ free(copy_entry);
+
+ if(has_all_cache_entries)
+ return VK_SUCCESS;
+
unsigned process = 0;
uint8_t sc_threads = device->instance->num_sc_threads;
while (true) {