[PATCH 2/2] winevulkan: Implement vkEnumerateDeviceLayerProperties
Victor Chiletto
v at hnn.net.br
Thu Mar 18 00:44:17 CDT 2021
On 16/03/2021 19:59, Liam Middlebrook wrote:
>
>
> On 3/6/21 12:46 PM, Victor Hermann Chiletto wrote:
>> This is generally implemented by the system's Vulkan ICD, and passing it
>> through results in applications (namely, Unreal Engine) attempting to
>
> It would be nice to name a specific UE4 application you're seeing this
> with for posterity.
>
Project Wingman (Steam appid 895870), but inspection of the UE4 source
code [1] shows that this issue will happen in any UE4 application that
uses the Vulkan RHI.
[1]
https://github.com/EpicGames/UnrealEngine/blob/5df54b7ef1714f28fb5da319c3e83d96f0bedf08/Engine/Source/Runtime/VulkanRHI/Private/VulkanLayers.cpp#L524
>> query for layer extensions in vkEnumerateDeviceExtensionProperties.
>>
>
> I think the wording is a bit off here. Did you mean to cite
> vkEnumerateDeviceLayerProperties() rather than
> vkEnumerateDeviceExtensionProperties() here? Rather than saying "layer
> extensions" I think it would make sense to say "device layers".
>
Currently, this function is passed through winevulkan to the system's
Vulkan loader, which causes the loader to write the system's device
layers properties in pProperties.
UE4 then calls vkEnumerateDeviceExtensionProperties, using
VkLayerProperties::layerName as the pLayerName.
winevulkan's implementation of vkEnumerateDeviceExtensionProperties then
returns VK_ERROR_LAYER_NOT_PRESENT, crashing UE4.
If this is an okay description I can resubmit the patch.
More information about the wine-devel
mailing list