Remove dawn::native::Adapter methods that duplicate wgpu::Adapter ones
This CL removes the following dawn::native::Adapter methods because they
exist already in a way in wgpu::Adapter:
- GetInfo(wgpu::AdapterInfo* info)
- GetInfo(WGPUAdapterInfo* info)
- std::vector<const char*> GetSupportedFeatures()
- wgpu::ConvertibleStatus GetLimits(WGPUSupportedLimits* limits)
Bug: 347047627
Change-Id: I9af2c74d8bf2511992241a00b4b58f4f1696f057
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/212134
Reviewed-by: Loko Kung <lokokung@google.com>
Commit-Queue: Fr <beaufort.francois@gmail.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/include/dawn/native/DawnNative.h b/include/dawn/native/DawnNative.h
index b98913f..b63a7c4 100644
--- a/include/dawn/native/DawnNative.h
+++ b/include/dawn/native/DawnNative.h
@@ -89,13 +89,6 @@
Adapter(const Adapter& other);
Adapter& operator=(const Adapter& other);
- // TODO(crbug.com/347047627): These methods are historical duplicates of
- // those in webgpu_cpp.h. Update uses of these methods and remove them.
- wgpu::Status GetInfo(wgpu::AdapterInfo* info) const;
- wgpu::Status GetInfo(WGPUAdapterInfo* info) const;
- std::vector<const char*> GetSupportedFeatures() const;
- wgpu::ConvertibleStatus GetLimits(WGPUSupportedLimits* limits) const;
-
void SetUseTieredLimits(bool useTieredLimits);
// Check that the Adapter is able to support importing external images. This is necessary
diff --git a/src/dawn/fuzzers/DawnWireServerAndD3D12BackendFuzzer.cpp b/src/dawn/fuzzers/DawnWireServerAndD3D12BackendFuzzer.cpp
index ad40a45..a29f877 100644
--- a/src/dawn/fuzzers/DawnWireServerAndD3D12BackendFuzzer.cpp
+++ b/src/dawn/fuzzers/DawnWireServerAndD3D12BackendFuzzer.cpp
@@ -25,10 +25,7 @@
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#include <vector>
-
#include "DawnWireServerFuzzer.h"
-#include "dawn/native/DawnNative.h"
#include "testing/libfuzzer/libfuzzer_exports.h"
extern "C" int LLVMFuzzerInitialize(int* argc, char*** argv) {
@@ -38,7 +35,7 @@
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
return DawnWireServerFuzzer::Run(
data, size,
- [](const dawn::native::Adapter& adapter) {
+ [](const wgpu::Adapter& adapter) {
wgpu::AdapterInfo info;
adapter.GetInfo(&info);
return info.backendType == wgpu::BackendType::D3D12 &&
diff --git a/src/dawn/fuzzers/DawnWireServerAndFrontendFuzzer.cpp b/src/dawn/fuzzers/DawnWireServerAndFrontendFuzzer.cpp
index 33f7e80..39f1fc7 100644
--- a/src/dawn/fuzzers/DawnWireServerAndFrontendFuzzer.cpp
+++ b/src/dawn/fuzzers/DawnWireServerAndFrontendFuzzer.cpp
@@ -25,11 +25,7 @@
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#include <vector>
-
#include "DawnWireServerFuzzer.h"
-#include "dawn/common/Assert.h"
-#include "dawn/native/DawnNative.h"
#include "testing/libfuzzer/libfuzzer_exports.h"
extern "C" int LLVMFuzzerInitialize(int* argc, char*** argv) {
@@ -39,7 +35,7 @@
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
return DawnWireServerFuzzer::Run(
data, size,
- [](const dawn::native::Adapter& adapter) {
+ [](const wgpu::Adapter& adapter) {
wgpu::AdapterInfo info;
adapter.GetInfo(&info);
return info.backendType == wgpu::BackendType::Null;
diff --git a/src/dawn/fuzzers/DawnWireServerAndVulkanBackendFuzzer.cpp b/src/dawn/fuzzers/DawnWireServerAndVulkanBackendFuzzer.cpp
index 540e792..6b70205 100644
--- a/src/dawn/fuzzers/DawnWireServerAndVulkanBackendFuzzer.cpp
+++ b/src/dawn/fuzzers/DawnWireServerAndVulkanBackendFuzzer.cpp
@@ -25,11 +25,8 @@
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#include <vector>
-
#include "DawnWireServerFuzzer.h"
#include "dawn/common/GPUInfo.h"
-#include "dawn/native/DawnNative.h"
#include "testing/libfuzzer/libfuzzer_exports.h"
extern "C" int LLVMFuzzerInitialize(int* argc, char*** argv) {
@@ -39,7 +36,7 @@
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
return DawnWireServerFuzzer::Run(
data, size,
- [](const dawn::native::Adapter& adapter) {
+ [](const wgpu::Adapter& adapter) {
wgpu::AdapterInfo info;
adapter.GetInfo(&info);
diff --git a/src/dawn/fuzzers/DawnWireServerFuzzer.cpp b/src/dawn/fuzzers/DawnWireServerFuzzer.cpp
index cad2158..fc0d2aa 100644
--- a/src/dawn/fuzzers/DawnWireServerFuzzer.cpp
+++ b/src/dawn/fuzzers/DawnWireServerFuzzer.cpp
@@ -65,7 +65,7 @@
// We need this static function pointer to make AdapterSupported accessible in
// instanceRequestAdapter
-static bool (*sAdapterSupported)(const dawn::native::Adapter&) = nullptr;
+static bool (*sAdapterSupported)(const wgpu::Adapter&) = nullptr;
#if DAWN_PLATFORM_IS(WINDOWS) && defined(ADDRESS_SANITIZER)
static dawn::DynamicLib sVulkanLoader;
#endif
@@ -85,7 +85,7 @@
int DawnWireServerFuzzer::Run(const uint8_t* data,
size_t size,
- bool (*AdapterSupported)(const dawn::native::Adapter&),
+ bool (*AdapterSupported)(const wgpu::Adapter&),
bool supportsErrorInjection) {
std::unique_ptr<dawn::native::Instance> instance = std::make_unique<dawn::native::Instance>();
@@ -120,9 +120,11 @@
std::vector<dawn::native::Adapter> adapters =
dawn::native::Instance(reinterpret_cast<dawn::native::InstanceBase*>(cInstance))
.EnumerateAdapters();
- for (dawn::native::Adapter adapter : adapters) {
+ // TODO(347047627): Use a webgpu.h version of enumerateAdapters
+ for (dawn::native::Adapter nativeAdapter : adapters) {
+ WGPUAdapter cAdapter = nativeAdapter.Get();
+ wgpu::Adapter adapter = wgpu::Adapter::Acquire(cAdapter);
if (sAdapterSupported(adapter)) {
- WGPUAdapter cAdapter = adapter.Get();
dawn::native::GetProcs().adapterAddRef(cAdapter);
callback(WGPURequestAdapterStatus_Success, cAdapter, dawn::kEmptyOutputStringView,
userdata1, userdata2);
diff --git a/src/dawn/fuzzers/DawnWireServerFuzzer.h b/src/dawn/fuzzers/DawnWireServerFuzzer.h
index f28b8ba..ad050ff 100644
--- a/src/dawn/fuzzers/DawnWireServerFuzzer.h
+++ b/src/dawn/fuzzers/DawnWireServerFuzzer.h
@@ -33,19 +33,13 @@
#include <cstdint>
#include <functional>
-namespace dawn::native {
-
-class Adapter;
-
-} // namespace dawn::native
-
namespace DawnWireServerFuzzer {
int Initialize(int* argc, char*** argv);
int Run(const uint8_t* data,
size_t size,
- bool (*AdapterSupported)(const dawn::native::Adapter&),
+ bool (*AdapterSupported)(const wgpu::Adapter&),
bool supportsErrorInjection);
} // namespace DawnWireServerFuzzer
diff --git a/src/dawn/native/Adapter.cpp b/src/dawn/native/Adapter.cpp
index 2ea98ed..9968d8a 100644
--- a/src/dawn/native/Adapter.cpp
+++ b/src/dawn/native/Adapter.cpp
@@ -70,10 +70,6 @@
mUseTieredLimits = useTieredLimits;
}
-FeaturesSet AdapterBase::GetSupportedFeatures() const {
- return mSupportedFeatures;
-}
-
PhysicalDeviceBase* AdapterBase::GetPhysicalDevice() {
return mPhysicalDevice.Get();
}
diff --git a/src/dawn/native/Adapter.h b/src/dawn/native/Adapter.h
index bcf4a06..3110d6e 100644
--- a/src/dawn/native/Adapter.h
+++ b/src/dawn/native/Adapter.h
@@ -78,8 +78,6 @@
void SetUseTieredLimits(bool useTieredLimits);
- FeaturesSet GetSupportedFeatures() const;
-
// Return the underlying PhysicalDevice.
PhysicalDeviceBase* GetPhysicalDevice();
const PhysicalDeviceBase* GetPhysicalDevice() const;
diff --git a/src/dawn/native/DawnNative.cpp b/src/dawn/native/DawnNative.cpp
index 300c216..50cb4fb 100644
--- a/src/dawn/native/DawnNative.cpp
+++ b/src/dawn/native/DawnNative.cpp
@@ -89,27 +89,10 @@
return *this;
}
-wgpu::Status Adapter::GetInfo(wgpu::AdapterInfo* info) const {
- return GetInfo(reinterpret_cast<WGPUAdapterInfo*>(info));
-}
-
-wgpu::Status Adapter::GetInfo(WGPUAdapterInfo* info) const {
- return mImpl->APIGetInfo(FromAPI(info));
-}
-
WGPUAdapter Adapter::Get() const {
return ToAPI(mImpl);
}
-std::vector<const char*> Adapter::GetSupportedFeatures() const {
- FeaturesSet supportedFeaturesSet = mImpl->GetSupportedFeatures();
- return supportedFeaturesSet.GetEnabledFeatureNames();
-}
-
-wgpu::ConvertibleStatus Adapter::GetLimits(WGPUSupportedLimits* limits) const {
- return mImpl->APIGetLimits(FromAPI(limits));
-}
-
void Adapter::SetUseTieredLimits(bool useTieredLimits) {
mImpl->SetUseTieredLimits(useTieredLimits);
}
diff --git a/src/dawn/native/Features.cpp b/src/dawn/native/Features.cpp
index 7244d7b..1de0d85 100644
--- a/src/dawn/native/Features.cpp
+++ b/src/dawn/native/Features.cpp
@@ -407,18 +407,6 @@
return f != Feature::InvalidEnum && IsEnabled(f);
}
-std::vector<const char*> FeaturesSet::GetEnabledFeatureNames() const {
- std::vector<const char*> enabledFeatureNames(featuresBitSet.count());
-
- uint32_t index = 0;
- for (Feature feature : IterateBitSet(featuresBitSet)) {
- DAWN_ASSERT(feature != Feature::InvalidEnum);
- enabledFeatureNames[index] = kFeatureNameAndInfoList[feature].name;
- ++index;
- }
- return enabledFeatureNames;
-}
-
void FeaturesSet::ToSupportedFeatures(SupportedFeatures* supportedFeatures) const {
if (!supportedFeatures) {
return;
diff --git a/src/dawn/native/Features.h b/src/dawn/native/Features.h
index 915b137..fed32c0 100644
--- a/src/dawn/native/Features.h
+++ b/src/dawn/native/Features.h
@@ -31,8 +31,6 @@
#include <webgpu/webgpu_cpp.h>
#include <bitset>
-#include <string>
-#include <vector>
#include "dawn/common/ityp_bitset.h"
#include "dawn/native/DawnNative.h"
@@ -56,7 +54,6 @@
void EnableFeature(wgpu::FeatureName feature);
bool IsEnabled(Feature feature) const;
bool IsEnabled(wgpu::FeatureName feature) const;
- std::vector<const char*> GetEnabledFeatureNames() const;
void ToSupportedFeatures(SupportedFeatures* supportedFeatures) const;
};
diff --git a/src/dawn/node/binding/GPU.cpp b/src/dawn/node/binding/GPU.cpp
index 31c8e8d..6be78fc 100644
--- a/src/dawn/node/binding/GPU.cpp
+++ b/src/dawn/node/binding/GPU.cpp
@@ -202,12 +202,17 @@
DawnTogglesDescriptor togglesDescriptor = togglesLoader.GetDescriptor();
nativeOptions.nextInChain = &togglesDescriptor;
- auto adapters = instance_->EnumerateAdapters(&nativeOptions);
- if (adapters.empty()) {
+ auto nativeAdapters = instance_->EnumerateAdapters(&nativeOptions);
+ if (nativeAdapters.empty()) {
promise.Resolve({});
return promise;
}
+ std::vector<wgpu::Adapter> adapters(nativeAdapters.size());
+ for (uint32_t i = 0; i < nativeAdapters.size(); ++i) {
+ adapters[i] = wgpu::Adapter(nativeAdapters[i].Get());
+ }
+
// Check for specific adapter device name.
// This was AdapterProperties.name, now it is AdapterInfo.device.
std::string deviceName;
@@ -215,21 +220,23 @@
deviceName = *f;
}
- dawn::native::Adapter* adapter = nullptr;
- for (auto& a : adapters) {
+ dawn::native::Adapter* nativeAdapter = nullptr;
+ AdapterInfo* nativeAdapterInfo = nullptr;
+ for (uint32_t i = 0; i < nativeAdapters.size(); ++i) {
wgpu::AdapterInfo info;
- a.GetInfo(&info);
+ adapters[i].GetInfo(&info);
if (!deviceName.empty() &&
std::string_view(info.device).find(deviceName) == std::string::npos) {
continue;
}
- adapter = &a;
+ nativeAdapter = &nativeAdapters[i];
+ nativeAdapterInfo = &info;
break;
}
- if (!adapter) {
+ if (!nativeAdapter) {
std::stringstream msg;
if (!forceBackend.empty() || deviceName.empty()) {
msg << "no adapter ";
@@ -257,12 +264,10 @@
}
if (flags_.Get("verbose")) {
- wgpu::AdapterInfo info;
- adapter->GetInfo(&info);
- std::cout << "using GPU adapter: " << info.device << "\n";
+ std::cout << "using GPU adapter: " << nativeAdapterInfo->device << "\n";
}
- auto gpuAdapter = GPUAdapter::Create<GPUAdapter>(env, *adapter, flags_, async_);
+ auto gpuAdapter = GPUAdapter::Create<GPUAdapter>(env, *nativeAdapter, flags_, async_);
promise.Resolve(std::optional<interop::Interface<interop::GPUAdapter>>(gpuAdapter));
return promise;
}
diff --git a/src/dawn/node/binding/GPUAdapter.cpp b/src/dawn/node/binding/GPUAdapter.cpp
index 7da94ad..c56b8d6 100644
--- a/src/dawn/node/binding/GPUAdapter.cpp
+++ b/src/dawn/node/binding/GPUAdapter.cpp
@@ -85,12 +85,11 @@
GPUAdapter::GPUAdapter(dawn::native::Adapter a,
const Flags& flags,
std::shared_ptr<AsyncRunner> async)
- : adapter_(a), flags_(flags), async_(async) {}
+ : nativeAdapter_(a), adapter_(a.Get()), flags_(flags), async_(async) {}
interop::Interface<interop::GPUSupportedFeatures> GPUAdapter::getFeatures(Napi::Env env) {
- wgpu::Adapter wgpuAdapter = adapter_.Get();
wgpu::SupportedFeatures features{};
- wgpuAdapter.GetFeatures(&features);
+ adapter_.GetFeatures(&features);
return interop::GPUSupportedFeatures::Create<GPUSupportedFeatures>(env, env, features);
}
@@ -99,8 +98,6 @@
wgpu::DawnExperimentalSubgroupLimits subgroupLimits{};
wgpu::DawnExperimentalImmediateDataLimits immediateDataLimits{};
- wgpu::Adapter wgpuAdapter = adapter_.Get();
-
auto InsertInChain = [&](wgpu::ChainedStructOut* node) {
node->nextInChain = limits.nextInChain;
limits.nextInChain = node;
@@ -108,17 +105,17 @@
wgpu::ChainedStructOut** limitsListTail = &limits.nextInChain;
// Query the subgroup limits only if subgroups feature is available on the adapter.
- if (wgpuAdapter.HasFeature(FeatureName::Subgroups)) {
+ if (adapter_.HasFeature(FeatureName::Subgroups)) {
InsertInChain(&subgroupLimits);
}
// Query the immediate data limits only if ChromiumExperimentalImmediateData feature
// is available on adapter.
- if (wgpuAdapter.HasFeature(FeatureName::ChromiumExperimentalImmediateData)) {
+ if (adapter_.HasFeature(FeatureName::ChromiumExperimentalImmediateData)) {
InsertInChain(&immediateDataLimits);
}
- if (!wgpuAdapter.GetLimits(&limits)) {
+ if (!adapter_.GetLimits(&limits)) {
Napi::Error::New(env, "failed to get adapter limits").ThrowAsJavaScriptException();
}
@@ -133,13 +130,13 @@
}
bool GPUAdapter::getIsFallbackAdapter(Napi::Env) {
- WGPUAdapterInfo adapterInfo = {};
+ wgpu::AdapterInfo adapterInfo = {};
adapter_.GetInfo(&adapterInfo);
- return adapterInfo.adapterType == WGPUAdapterType_CPU;
+ return adapterInfo.adapterType == wgpu::AdapterType::CPU;
}
bool GPUAdapter::getIsCompatibilityMode(Napi::Env) {
- WGPUAdapterInfo adapterInfo = {};
+ wgpu::AdapterInfo adapterInfo = {};
adapter_.GetInfo(&adapterInfo);
return adapterInfo.compatibilityMode;
}
@@ -272,7 +269,7 @@
DawnTogglesDescriptor deviceTogglesDesc = togglesLoader.GetDescriptor();
desc.nextInChain = &deviceTogglesDesc;
- auto wgpu_device = adapter_.CreateDevice(&desc);
+ auto wgpu_device = nativeAdapter_.CreateDevice(&desc);
if (wgpu_device == nullptr) {
promise.Reject(binding::Errors::OperationError(env, "failed to create device"));
return promise;
diff --git a/src/dawn/node/binding/GPUAdapter.h b/src/dawn/node/binding/GPUAdapter.h
index f6f9219..e2c801a 100644
--- a/src/dawn/node/binding/GPUAdapter.h
+++ b/src/dawn/node/binding/GPUAdapter.h
@@ -56,7 +56,9 @@
bool getIsCompatibilityMode(Napi::Env) override;
private:
- dawn::native::Adapter adapter_;
+ // TODO(347047627): Remove nativeAdapter_ once we don't use CreateDevice.
+ dawn::native::Adapter nativeAdapter_;
+ wgpu::Adapter adapter_;
const Flags& flags_;
std::shared_ptr<AsyncRunner> async_;
diff --git a/src/dawn/tests/DawnTest.cpp b/src/dawn/tests/DawnTest.cpp
index 6bd0220..9e828f8 100644
--- a/src/dawn/tests/DawnTest.cpp
+++ b/src/dawn/tests/DawnTest.cpp
@@ -457,8 +457,10 @@
for (bool compatibilityMode : {false, true}) {
wgpu::RequestAdapterOptions adapterOptions;
adapterOptions.compatibilityMode = compatibilityMode;
- for (const native::Adapter& adapter :
+ // TODO(347047627): Use a webgpu.h version of enumerateAdapters
+ for (const native::Adapter& nativeAdapter :
instance->EnumerateAdapters(&adapterOptions)) {
+ wgpu::Adapter adapter = wgpu::Adapter(nativeAdapter.Get());
wgpu::AdapterInfo info;
adapter.GetInfo(&info);
@@ -476,7 +478,9 @@
for (bool compatibilityMode : {false, true}) {
wgpu::RequestAdapterOptions adapterOptions;
adapterOptions.compatibilityMode = compatibilityMode;
- for (const native::Adapter& adapter : instance->EnumerateAdapters(&adapterOptions)) {
+ // TODO(347047627): Use a webgpu.h version of enumerateAdapters
+ for (const native::Adapter& nativeAdapter : instance->EnumerateAdapters(&adapterOptions)) {
+ wgpu::Adapter adapter = wgpu::Adapter(nativeAdapter.Get());
wgpu::AdapterInfo info;
adapter.GetInfo(&info);
@@ -736,18 +740,23 @@
adapterOptions.compatibilityMode = gCurrentTest->mParam.adapterProperties.compatibilityMode;
// Find the adapter that exactly matches our adapter properties.
+ // TODO(347047627): Use a webgpu.h version of enumerateAdapters
const auto& adapters = gTestEnv->GetInstance()->EnumerateAdapters(&adapterOptions);
const auto& it =
std::find_if(adapters.begin(), adapters.end(), [&](const native::Adapter& candidate) {
- wgpu::AdapterInfo info;
- candidate.GetInfo(&info);
+ WGPUAdapterInfo info = {};
+ native::GetProcs().adapterGetInfo(candidate.Get(), &info);
const auto& param = gCurrentTest->mParam;
- return (param.adapterProperties.selected &&
- info.deviceID == param.adapterProperties.deviceID &&
- info.vendorID == param.adapterProperties.vendorID &&
- info.adapterType == param.adapterProperties.adapterType &&
- std::string_view(info.device) == param.adapterProperties.name);
+ bool result =
+ (param.adapterProperties.selected &&
+ info.deviceID == param.adapterProperties.deviceID &&
+ info.vendorID == param.adapterProperties.vendorID &&
+ info.adapterType == native::ToAPI(param.adapterProperties.adapterType) &&
+ std::string_view(info.device.data, info.device.length) ==
+ param.adapterProperties.name);
+ native::GetProcs().adapterInfoFreeMembers(info);
+ return result;
});
DAWN_ASSERT(it != adapters.end());
gCurrentTest->mBackendAdapter = *it;
@@ -990,6 +999,10 @@
return mParam.adapterProperties.compatibilityMode;
}
+bool DawnTestBase::IsCPU() const {
+ return mParam.adapterProperties.adapterType == wgpu::AdapterType::CPU;
+}
+
bool DawnTestBase::RunSuppressedTests() const {
return gTestEnv->RunSuppressedTests();
}
@@ -1120,7 +1133,8 @@
}
wgpu::SupportedLimits supportedLimits;
- mBackendAdapter.GetLimits(reinterpret_cast<WGPUSupportedLimits*>(&supportedLimits));
+ native::GetProcs().adapterGetLimits(mBackendAdapter.Get(),
+ reinterpret_cast<WGPUSupportedLimits*>(&supportedLimits));
wgpu::RequiredLimits requiredLimits = GetRequiredLimits(supportedLimits);
wgpu::DeviceDescriptor deviceDescriptor =
diff --git a/src/dawn/tests/DawnTest.h b/src/dawn/tests/DawnTest.h
index 2cf9fec..1757aa7 100644
--- a/src/dawn/tests/DawnTest.h
+++ b/src/dawn/tests/DawnTest.h
@@ -287,6 +287,7 @@
bool IsBackendValidationEnabled() const;
bool IsFullBackendValidationEnabled() const;
bool IsCompatibilityMode() const;
+ bool IsCPU() const;
bool RunSuppressedTests() const;
bool IsDXC() const;
diff --git a/src/dawn/tests/end2end/AdapterCreationTests.cpp b/src/dawn/tests/end2end/AdapterCreationTests.cpp
index 12dff71..7b72e0d 100644
--- a/src/dawn/tests/end2end/AdapterCreationTests.cpp
+++ b/src/dawn/tests/end2end/AdapterCreationTests.cpp
@@ -59,11 +59,13 @@
{
auto nativeInstance = std::make_unique<native::Instance>();
+ // TODO(347047627): Use a webgpu.h version of enumerateAdapters
for (native::Adapter& nativeAdapter : nativeInstance->EnumerateAdapters()) {
anyAdapterAvailable = true;
wgpu::AdapterInfo info;
- nativeAdapter.GetInfo(&info);
+ wgpu::Adapter adapter = wgpu::Adapter(nativeAdapter.Get());
+ adapter.GetInfo(&info);
if (info.compatibilityMode) {
continue;
}
diff --git a/src/dawn/tests/end2end/AdapterEnumerationTests.cpp b/src/dawn/tests/end2end/AdapterEnumerationTests.cpp
index a6206b2..5107759 100644
--- a/src/dawn/tests/end2end/AdapterEnumerationTests.cpp
+++ b/src/dawn/tests/end2end/AdapterEnumerationTests.cpp
@@ -68,7 +68,8 @@
adapterOptions.forceFallbackAdapter = true;
const auto& adapters = instance.EnumerateAdapters(&adapterOptions);
- for (const auto& adapter : adapters) {
+ for (const auto& nativeAdapter : adapters) {
+ wgpu::Adapter adapter = wgpu::Adapter(nativeAdapter.Get());
wgpu::AdapterInfo info;
adapter.GetInfo(&info);
@@ -86,7 +87,8 @@
adapterOptions.backendType = wgpu::BackendType::Vulkan;
const auto& adapters = instance.EnumerateAdapters(&adapterOptions);
- for (const auto& adapter : adapters) {
+ for (const auto& nativeAdapter : adapters) {
+ wgpu::Adapter adapter = wgpu::Adapter(nativeAdapter.Get());
wgpu::AdapterInfo info;
adapter.GetInfo(&info);
@@ -102,7 +104,8 @@
adapterOptions.backendType = wgpu::BackendType::D3D11;
const auto& adapters = instance.EnumerateAdapters(&adapterOptions);
- for (const auto& adapter : adapters) {
+ for (const auto& nativeAdapter : adapters) {
+ wgpu::Adapter adapter = wgpu::Adapter(nativeAdapter.Get());
wgpu::AdapterInfo info;
adapter.GetInfo(&info);
@@ -137,23 +140,25 @@
adapterOptions.backendType = wgpu::BackendType::D3D11;
adapterOptions.nextInChain = &luidOptions;
- const auto& adapters = instance.EnumerateAdapters(&adapterOptions);
- if (adapters.empty()) {
+ const auto& nativeAdapters = instance.EnumerateAdapters(&adapterOptions);
+ if (nativeAdapters.empty()) {
// Initialize of the backend may fail.
continue;
}
- ASSERT_EQ(adapters.size(), 1u);
+ ASSERT_EQ(nativeAdapters.size(), 1u);
+ wgpu::Adapter adapter = wgpu::Adapter(nativeAdapters[0].Get());
wgpu::AdapterInfo info;
- adapters[0].GetInfo(&info);
+ adapter.GetInfo(&info);
EXPECT_EQ(info.backendType, wgpu::BackendType::D3D11);
// Test that enumeration again yields the same adapter device.
- const auto& adaptersAgain = instance.EnumerateAdapters(&adapterOptions);
- ASSERT_EQ(adaptersAgain.size(), 1u);
+ const auto& nativeAdaptersAgain = instance.EnumerateAdapters(&adapterOptions);
+ ASSERT_EQ(nativeAdaptersAgain.size(), 1u);
+ wgpu::Adapter adapterAgain = wgpu::Adapter(nativeAdaptersAgain[0].Get());
wgpu::AdapterInfo infoAgain;
- adaptersAgain[0].GetInfo(&infoAgain);
+ adapterAgain.GetInfo(&infoAgain);
EXPECT_EQ(info.vendor, infoAgain.vendor);
EXPECT_EQ(info.architecture, infoAgain.architecture);
@@ -176,7 +181,8 @@
adapterOptions.backendType = wgpu::BackendType::D3D12;
const auto& adapters = instance.EnumerateAdapters(&adapterOptions);
- for (const auto& adapter : adapters) {
+ for (const auto& nativeAdapter : adapters) {
+ wgpu::Adapter adapter = wgpu::Adapter(nativeAdapter.Get());
wgpu::AdapterInfo info;
adapter.GetInfo(&info);
@@ -211,23 +217,25 @@
adapterOptions.backendType = wgpu::BackendType::D3D12;
adapterOptions.nextInChain = &luidOptions;
- const auto& adapters = instance.EnumerateAdapters(&adapterOptions);
- if (adapters.empty()) {
+ const auto& nativeAdapters = instance.EnumerateAdapters(&adapterOptions);
+ if (nativeAdapters.empty()) {
// Initialize of the backend may fail.
continue;
}
- ASSERT_EQ(adapters.size(), 1u);
+ ASSERT_EQ(nativeAdapters.size(), 1u);
+ wgpu::Adapter adapter = wgpu::Adapter(nativeAdapters[0].Get());
wgpu::AdapterInfo info;
- adapters[0].GetInfo(&info);
+ adapter.GetInfo(&info);
EXPECT_EQ(info.backendType, wgpu::BackendType::D3D12);
// Test that enumeration again yields the same adapter device.
- const auto& adaptersAgain = instance.EnumerateAdapters(&adapterOptions);
- ASSERT_EQ(adaptersAgain.size(), 1u);
+ const auto& nativeAdaptersAgain = instance.EnumerateAdapters(&adapterOptions);
+ ASSERT_EQ(nativeAdaptersAgain.size(), 1u);
+ wgpu::Adapter adaptersAgain = wgpu::Adapter(nativeAdaptersAgain[0].Get());
wgpu::AdapterInfo infoAgain;
- adaptersAgain[0].GetInfo(&infoAgain);
+ adaptersAgain.GetInfo(&infoAgain);
EXPECT_EQ(info.vendor, infoAgain.vendor);
EXPECT_EQ(info.architecture, infoAgain.architecture);
@@ -250,7 +258,8 @@
adapterOptions.backendType = wgpu::BackendType::Metal;
const auto& adapters = instance.EnumerateAdapters(&adapterOptions);
- for (const auto& adapter : adapters) {
+ for (const auto& nativeAdapter : adapters) {
+ wgpu::Adapter adapter = wgpu::Adapter(nativeAdapter.Get());
wgpu::AdapterInfo info;
adapter.GetInfo(&info);
@@ -271,7 +280,8 @@
{
const auto& adapters = instance.EnumerateAdapters(&adapterOptions);
metalAdapterCount = adapters.size();
- for (const auto& adapter : adapters) {
+ for (const auto& nativeAdapter : adapters) {
+ wgpu::Adapter adapter = wgpu::Adapter(nativeAdapter.Get());
wgpu::AdapterInfo info;
adapter.GetInfo(&info);
@@ -283,7 +293,8 @@
adapterOptions.backendType = wgpu::BackendType::Vulkan;
const auto& adapters = instance.EnumerateAdapters(&adapterOptions);
- for (const auto& adapter : adapters) {
+ for (const auto& nativeAdapter : adapters) {
+ wgpu::Adapter adapter = wgpu::Adapter(nativeAdapter.Get());
wgpu::AdapterInfo info;
adapter.GetInfo(&info);
@@ -297,7 +308,8 @@
const auto& adapters = instance.EnumerateAdapters(&adapterOptions);
uint32_t metalAdapterCount2 = adapters.size();
- for (const auto& adapter : adapters) {
+ for (const auto& nativeAdapter : adapters) {
+ wgpu::Adapter adapter = wgpu::Adapter(nativeAdapter.Get());
wgpu::AdapterInfo info;
adapter.GetInfo(&info);
diff --git a/src/dawn/tests/end2end/DeviceInitializationTests.cpp b/src/dawn/tests/end2end/DeviceInitializationTests.cpp
index 6191c8e..62eb0ff 100644
--- a/src/dawn/tests/end2end/DeviceInitializationTests.cpp
+++ b/src/dawn/tests/end2end/DeviceInitializationTests.cpp
@@ -87,7 +87,9 @@
std::vector<wgpu::AdapterInfo> availableAdapterInfo;
{
auto instance = std::make_unique<native::Instance>();
- for (const native::Adapter& adapter : instance->EnumerateAdapters()) {
+ // TODO(347047627): Use a webgpu.h version of enumerateAdapters
+ for (const native::Adapter& nativeAdapter : instance->EnumerateAdapters()) {
+ wgpu::Adapter adapter = wgpu::Adapter(nativeAdapter.Get());
wgpu::AdapterInfo info;
adapter.GetInfo(&info);
@@ -103,7 +105,9 @@
wgpu::Device device;
auto instance = std::make_unique<native::Instance>();
- for (native::Adapter& adapter : instance->EnumerateAdapters()) {
+ // TODO(347047627): Use a webgpu.h version of enumerateAdapters
+ for (native::Adapter& nativeAdapter : instance->EnumerateAdapters()) {
+ wgpu::Adapter adapter = wgpu::Adapter(nativeAdapter.Get());
wgpu::AdapterInfo info;
adapter.GetInfo(&info);
@@ -111,7 +115,7 @@
info.adapterType == desiredInfo.adapterType &&
info.backendType == desiredInfo.backendType) {
// Create the device, destroy the instance, and break out of the loop.
- device = wgpu::Device::Acquire(adapter.CreateDevice());
+ device = wgpu::Device::Acquire(nativeAdapter.CreateDevice());
instance.reset();
break;
}
@@ -131,7 +135,9 @@
std::vector<wgpu::AdapterInfo> availableAdapterInfo;
{
auto instance = std::make_unique<native::Instance>();
- for (const native::Adapter& adapter : instance->EnumerateAdapters()) {
+ // TODO(347047627): Use a webgpu.h version of enumerateAdapters
+ for (const native::Adapter& nativeAdapter : instance->EnumerateAdapters()) {
+ wgpu::Adapter adapter = wgpu::Adapter(nativeAdapter.Get());
wgpu::AdapterInfo info;
adapter.GetInfo(&info);
@@ -146,9 +152,10 @@
wgpu::Adapter adapter;
auto instance = std::make_unique<native::Instance>();
+ // TODO(347047627): Use a webgpu.h version of enumerateAdapters
for (native::Adapter& nativeAdapter : instance->EnumerateAdapters()) {
wgpu::AdapterInfo info;
- nativeAdapter.GetInfo(&info);
+ wgpu::Adapter(nativeAdapter.Get()).GetInfo(&info);
if (info.deviceID == desiredInfo.deviceID && info.vendorID == desiredInfo.vendorID &&
info.adapterType == desiredInfo.adapterType &&
diff --git a/src/dawn/tests/perf_tests/DawnPerfTest.h b/src/dawn/tests/perf_tests/DawnPerfTest.h
index b07ee24..53aadda 100644
--- a/src/dawn/tests/perf_tests/DawnPerfTest.h
+++ b/src/dawn/tests/perf_tests/DawnPerfTest.h
@@ -139,9 +139,7 @@
void SetUp() override {
DawnTestWithParams<Params>::SetUp();
- wgpu::AdapterInfo info;
- this->GetAdapter().GetInfo(&info);
- DAWN_TEST_UNSUPPORTED_IF(info.adapterType == wgpu::AdapterType::CPU);
+ DAWN_TEST_UNSUPPORTED_IF(this->IsCPU());
if (mSupportsTimestampQuery) {
InitializeGPUTimer();