dawn::native: Put error message in FailedCreation device loss event.
This will help debug cases where the device fails creation, with more
than just "Failed creation." which isn't very explicit.
Bug: 364384943
Change-Id: I791a95aa6870ff3f5d4523a32dd9ac483dfe5dbe
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/208414
Commit-Queue: Loko Kung <lokokung@google.com>
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
diff --git a/src/dawn/native/Adapter.cpp b/src/dawn/native/Adapter.cpp
index f821e52..eebd22c 100644
--- a/src/dawn/native/Adapter.cpp
+++ b/src/dawn/native/Adapter.cpp
@@ -332,13 +332,17 @@
DAWN_ASSERT(descriptor != nullptr);
Ref<DeviceBase::DeviceLostEvent> lostEvent = DeviceBase::DeviceLostEvent::Create(descriptor);
-
auto result = CreateDeviceInternal(descriptor, lostEvent);
+
+ // Catch any errors to directly complete the device lost event with the error message.
if (result.IsError()) {
+ auto error = result.AcquireError();
lostEvent->mReason = wgpu::DeviceLostReason::FailedCreation;
- lostEvent->mMessage = "Failed to create device.";
+ lostEvent->mMessage = "Failed to create device:\n" + error->GetFormattedMessage();
mInstance->GetEventManager()->SetFutureReady(lostEvent.Get());
+ return {lostEvent, std::move(error)};
}
+
return {lostEvent, std::move(result)};
}