| // 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 <vulkan/vulkan_core.h> |
| #include <vector> |
| |
| #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<VkExtensionProperties> extensions; |
| |
| VkPhysicalDeviceFeatures features = {}; |
| // Extended physical device features: |
| bool feature_sampler_ycbcr_conversion = false; |
| bool feature_protected_memory = false; |
| |
| std::vector<VkQueueFamilyProperties> queue_families; |
| }; |
| |
| class GPU_EXPORT VulkanInfo { |
| public: |
| VulkanInfo(); |
| VulkanInfo(const VulkanInfo& other); |
| ~VulkanInfo(); |
| VulkanInfo& operator=(const VulkanInfo& other); |
| |
| std::vector<uint8_t> Serialize() const; |
| |
| void SetEnabledInstanceExtensions(const std::vector<const char*>& extensions); |
| void SetEnabledInstanceExtensions( |
| const std::vector<base::StringPiece>& extensions); |
| |
| uint32_t api_version = VK_MAKE_VERSION(1, 0, 0); |
| uint32_t used_api_version = VK_MAKE_VERSION(1, 0, 0); |
| std::vector<VkExtensionProperties> instance_extensions; |
| std::vector<const char*> enabled_instance_extensions; |
| std::vector<VkLayerProperties> instance_layers; |
| std::vector<VulkanPhysicalDeviceInfo> physical_devices; |
| }; |
| |
| } // namespace gpu |
| |
| #endif // GPU_CONFIG_VULKAN_INFO_H_ |