VulkanDevice: Disable VK_KHR_dynamic_rendering_local_read on AMD
Like everything else on RDNA3, it appears to be broken and causes GPU hangs/resets.
This commit is contained in:
parent
0879dff93a
commit
f41c238c53
|
@ -417,6 +417,31 @@ bool VulkanDevice::SelectDeviceExtensions(ExtensionList* extension_list, bool en
|
||||||
m_optional_extensions.vk_ext_full_screen_exclusive ? "supported" : "NOT supported");
|
m_optional_extensions.vk_ext_full_screen_exclusive ? "supported" : "NOT supported");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (IsBrokenMobileDriver())
|
||||||
|
{
|
||||||
|
// Push descriptor is broken on Adreno v502.. don't want to think about dynamic rendending.
|
||||||
|
if (m_optional_extensions.vk_khr_dynamic_rendering)
|
||||||
|
{
|
||||||
|
m_optional_extensions.vk_khr_dynamic_rendering = false;
|
||||||
|
m_optional_extensions.vk_khr_dynamic_rendering_local_read = false;
|
||||||
|
WARNING_LOG("Disabling VK_KHR_dynamic_rendering on broken mobile driver.");
|
||||||
|
}
|
||||||
|
if (m_optional_extensions.vk_khr_push_descriptor)
|
||||||
|
{
|
||||||
|
m_optional_extensions.vk_khr_push_descriptor = false;
|
||||||
|
WARNING_LOG("Disabling VK_KHR_push_descriptor on broken mobile driver.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (IsDeviceAMD())
|
||||||
|
{
|
||||||
|
// VK_KHR_dynamic_rendering_local_read appears to be broken on RDNA3, like everything else...
|
||||||
|
// Just causes GPU resets when you actually use a feedback loop. Assume Mesa is fine.
|
||||||
|
#if defined(_WIN32) || defined(__ANDROID__)
|
||||||
|
m_optional_extensions.vk_khr_dynamic_rendering_local_read = false;
|
||||||
|
WARNING_LOG("Disabling VK_KHR_dynamic_rendering_local_read on broken AMD driver.");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -675,22 +700,6 @@ void VulkanDevice::ProcessDeviceExtensions()
|
||||||
m_optional_extensions.vk_ext_external_memory_host &=
|
m_optional_extensions.vk_ext_external_memory_host &=
|
||||||
(external_memory_host_properties.minImportedHostPointerAlignment == HOST_PAGE_SIZE);
|
(external_memory_host_properties.minImportedHostPointerAlignment == HOST_PAGE_SIZE);
|
||||||
|
|
||||||
if (IsBrokenMobileDriver())
|
|
||||||
{
|
|
||||||
// Push descriptor is broken on Adreno v502.. don't want to think about dynamic rendending.
|
|
||||||
if (m_optional_extensions.vk_khr_dynamic_rendering)
|
|
||||||
{
|
|
||||||
m_optional_extensions.vk_khr_dynamic_rendering = false;
|
|
||||||
m_optional_extensions.vk_khr_dynamic_rendering_local_read = false;
|
|
||||||
WARNING_LOG("Disabling VK_KHR_dynamic_rendering on broken mobile driver.");
|
|
||||||
}
|
|
||||||
if (m_optional_extensions.vk_khr_push_descriptor)
|
|
||||||
{
|
|
||||||
m_optional_extensions.vk_khr_push_descriptor = false;
|
|
||||||
WARNING_LOG("Disabling VK_KHR_push_descriptor on broken mobile driver.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
INFO_LOG("VK_EXT_memory_budget is {}", m_optional_extensions.vk_ext_memory_budget ? "supported" : "NOT supported");
|
INFO_LOG("VK_EXT_memory_budget is {}", m_optional_extensions.vk_ext_memory_budget ? "supported" : "NOT supported");
|
||||||
INFO_LOG("VK_EXT_rasterization_order_attachment_access is {}",
|
INFO_LOG("VK_EXT_rasterization_order_attachment_access is {}",
|
||||||
m_optional_extensions.vk_ext_rasterization_order_attachment_access ? "supported" : "NOT supported");
|
m_optional_extensions.vk_ext_rasterization_order_attachment_access ? "supported" : "NOT supported");
|
||||||
|
@ -1648,6 +1657,11 @@ bool VulkanDevice::IsDeviceNVIDIA() const
|
||||||
return (m_device_properties.vendorID == 0x10DE);
|
return (m_device_properties.vendorID == 0x10DE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool VulkanDevice::IsDeviceAMD() const
|
||||||
|
{
|
||||||
|
return (m_device_properties.vendorID == 0x1002);
|
||||||
|
}
|
||||||
|
|
||||||
bool VulkanDevice::IsDeviceAdreno() const
|
bool VulkanDevice::IsDeviceAdreno() const
|
||||||
{
|
{
|
||||||
// Assume turnip is fine...
|
// Assume turnip is fine...
|
||||||
|
|
|
@ -305,6 +305,9 @@ private:
|
||||||
/// Returns true if running on an NVIDIA GPU.
|
/// Returns true if running on an NVIDIA GPU.
|
||||||
bool IsDeviceNVIDIA() const;
|
bool IsDeviceNVIDIA() const;
|
||||||
|
|
||||||
|
/// Returns true if running on an AMD GPU.
|
||||||
|
bool IsDeviceAMD() const;
|
||||||
|
|
||||||
// Vendor queries.
|
// Vendor queries.
|
||||||
bool IsDeviceAdreno() const;
|
bool IsDeviceAdreno() const;
|
||||||
bool IsDeviceMali() const;
|
bool IsDeviceMali() const;
|
||||||
|
|
Loading…
Reference in New Issue