With some intermediate refactoring to make the code simpler.
I believe the failures that happened previously were coming from how NtGdiDdDDIOpenAdapterFromLuid initialized desc->hAdapter in win32u while winex11 was then relying on it. I missed this detail before and it should be working fine now that the vulkan path is only used to retrieve the physical device.
-- v4: win32u: Move D3DKMT vulkan implementation out of winex11. winex11: Introduce a new find_adapter_from_handle helper. winex11: Introduce a new get_vulkan_physical_device helper. winex11: Initialize D3DKMT vulkan instance only once. win32u: Open adapters in NtGdiDdDDIEnumAdapters2 outside of the display devices lock.