// Copyright 2019 The Dawn Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include "dawn_native/vulkan/AdapterVk.h" #include "dawn_native/vulkan/BackendVk.h" #include "dawn_native/vulkan/DeviceVk.h" namespace dawn_native { namespace vulkan { Adapter::Adapter(Backend* backend, VkPhysicalDevice physicalDevice) : AdapterBase(backend->GetInstance(), BackendType::Vulkan), mPhysicalDevice(physicalDevice), mBackend(backend) { } const VulkanDeviceInfo& Adapter::GetDeviceInfo() const { return mDeviceInfo; } VkPhysicalDevice Adapter::GetPhysicalDevice() const { return mPhysicalDevice; } Backend* Adapter::GetBackend() const { return mBackend; } MaybeError Adapter::Initialize() { DAWN_TRY_ASSIGN(mDeviceInfo, GatherDeviceInfo(*this)); mPCIInfo.deviceId = mDeviceInfo.properties.deviceID; mPCIInfo.vendorId = mDeviceInfo.properties.vendorID; mPCIInfo.name = mDeviceInfo.properties.deviceName; return {}; } ResultOrError Adapter::CreateDeviceImpl() { std::unique_ptr device = std::make_unique(this); DAWN_TRY(device->Initialize()); return device.release(); } }} // namespace dawn_native::vulkan