Commit f9a00aac authored by Peng Huang's avatar Peng Huang Committed by Commit Bot

VulkanPhysicalDeviceInfo: add device extensions.

Bug: none
Change-Id: I09d906ed6d642e7a819b75d5b36715c5677387e9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2010181Reviewed-by: default avatarVasiliy Telezhnikov <vasilyt@chromium.org>
Reviewed-by: default avatarKen Buchanan <kenrb@chromium.org>
Commit-Queue: Peng Huang <penghuang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#733450}
parent 1048d1d9
......@@ -26,6 +26,7 @@ class GPU_EXPORT VulkanPhysicalDeviceInfo {
VkPhysicalDevice device = VK_NULL_HANDLE;
VkPhysicalDeviceProperties properties = {};
std::vector<VkExtensionProperties> extensions;
std::vector<VkLayerProperties> layers;
VkPhysicalDeviceFeatures features = {};
......
......@@ -9,6 +9,7 @@ import "gpu/ipc/common/vulkan_types.mojom";
struct VulkanPhysicalDeviceInfo {
VkPhysicalDeviceProperties properties;
array<VkExtensionProperties> extensions;
array<VkLayerProperties> layers;
VkPhysicalDeviceFeatures features;
bool feature_sampler_ycbcr_conversion;
......
......@@ -21,6 +21,11 @@ struct StructTraits<gpu::mojom::VulkanPhysicalDeviceInfoDataView,
return input.properties;
}
static const std::vector<VkExtensionProperties>& extensions(
const gpu::VulkanPhysicalDeviceInfo& input) {
return input.extensions;
}
static const std::vector<VkLayerProperties>& layers(
const gpu::VulkanPhysicalDeviceInfo& input) {
return input.layers;
......@@ -50,6 +55,8 @@ struct StructTraits<gpu::mojom::VulkanPhysicalDeviceInfoDataView,
gpu::VulkanPhysicalDeviceInfo* out) {
if (!data.ReadProperties(&out->properties))
return false;
if (!data.ReadExtensions(&out->extensions))
return false;
if (!data.ReadLayers(&out->layers))
return false;
if (!data.ReadFeatures(&out->features))
......
......@@ -30,6 +30,7 @@ VULKAN_INSTANCE_FUNCTIONS = [
'functions': [
'vkCreateDevice',
'vkDestroyInstance',
'vkEnumerateDeviceExtensionProperties',
'vkEnumerateDeviceLayerProperties',
'vkEnumeratePhysicalDevices',
'vkGetDeviceProcAddr',
......
......@@ -88,6 +88,16 @@ bool VulkanFunctionPointers::BindInstanceFunctionPointers(
return false;
}
vkEnumerateDeviceExtensionPropertiesFn =
reinterpret_cast<PFN_vkEnumerateDeviceExtensionProperties>(
vkGetInstanceProcAddrFn(vk_instance,
"vkEnumerateDeviceExtensionProperties"));
if (!vkEnumerateDeviceExtensionPropertiesFn) {
DLOG(WARNING) << "Failed to bind vulkan entrypoint: "
<< "vkEnumerateDeviceExtensionProperties";
return false;
}
vkEnumerateDeviceLayerPropertiesFn =
reinterpret_cast<PFN_vkEnumerateDeviceLayerProperties>(
vkGetInstanceProcAddrFn(vk_instance,
......
......@@ -73,6 +73,8 @@ struct VulkanFunctionPointers {
// Instance functions
PFN_vkCreateDevice vkCreateDeviceFn = nullptr;
PFN_vkDestroyInstance vkDestroyInstanceFn = nullptr;
PFN_vkEnumerateDeviceExtensionProperties
vkEnumerateDeviceExtensionPropertiesFn = nullptr;
PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerPropertiesFn =
nullptr;
PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevicesFn = nullptr;
......@@ -228,6 +230,8 @@ struct VulkanFunctionPointers {
// Instance functions
#define vkCreateDevice gpu::GetVulkanFunctionPointers()->vkCreateDeviceFn
#define vkDestroyInstance gpu::GetVulkanFunctionPointers()->vkDestroyInstanceFn
#define vkEnumerateDeviceExtensionProperties \
gpu::GetVulkanFunctionPointers()->vkEnumerateDeviceExtensionPropertiesFn
#define vkEnumerateDeviceLayerProperties \
gpu::GetVulkanFunctionPointers()->vkEnumerateDeviceLayerPropertiesFn
#define vkEnumeratePhysicalDevices \
......
......@@ -272,6 +272,18 @@ void VulkanInstance::CollectInfo() {
vkGetPhysicalDeviceProperties(device, &info.properties);
count = 0;
result = vkEnumerateDeviceExtensionProperties(
device, nullptr /* pLayerName */, &count, nullptr);
DLOG_IF(ERROR, result != VK_SUCCESS)
<< "vkEnumerateDeviceExtensionProperties failed: " << result;
info.extensions.resize(count);
result = vkEnumerateDeviceExtensionProperties(
device, nullptr /* pLayerName */, &count, info.extensions.data());
DLOG_IF(ERROR, result != VK_SUCCESS)
<< "vkEnumerateDeviceExtensionProperties failed: " << result;
count = 0;
result = vkEnumerateDeviceLayerProperties(device, &count, nullptr);
DLOG_IF(ERROR, result != VK_SUCCESS)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment