| // Copyright 2019 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "gpu/config/vulkan_info.h" |
| |
| #include "gpu/ipc/common/vulkan_info.mojom.h" |
| #include "gpu/ipc/common/vulkan_info_mojom_traits.h" |
| |
| namespace gpu { |
| |
| VulkanPhysicalDeviceInfo::VulkanPhysicalDeviceInfo() = default; |
| VulkanPhysicalDeviceInfo::VulkanPhysicalDeviceInfo( |
| const VulkanPhysicalDeviceInfo& other) = default; |
| VulkanPhysicalDeviceInfo::~VulkanPhysicalDeviceInfo() = default; |
| VulkanPhysicalDeviceInfo& VulkanPhysicalDeviceInfo::operator=( |
| const VulkanPhysicalDeviceInfo& info) = default; |
| |
| VulkanInfo::VulkanInfo() = default; |
| VulkanInfo::~VulkanInfo() = default; |
| |
| VulkanInfo::VulkanInfo(const VulkanInfo& other) { |
| *this = other; |
| } |
| |
| VulkanInfo& VulkanInfo::operator=(const VulkanInfo& other) { |
| api_version = other.api_version; |
| used_api_version = other.used_api_version; |
| instance_extensions = other.instance_extensions; |
| instance_layers = other.instance_layers; |
| physical_devices = other.physical_devices; |
| SetEnabledInstanceExtensions(other.enabled_instance_extensions); |
| return *this; |
| } |
| |
| std::vector<uint8_t> VulkanInfo::Serialize() const { |
| return gpu::mojom::VulkanInfo::Serialize(this); |
| } |
| |
| void VulkanInfo::SetEnabledInstanceExtensions( |
| const std::vector<const char*>& extensions) { |
| enabled_instance_extensions.clear(); |
| for (const auto* const extension : extensions) { |
| bool found = false; |
| for (const auto& instance_extension : instance_extensions) { |
| if (strcmp(extension, instance_extension.extensionName) == 0) { |
| enabled_instance_extensions.push_back(instance_extension.extensionName); |
| found = true; |
| break; |
| } |
| } |
| if (!found) { |
| LOG(ERROR) << "The enabled extension '" << extension |
| << "' is not in instance_extensions!"; |
| } |
| } |
| } |
| |
| void VulkanInfo::SetEnabledInstanceExtensions( |
| const std::vector<base::StringPiece>& extensions) { |
| enabled_instance_extensions.clear(); |
| for (const auto& extension : extensions) { |
| bool found = false; |
| for (const auto& instance_extension : instance_extensions) { |
| if (extension == instance_extension.extensionName) { |
| enabled_instance_extensions.push_back(instance_extension.extensionName); |
| found = true; |
| break; |
| } |
| } |
| if (!found) { |
| LOG(ERROR) << "The enabled extension '" << extension |
| << "' is not in instance_extensions!"; |
| } |
| } |
| } |
| |
| } // namespace gpu |