summaryrefslogtreecommitdiffstats
path: root/src/intel/vulkan/anv_pipeline_cache.c
diff options
context:
space:
mode:
authorIago Toral Quiroga <[email protected]>2017-03-03 10:57:17 +0100
committerIago Toral Quiroga <[email protected]>2017-03-16 11:40:05 +0100
commit88b539c4a03e3d680c297b60cc7a58a9e05fa0d6 (patch)
tree9c96523ec7665aad7b68582cbd6a9ee28eeabb3d /src/intel/vulkan/anv_pipeline_cache.c
parentbad3a2e91183aeb50d86b3d8929d0a270f094dfb (diff)
anv: do not try to ref/unref NULL shaders
This situation can happen if we failed to allocate memory for the shader. v2: - We shouldn't see NULL shaders in anv_shader_bin_ref so we should not check for that (Jason). Make sure that callers don't attempt to call this function with a NULL shader and assert that this never happens (Iago). v3: - All callers to anv_shader_bin_unref seem to check for NULL before calling, so just assert that it is not NULL (Topi) Reviewed-by: Topi Pohjolainen <[email protected]>
Diffstat (limited to 'src/intel/vulkan/anv_pipeline_cache.c')
-rw-r--r--src/intel/vulkan/anv_pipeline_cache.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/intel/vulkan/anv_pipeline_cache.c b/src/intel/vulkan/anv_pipeline_cache.c
index 0b677a49f3d..cdd8215b9b5 100644
--- a/src/intel/vulkan/anv_pipeline_cache.c
+++ b/src/intel/vulkan/anv_pipeline_cache.c
@@ -308,7 +308,8 @@ anv_pipeline_cache_upload_kernel(struct anv_pipeline_cache *cache,
pthread_mutex_unlock(&cache->mutex);
/* We increment refcount before handing it to the caller */
- anv_shader_bin_ref(bin);
+ if (bin)
+ anv_shader_bin_ref(bin);
return bin;
} else {
@@ -546,6 +547,8 @@ VkResult anv_MergePipelineCaches(
struct hash_entry *entry;
hash_table_foreach(src->cache, entry) {
struct anv_shader_bin *bin = entry->data;
+ assert(bin);
+
if (_mesa_hash_table_search(dst->cache, bin->key))
continue;