Wine Vulkan loader (vulkan-1.dll)
thunderbird2k at gmail.com
Sat Mar 17 13:39:08 CDT 2018
Now that we have an initial Vulkan ICD, the question is how do we
supply users with the Vulkan loader (vulkan-1.dll). At the moment
users need to install it themselves by downloading Vulkan SDK e.g.
through winetricks or lunarg website.
There are a various options each with their pros and cons.
1. Use the official Vulkan loader and bundle it with Wine. The vulkan
loader is open source and could thus be bundled. However last year the
license switched from BSD to Apache.
At some point I compiled the loader using winegcc though had to make a
few code changes, which I'm sure could be upstreamed to Khronos.
2. Provide our own minimal vulkan-1.dll implementation. It would cut
some corners by not supporting layers or handling of multiple ICDs,
which is were most of the complexity lays. In terms of loading order
we would prefer native over builtin as e.g. Steam may want to use the
real loader to provide layers such as overlay.
Last summer I did create such a loader, but I would need to dust it
off. Most of the code is very easy to generate and would most can
share some code with winevulkan e.g. dispatch structures and macros.
3. Provide vulkan loader in a wine-gecko/wine-mono kind of way through
an external download. Not as user friendly and not sure how desired
for Wine unit tests needing an external dependency.
In an ideal world, I would prefer option 1) as it doesn't make sense
to duplicate work and it also provides the most features. However, the
question is whether we would want Apache 2.0 licensed code in Wine.
Technically we are LGPL >= 2.1, so under 3.0 license this would be
compatible (and you could offer an option to not build the dll maybe).
More realistically I suppose 2) is the preferred method for now. Thoughts?
More information about the wine-devel