Fix backend Device leak in dawn_end2end_tests harness with the wire
Bug: dawn:158
Change-Id: I248ba66864d03c3366fc077fd89824a1233a230e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/7520
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
diff --git a/src/tests/DawnTest.cpp b/src/tests/DawnTest.cpp
index e3752be..9c9ab28 100644
--- a/src/tests/DawnTest.cpp
+++ b/src/tests/DawnTest.cpp
@@ -203,6 +203,12 @@
swapchain = dawn::SwapChain();
device = dawn::Device();
+ mWireClient = nullptr;
+ mWireServer = nullptr;
+ if (gTestEnv->UsesWire()) {
+ backendProcs.deviceRelease(backendDevice);
+ }
+
dawnSetProcs(nullptr);
}
@@ -301,7 +307,6 @@
mPCIInfo = backendAdapter.GetPCIInfo();
- DawnDevice backendDevice;
const char* forceEnabledWorkaround = GetParam().forceEnabledWorkaround;
if (forceEnabledWorkaround != nullptr) {
ASSERT(gTestEnv->GetInstance()->GetToggleInfo(forceEnabledWorkaround) != nullptr);
@@ -311,7 +316,7 @@
backendDevice = backendAdapter.CreateDevice(nullptr);
}
- DawnProcTable backendProcs = dawn_native::GetProcs();
+ backendProcs = dawn_native::GetProcs();
// Get the test window and create the device using it (esp. for OpenGL)
GLFWwindow* testWindow = gTestEnv->GetWindowForBackend(backendType);
diff --git a/src/tests/DawnTest.h b/src/tests/DawnTest.h
index 591bd5c..e31ec2e 100644
--- a/src/tests/DawnTest.h
+++ b/src/tests/DawnTest.h
@@ -157,6 +157,9 @@
dawn::Queue queue;
dawn::SwapChain swapchain;
+ DawnProcTable backendProcs = {};
+ DawnDevice backendDevice = nullptr;
+
// Helper methods to implement the EXPECT_ macros
std::ostringstream& AddBufferExpectation(const char* file,
int line,