Seems fine to me.
Properly enumerating a separate software adapter with DXGI_ADAPTER_FLAG_SOFTWARE set — on Windows 8+ WARP appears at the end of the EnumAdapters() list — would require wined3d support and is left for the future;
For what it's worth, making multiple adapter support work with OpenGL may be a bit involved, but it shouldn't be too hard for Vulkan. The main issue is likely that we'd need to know the adapter count before allocating "object" in wined3d_create(), unless we change the way the "adapters" array from struct wined3d is allocated. On Linux we'd then be able to map WARP to llvmpipe, although I suppose that wouldn't necessarily do much good on macOS. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11395#note_145689