[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