|
|
|
@ -1168,7 +1168,6 @@ bool Device::GetSuitability(bool requires_swapchain) { |
|
|
|
|
|
|
|
// Driver detection variables for workarounds in GetSuitability
|
|
|
|
const VkDriverId driver_id = properties.driver.driverID; |
|
|
|
const bool is_intel_windows = driver_id == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS; |
|
|
|
|
|
|
|
// VK_EXT_extended_dynamic_state2 below this will appear drivers that need workarounds.
|
|
|
|
|
|
|
|
@ -1185,15 +1184,14 @@ bool Device::GetSuitability(bool requires_swapchain) { |
|
|
|
} |
|
|
|
|
|
|
|
// Intel Windows < 27.20.100.0: Broken VertexInputDynamicState
|
|
|
|
// Same for NVIDIA Proprietary < 580.119.02, unknown when VIDS was first NOT broken
|
|
|
|
// Disable VertexInputDynamicState on old Intel Windows drivers
|
|
|
|
if (extensions.vertex_input_dynamic_state && is_intel_windows) { |
|
|
|
if (extensions.vertex_input_dynamic_state) { |
|
|
|
const u32 version = (properties.properties.driverVersion << 3) >> 3; |
|
|
|
if (version < VK_MAKE_API_VERSION(27, 20, 100, 0)) { |
|
|
|
LOG_WARNING(Render_Vulkan, |
|
|
|
"Intel Windows < 27.20.100.0: Disabling broken VK_EXT_vertex_input_dynamic_state"); |
|
|
|
RemoveExtensionFeature(extensions.vertex_input_dynamic_state, |
|
|
|
features.vertex_input_dynamic_state, |
|
|
|
VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); |
|
|
|
if ((driver_id == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS && version < VK_MAKE_API_VERSION(27, 20, 100, 0)) |
|
|
|
|| (driver_id == VK_DRIVER_ID_NVIDIA_PROPRIETARY && version < VK_MAKE_API_VERSION(580, 119, 02, 0))) { |
|
|
|
LOG_WARNING(Render_Vulkan, "Disabling broken VK_EXT_vertex_input_dynamic_state"); |
|
|
|
RemoveExtensionFeature(extensions.vertex_input_dynamic_state, features.vertex_input_dynamic_state, VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|