Vulkan: Add a DriverDetails bug for "slow cached readback memory"

Using the cached memory type appears to be slower on Mali drivers, with
~10-15% CPU spent in the __pi___inval_cache_range kernel function.
This commit is contained in:
Stenzek
2019-10-02 21:32:44 +10:00
parent c557aa4a15
commit 328d89db70
3 changed files with 20 additions and 1 deletions

View File

@ -775,6 +775,16 @@ u32 VulkanContext::GetReadbackMemoryType(u32 bits, bool* is_coherent)
{
std::optional<u32> type_index;
// Mali driver appears to be significantly slower for readbacks when using cached memory.
if (DriverDetails::HasBug(DriverDetails::BUG_SLOW_CACHED_READBACK_MEMORY))
{
type_index = GetMemoryType(
bits, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, true,
is_coherent);
if (type_index)
return type_index.value();
}
// Optimal config uses cached+coherent.
type_index =
GetMemoryType(bits,