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)