Move drm vulkan usage from extension to core.
The extension "VK_KHR_external_fence_capabilities" has been moved into core but implementations might not exist as an alias without the extension being enabled. By moving to core we avoid this potential issue that arises when using the flag 'VulkanFromAngle' which does not respect the 'required_extensions' parameters. Low-Coverage-Reason: HARD_TO_TEST Bug: b/317209177 Change-Id: Ifb953f754acb41fb2bc6c61ac7b948271be5d7e0 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5190327 Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org> Commit-Queue: Peter McNeeley <petermcneeley@chromium.org> Cr-Commit-Position: refs/heads/main@{#1246501}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
23adc37753
commit
b74c20456e
ui/ozone/platform/drm/gpu
@ -26,26 +26,25 @@ bool VulkanImplementationGbm::InitializeVulkanInstance(bool using_surface) {
|
||||
DLOG_IF(ERROR, using_surface) << "VK_KHR_surface is not supported.";
|
||||
|
||||
std::vector<const char*> required_extensions = {
|
||||
"VK_KHR_external_fence_capabilities",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
};
|
||||
if (!vulkan_instance_.Initialize(base::FilePath("libvulkan.so.1"),
|
||||
required_extensions, {})) {
|
||||
return false;
|
||||
}
|
||||
|
||||
vkGetPhysicalDeviceExternalFencePropertiesKHR_ =
|
||||
reinterpret_cast<PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR>(
|
||||
vkGetInstanceProcAddr(
|
||||
vulkan_instance_.vk_instance(),
|
||||
"vkGetPhysicalDeviceExternalFencePropertiesKHR"));
|
||||
if (!vkGetPhysicalDeviceExternalFencePropertiesKHR_)
|
||||
vkGetPhysicalDeviceExternalFenceProperties_ =
|
||||
reinterpret_cast<PFN_vkGetPhysicalDeviceExternalFenceProperties>(
|
||||
vkGetInstanceProcAddr(vulkan_instance_.vk_instance(),
|
||||
"vkGetPhysicalDeviceExternalFenceProperties"));
|
||||
if (!vkGetPhysicalDeviceExternalFenceProperties_) {
|
||||
return false;
|
||||
}
|
||||
|
||||
vkGetFenceFdKHR_ = reinterpret_cast<PFN_vkGetFenceFdKHR>(
|
||||
vkGetInstanceProcAddr(vulkan_instance_.vk_instance(), "vkGetFenceFdKHR"));
|
||||
if (!vkGetFenceFdKHR_)
|
||||
if (!vkGetFenceFdKHR_) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -67,7 +66,7 @@ bool VulkanImplementationGbm::GetPhysicalDevicePresentationSupport(
|
||||
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
|
||||
.handleType = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT};
|
||||
VkExternalFenceProperties external_fence_properties;
|
||||
vkGetPhysicalDeviceExternalFencePropertiesKHR_(
|
||||
vkGetPhysicalDeviceExternalFenceProperties_(
|
||||
physical_device, &external_fence_info, &external_fence_properties);
|
||||
if (!(external_fence_properties.externalFenceFeatures &
|
||||
VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT)) {
|
||||
|
@ -51,8 +51,8 @@ class VulkanImplementationGbm : public gpu::VulkanImplementation {
|
||||
private:
|
||||
gpu::VulkanInstance vulkan_instance_;
|
||||
|
||||
PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR
|
||||
vkGetPhysicalDeviceExternalFencePropertiesKHR_ = nullptr;
|
||||
PFN_vkGetPhysicalDeviceExternalFenceProperties
|
||||
vkGetPhysicalDeviceExternalFenceProperties_ = nullptr;
|
||||
PFN_vkGetFenceFdKHR vkGetFenceFdKHR_ = nullptr;
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user