diff options
Diffstat (limited to 'chromium/gpu/config/vulkan_info.h')
-rw-r--r-- | chromium/gpu/config/vulkan_info.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/chromium/gpu/config/vulkan_info.h b/chromium/gpu/config/vulkan_info.h new file mode 100644 index 00000000000..57b951ef349 --- /dev/null +++ b/chromium/gpu/config/vulkan_info.h @@ -0,0 +1,62 @@ +// 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.h> +#include <vector> + +#include "base/macros.h" +#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 = {}; + std::vector<VkLayerProperties> layers; + + 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_ |