Instance: Only discover default adapters once.
BUG=dawn:109
Change-Id: I9e54550dc8d3cdea289b3ad529a69a4cf3d5a35b
Reviewed-on: https://dawn-review.googlesource.com/c/5040
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn_native/Instance.cpp b/src/dawn_native/Instance.cpp
index 2f7566c..6786f7f 100644
--- a/src/dawn_native/Instance.cpp
+++ b/src/dawn_native/Instance.cpp
@@ -54,6 +54,10 @@
void InstanceBase::DiscoverDefaultAdapters() {
EnsureBackendConnections();
+ if (mDiscoveredDefaultAdapters) {
+ return;
+ }
+
// Query and merge all default adapters for all backends
for (std::unique_ptr<BackendConnection>& backend : mBackends) {
std::vector<std::unique_ptr<AdapterBase>> backendAdapters =
@@ -65,6 +69,8 @@
mAdapters.push_back(std::move(adapter));
}
}
+
+ mDiscoveredDefaultAdapters = true;
}
// This is just a wrapper around the real logic that uses Error.h error handling.
diff --git a/src/dawn_native/Instance.h b/src/dawn_native/Instance.h
index 835d51d..895f710 100644
--- a/src/dawn_native/Instance.h
+++ b/src/dawn_native/Instance.h
@@ -50,6 +50,7 @@
MaybeError DiscoverAdaptersInternal(const AdapterDiscoveryOptionsBase* options);
bool mBackendsConnected = false;
+ bool mDiscoveredDefaultAdapters = false;
std::vector<std::unique_ptr<BackendConnection>> mBackends;
std::vector<std::unique_ptr<AdapterBase>> mAdapters;