[PATCH 2/2] winevulkan: Implement vkEnumerateDeviceLayerProperties

Liam Middlebrook lmiddlebrook at nvidia.com
Thu Mar 18 13:53:35 CDT 2021



On 3/18/21 10:54 AM, Liam Middlebrook wrote:
> 
> 
> On 3/17/21 10:44 PM, Victor Chiletto wrote:
>> 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 
> 
> 
> Great, I'd just note that in the description as well (perhaps linking to 
> the source would be most practical).

Actually I was logged into GitHub so I didn't notice that this is a 
private repository. I think just citing the game and noting this should 
affect all UE4 titles is more sensible than linking to a private 
repository on GitHub.


Thanks,
Liam Middlebrook

> 
>>
>>
>>>> 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.
> 
> Yeah that looks good, it clears up the flow of events leading up to the 
> crash, and why this change is not only more correct, but also necessary.
> 
> 
> Thanks,
> 
> Liam Middlebrook
> 
>>



More information about the wine-devel mailing list