Fix unittests which construct Instance incorrectly
Several unittests called native::InstanceBase::Create instead of
native::APICreateInstance. Doing so meant the external refcount and the
internal refcount got out of sync such that the internal refcount
reached 0 before the external refcount, and WillDropLastExternalRef was
never called.
Bug: dawn:1987
Change-Id: I1b16fbfeb5995604df0dbbcbcf656b3f17a61c1c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/150584
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/dawn/tests/unittests/FeatureTests.cpp b/src/dawn/tests/unittests/FeatureTests.cpp
index 99c9e97..2586099 100644
--- a/src/dawn/tests/unittests/FeatureTests.cpp
+++ b/src/dawn/tests/unittests/FeatureTests.cpp
@@ -27,7 +27,7 @@
public:
FeatureTests()
: testing::Test(),
- mInstanceBase(native::InstanceBase::Create()),
+ mInstanceBase(native::APICreateInstance(nullptr)),
mPhysicalDevice(mInstanceBase.Get()),
mUnsafePhysicalDevice(mInstanceBase.Get()),
mAdapterBase(&mPhysicalDevice,
diff --git a/src/dawn/tests/unittests/GetProcAddressTests.cpp b/src/dawn/tests/unittests/GetProcAddressTests.cpp
index 45339f6..92c76c1 100644
--- a/src/dawn/tests/unittests/GetProcAddressTests.cpp
+++ b/src/dawn/tests/unittests/GetProcAddressTests.cpp
@@ -56,7 +56,7 @@
public:
GetProcAddressTests()
: testing::TestWithParam<DawnFlavor>(),
- mNativeInstance(native::InstanceBase::Create()),
+ mNativeInstance(native::APICreateInstance(nullptr)),
mAdapterBase(AcquireRef(new native::null::PhysicalDevice(mNativeInstance.Get())),
native::FeatureLevel::Core,
native::TogglesState(native::ToggleStage::Adapter),
diff --git a/src/dawn/tests/unittests/PerThreadProcTests.cpp b/src/dawn/tests/unittests/PerThreadProcTests.cpp
index d1372c7..4b18962 100644
--- a/src/dawn/tests/unittests/PerThreadProcTests.cpp
+++ b/src/dawn/tests/unittests/PerThreadProcTests.cpp
@@ -29,7 +29,7 @@
class PerThreadProcTests : public testing::Test {
public:
PerThreadProcTests()
- : mNativeInstance(native::InstanceBase::Create()),
+ : mNativeInstance(native::APICreateInstance(nullptr)),
mAdapterBase(AcquireRef(new native::null::PhysicalDevice(mNativeInstance.Get())),
native::FeatureLevel::Core,
native::TogglesState(native::ToggleStage::Adapter),
diff --git a/src/dawn/tests/unittests/native/mocks/DeviceMock.cpp b/src/dawn/tests/unittests/native/mocks/DeviceMock.cpp
index 62c4ccb..ce0cf2e 100644
--- a/src/dawn/tests/unittests/native/mocks/DeviceMock.cpp
+++ b/src/dawn/tests/unittests/native/mocks/DeviceMock.cpp
@@ -14,6 +14,7 @@
#include "dawn/tests/unittests/native/mocks/DeviceMock.h"
+#include "dawn/native/Instance.h"
#include "dawn/tests/unittests/native/mocks/BindGroupLayoutMock.h"
#include "dawn/tests/unittests/native/mocks/BindGroupMock.h"
#include "dawn/tests/unittests/native/mocks/BufferMock.h"
@@ -34,7 +35,7 @@
using ::testing::WithArgs;
DeviceMock::DeviceMock() {
- mInstance = InstanceBase::Create();
+ mInstance = APICreateInstance(nullptr);
// Set all default creation functions to return nice mock objects.
ON_CALL(*this, CreateBindGroupImpl)