Vulkan: disable VK_PRESENT_MODE_FIFO_KHR on Linux Intel
Causes random timeouts.
Bug: angleproject:2932, angleproject:3153
Change-Id: I69a200684afab9e00642850bfa8e8efd0da5ad1d
Reviewed-on: https://chromium-review.googlesource.com/c/1495229
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/RendererVk.cpp b/src/libANGLE/renderer/vulkan/RendererVk.cpp
index c4d0d2d..5142374 100644
--- a/src/libANGLE/renderer/vulkan/RendererVk.cpp
+++ b/src/libANGLE/renderer/vulkan/RendererVk.cpp
@@ -1213,6 +1213,11 @@
deviceExtensionNames) &&
ExtensionFound(VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME, deviceExtensionNames);
#endif
+
+ if (IsLinux() && IsIntel(mPhysicalDeviceProperties.vendorID))
+ {
+ mFeatures.disableFifoPresentMode = true;
+ }
}
void RendererVk::initPipelineCacheVkKey()
diff --git a/src/libANGLE/renderer/vulkan/SurfaceVk.cpp b/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
index ac5ff35..682208b 100644
--- a/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
+++ b/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
@@ -395,7 +395,7 @@
// Select appropriate present mode based on vsync parameter. Default to 1 (FIFO), though it
// will get clamped to the min/max values specified at display creation time.
- setSwapInterval(1);
+ setSwapInterval(renderer->getFeatures().disableFifoPresentMode ? 0 : 1);
// Default to identity transform.
mPreTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;