Split up into two tables:
- Active
- Deprecated
Clean up restrictions into their own column for easier viewing.
Made text slightly smaller to fit more in a smaller space.
Add "additive" environment variables for adding additional layer
paths or driver JSON files instead of replacing default ones.
Also, rename VK_ICD_FILENAMES to VK_DRIVER_FILES since we're trying
to remove references to ICDs because software driver implementations
of Vulkan aren't ICDs (but continue to support the old name as well).
Added documentation around these changes to reflect the new name and
the new variables.
The loader ICD ordering could be random on Linux based on using readdir
to find ICD manifest files. This can result in random behaviors as
applications that select only the first device can switch which device is
used. To resolve this, we now sort based on device type and then
internally to the types based on PCI bus information.
This also introduces a VK_LOADER_DEFAULT_DEVICE environment variable
that can be used to force a specific PCI device. This environment variable
is actually a duplicate of the MESA_VK_DEVICE_SELECT variable, which is
also looked for if the loader environment variable is not found.
Note, that at least one ICD must support it for the extension to be used at all.
So we only do the sorting if one ICD supports it.
Fixes part of #657
Define expected behavior for a well-behaved loader, layers, and drivers.
This has been reviewed with other companies so that when issues arise,
it is easy to clearly communicate where one of the components has failed
to properly behave.
Add warnings/errors in the loader output when cases of policy that can
be detected are noticed.
Add a section warning about possible issues with bundling the
Khronos loader with an application/engine.
Also, rename "desktop loader" to "Khronos loader" since it is now
used for more than the original desktop targets.
Feedback from Khronos was that "Implementation" was for the entire
set of Vulkan components underlying the application (including the
loader, layers, and drivers). Instead, what I had been calling
implementation should be called "Driver" including software
implementations of Vulkan at that level.
Also update the LOADER_DEBUG option "implem" to take "driver" as well.
All images also updated.
Update the loader documentation in the following ways:
1. Move documentation to new "docs" folder"
2. Split LoaderAndLayerInterface.md into multiple docs to focus
on target audience:
- Top-Level LoaderInterfaceArchitecture.md
- Applications LoaderApplicationInterface.md
- Layers LoaderLayerInterface.md
- ICDs LoaderImplementationInterface.md
3. Upload newer images and their corresponding original Inkscape files.
4. Cleanup and update sections on Linux directory search
5. Add new sections to detail items missing
- VkConfig
- Handling undef Fuchsia
6. Language cleanup
Thanks to @charles-lunarg and @smcv for feedback and various section language
corrections.