radv: don't assert on empty hash table
authorGrazvydas Ignotas <notasas@gmail.com>
Sun, 27 Aug 2017 21:29:36 +0000 (00:29 +0300)
committerGrazvydas Ignotas <notasas@gmail.com>
Wed, 30 Aug 2017 23:47:26 +0000 (02:47 +0300)
Currently if table_size is 0, it's falling through to:

unreachable("hash table should never be full");

But table_size can be 0 when RADV_DEBUG=nocache is set, or when the
table allocation fails (which is not considered an error).

Fixes: f4e499ec791 "radv: add initial non-conformant radv vulkan driver"
Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_pipeline_cache.c

index 99a614dc1049876b32e1befb4e1f4c674ce7b615..beed35b53a0c390d81334133a67b032cca24a41d 100644 (file)
@@ -118,6 +118,9 @@ radv_pipeline_cache_search_unlocked(struct radv_pipeline_cache *cache,
        const uint32_t mask = cache->table_size - 1;
        const uint32_t start = (*(uint32_t *) sha1);
 
+       if (cache->table_size == 0)
+               return NULL;
+
        for (uint32_t i = 0; i < cache->table_size; i++) {
                const uint32_t index = (start + i) & mask;
                struct cache_entry *entry = cache->hash_table[index];