The X server defines several
ABI version numbers in the
hw/xfree86/common/xf86Module.h header, through the
SET_ABI_VERSION(maj,min) macro. In this document, the focus is on
ABI_VIDEODRV_VERSION and ABI_XINPUT_VERSION, which are
respectively about video drivers and input drivers.
An example of input ABI is 12.1, 12 being the major, 1 being
the minor.
Like in usual shared libraries, the major is bumped when interfaces
are broken. There’s no compatibility at all in that case.
The minor gets bumped when interfaces are added. In other words, if a
driver is working with x.y, it should also work with higher minors:
x.z; z>y. The converse is not true, if a driver requires a given
minor (for example because it needs a new feature, like MultiTouch),
it won’t work with lower minors (which didn’t provide the needed
feature). Put another way: we have ascending compatibility with the
minors.
Conclusion: We need to keep track of both major and minor.
Thanks to pkg-config we can query them:
$ pkg-config --variable=abi_videodrv xorg-server
9.0
$ pkg-config --variable=abi_xinput xorg-server
12.1