Vulkan-Loader
Vulkan-Loader copied to clipboard
Please document JSON file format compatibility rules
Thanks for documenting the JSON file format specification - it's a useful resource, and I'm now trying to add a similar (but simpler) spec to GLVND for the EGL ICDs.
https://github.com/KhronosGroup/Vulkan-Loader/blob/master/loader/LoaderAndLayerInterface.md#icd-manifest-file-format documents that the current file format is 1.0.0, but does not document what formats a consumer can assume to be compatible with the current format.
Similar code in GLVND says this:
The minor version number will be incremented if we ever add an optional value to the JSON format that libEGL has to pay attention to. That is, an older vendor library will still work, but a vendor library with a newer format than this library understands should fail.
— https://github.com/NVIDIA/libglvnd/blob/master/src/EGL/libeglvendor.c#L279
If the intention is to have the same versioning policy as GLVND/EGL, perhaps something like this would be appropriate:
Versions 1.0.x are required to be compatible with this specification, in the sense that a consumer that only implements file format version 1.0.0 will load all version 1.0.x JSON files successfully (a new micro version may add new fields but will not break compatibility with existing loaders). Newer major and minor versions might require loader changes.
(I'm not sure what the intended distinction is between major and minor versions, if an increment to the minor version is allowed to include incompatible changes.)