Don't advertise timestamp support on Qualcomm
The Android devices I've tested with Qualcomm GPUs (like the Pixel 4)
are exhibiting an issue where resolving timestamp queries after a
render pass is causing a crash. Until that issue can be resolved it's
safest to simply not advertise timestamp query support on these devices.
Bug: dawn:1559
Change-Id: Id76aa5095ffbb7f55579cc428388f55f4528581d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/104441
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Brandon Jones <bajones@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
diff --git a/src/dawn/native/vulkan/AdapterVk.cpp b/src/dawn/native/vulkan/AdapterVk.cpp
index 35cd367..a4dc1dd 100644
--- a/src/dawn/native/vulkan/AdapterVk.cpp
+++ b/src/dawn/native/vulkan/AdapterVk.cpp
@@ -149,7 +149,10 @@
mSupportedFeatures.EnableFeature(Feature::PipelineStatisticsQuery);
}
- if (mDeviceInfo.properties.limits.timestampComputeAndGraphics == VK_TRUE) {
+ // TODO(dawn:1559) Resolving timestamp queries after a render pass is failing on Qualcomm-based
+ // Android devices.
+ if (mDeviceInfo.properties.limits.timestampComputeAndGraphics == VK_TRUE &&
+ !IsAndroidQualcomm()) {
mSupportedFeatures.EnableFeature(Feature::TimestampQuery);
}
diff --git a/src/dawn/tests/end2end/QueryTests.cpp b/src/dawn/tests/end2end/QueryTests.cpp
index 2922f39..6638875 100644
--- a/src/dawn/tests/end2end/QueryTests.cpp
+++ b/src/dawn/tests/end2end/QueryTests.cpp
@@ -750,9 +750,6 @@
// devices
DAWN_TEST_UNSUPPORTED_IF(IsMacOS() && IsMetal() && IsApple());
- // TODO(dawn:1549) Fails on Qualcomm-based Android devices.
- DAWN_SUPPRESS_TEST_IF(IsAndroid() && IsQualcomm());
-
constexpr uint32_t kQueryCount = 2;
// Write timestamp with different query indexes
@@ -1035,9 +1032,6 @@
// the issue is fixed.
DAWN_SUPPRESS_TEST_IF(IsWindows() && IsVulkan() && IsIntel());
- // TODO(dawn:1549) Fails on Qualcomm-based Android devices.
- DAWN_SUPPRESS_TEST_IF(IsAndroid() && IsQualcomm());
-
wgpu::QuerySet querySet = CreateQuerySetForTimestamp(2);
TestTimestampWritesOnRenderPass({{querySet, 0, wgpu::RenderPassTimestampLocation::Beginning},
{querySet, 1, wgpu::RenderPassTimestampLocation::End}},
@@ -1053,9 +1047,6 @@
// the issue is fixed.
DAWN_SUPPRESS_TEST_IF(IsWindows() && IsVulkan() && IsIntel());
- // TODO(dawn:1549) Fails on Qualcomm-based Android devices.
- DAWN_SUPPRESS_TEST_IF(IsAndroid() && IsQualcomm());
-
wgpu::QuerySet querySet = CreateQuerySetForTimestamp(2);
TestTimestampWritesOnRenderPass({{querySet, 0, wgpu::RenderPassTimestampLocation::Beginning},
{querySet, 1, wgpu::RenderPassTimestampLocation::End}},