Browse Source

Disabling VK_KHR_shader_float_controls on QCOM and ARM

flatopsfixes23485
CamilleLaVey 2 months ago
parent
commit
7bed3bb947
  1. 19
      src/video_core/vulkan_common/vulkan_device.cpp

19
src/video_core/vulkan_common/vulkan_device.cpp

@ -1195,6 +1195,25 @@ bool Device::GetSuitability(bool requires_swapchain) {
}
}
// Some drivers (notably Qualcomm and certain ARM drivers) misreport the
// VK_KHR_shader_float_controls capabilities. Disable the extension and
// clear the reported properties unless the user explicitly forces
// unsupported extensions via settings.
{
const auto driver_id = properties.driver.driverID;
const bool force_extensions = Settings::values.force_unsupported_extensions.GetValue();
if ((driver_id == VK_DRIVER_ID_QUALCOMM_PROPRIETARY ||
driver_id == VK_DRIVER_ID_ARM_PROPRIETARY) &&
!force_extensions) {
LOG_WARNING(Render_Vulkan,
"Disabling VK_KHR_shader_float_controls for driver '{}' id={} due to unreliable float-control reporting",
properties.driver.driverName, driver_id);
extensions.shader_float_controls = false;
// Zero-out the structure to avoid accidental use of reported values.
properties.float_controls = {};
}
}
// Unload extensions if feature support is insufficient.
RemoveUnsuitableExtensions();

Loading…
Cancel
Save