// 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. #ifndef GPU_CONFIG_VULKAN_INFO_H_ #define GPU_CONFIG_VULKAN_INFO_H_ #include #include #include "base/strings/string_piece.h" #include "gpu/gpu_export.h" #include "ui/gfx/extension_set.h" namespace gpu { class GPU_EXPORT VulkanPhysicalDeviceInfo { public: VulkanPhysicalDeviceInfo(); VulkanPhysicalDeviceInfo(const VulkanPhysicalDeviceInfo& other); ~VulkanPhysicalDeviceInfo(); VulkanPhysicalDeviceInfo& operator=(const VulkanPhysicalDeviceInfo& other); // This is a local variable in GPU process, it will not be sent via IPC. VkPhysicalDevice device = VK_NULL_HANDLE; VkPhysicalDeviceProperties properties = {}; VkPhysicalDeviceDriverProperties driver_properties = {}; std::vector extensions; VkPhysicalDeviceFeatures features = {}; // Extended physical device features: bool feature_sampler_ycbcr_conversion = false; bool feature_protected_memory = false; std::vector queue_families; }; class GPU_EXPORT VulkanInfo { public: VulkanInfo(); VulkanInfo(const VulkanInfo& other); ~VulkanInfo(); VulkanInfo& operator=(const VulkanInfo& other); std::vector Serialize() const; void SetEnabledInstanceExtensions(const std::vector& extensions); void SetEnabledInstanceExtensions( const std::vector& extensions); uint32_t api_version = VK_MAKE_VERSION(1, 0, 0); uint32_t used_api_version = VK_MAKE_VERSION(1, 0, 0); std::vector instance_extensions; std::vector enabled_instance_extensions; std::vector instance_layers; std::vector physical_devices; }; } // namespace gpu #endif // GPU_CONFIG_VULKAN_INFO_H_