[PATCH 2/2] winevulkan: Implement vkEnumerateDeviceLayerProperties

Liam Middlebrook lmiddlebrook at nvidia.com
Thu Mar 18 12:54:37 CDT 2021



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).

> 
> 
>>> 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