RADV_DEBUG_NO_SHADER_BALLOT = 0x4000000,
RADV_DEBUG_ALL_ENTRYPOINTS = 0x8000000,
RADV_DEBUG_DUMP_META_SHADERS = 0x10000000,
+ RADV_DEBUG_NO_MEMORY_CACHE = 0x20000000,
};
enum {
{"nodcc", RADV_DEBUG_NO_DCC},
{"shaders", RADV_DEBUG_DUMP_SHADERS},
{"nocache", RADV_DEBUG_NO_CACHE},
+ {"nomemorycache", RADV_DEBUG_NO_MEMORY_CACHE},
{"shaderstats", RADV_DEBUG_DUMP_SHADER_STATS},
{"nohiz", RADV_DEBUG_NO_HIZ},
{"nocompute", RADV_DEBUG_NO_COMPUTE_QUEUE},
free(entry);
entry = new_entry;
- radv_pipeline_cache_add_entry(cache, new_entry);
+ if (!(device->instance->debug_flags & RADV_DEBUG_NO_MEMORY_CACHE) ||
+ cache != device->mem_cache)
+ radv_pipeline_cache_add_entry(cache, new_entry);
}
}
}
- for (int i = 0; i < MESA_SHADER_STAGES; ++i)
- if (entry->variants[i])
- p_atomic_inc(&entry->variants[i]->ref_count);
-
memcpy(variants, entry->variants, sizeof(entry->variants));
+
+ if (device->instance->debug_flags & RADV_DEBUG_NO_MEMORY_CACHE &&
+ cache == device->mem_cache)
+ vk_free(&cache->alloc, entry);
+ else {
+ for (int i = 0; i < MESA_SHADER_STAGES; ++i)
+ if (entry->variants[i])
+ p_atomic_inc(&entry->variants[i]->ref_count);
+ }
+
pthread_mutex_unlock(&cache->mutex);
return true;
}
disk_sha1, entry, entry_size(entry), NULL);
}
+ if (device->instance->debug_flags & RADV_DEBUG_NO_MEMORY_CACHE &&
+ cache == device->mem_cache) {
+ vk_free2(&cache->alloc, NULL, entry);
+ pthread_mutex_unlock(&cache->mutex);
+ return;
+ }
+
/* We delay setting the variant so we have reproducible disk cache
* items.
*/