From c8a776f662afb0bbab6ce153e548fb5e06015b19 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Mon, 2 Jun 2025 10:44:12 +0200 Subject: [PATCH] xfree86: compat: re-add xf86Msg() for badly maintained drivers. NVidia yet again lagging behind a year with trivial cleanups, even though they're informed about this function being deprecated and dropped. It spills out a log warning calling users to file bug reports their driver vendor. Signed-off-by: Enrico Weigelt, metux IT consult --- hw/xfree86/compat/README | 1 + hw/xfree86/compat/log.c | 28 ++++++++++++++++++++++++++++ hw/xfree86/compat/meson.build | 8 ++++++++ hw/xfree86/meson.build | 2 ++ 4 files changed, 39 insertions(+) create mode 100644 hw/xfree86/compat/README create mode 100644 hw/xfree86/compat/log.c create mode 100644 hw/xfree86/compat/meson.build diff --git a/hw/xfree86/compat/README b/hw/xfree86/compat/README new file mode 100644 index 000000000..19af90339 --- /dev/null +++ b/hw/xfree86/compat/README @@ -0,0 +1 @@ +special compat code for legacy drivers, namely Nvidia proprietary diff --git a/hw/xfree86/compat/log.c b/hw/xfree86/compat/log.c new file mode 100644 index 000000000..0a904f6a3 --- /dev/null +++ b/hw/xfree86/compat/log.c @@ -0,0 +1,28 @@ +#include + +#include + +#include "include/os.h" + +#undef xf86Msg + +/* + * this is specifically for NVidia proprietary driver: they're again lagging + * behind a year, doing at least some minimal cleanup of their code base. + * All attempts to get in direct contact with them have failed. + */ +_X_EXPORT void xf86Msg(MessageType type, const char *format, ...) + _X_ATTRIBUTE_PRINTF(2, 3); + +void xf86Msg(MessageType type, const char *format, ...) +{ + LogMessageVerb(X_WARNING, 0, "Outdated driver still using xf86Msg() !\n"); + LogMessageVerb(X_WARNING, 0, "File a bug report to driver vendor or use a FOSS driver.\n"); + LogMessageVerb(X_WARNING, 0, "Proprietary drivers are inherently unstable, they just can't be done right.\n"); + + va_list ap; + + va_start(ap, format); + LogVMessageVerb(type, 1, format, ap); + va_end(ap); +} diff --git a/hw/xfree86/compat/meson.build b/hw/xfree86/compat/meson.build new file mode 100644 index 000000000..dcdbf1c21 --- /dev/null +++ b/hw/xfree86/compat/meson.build @@ -0,0 +1,8 @@ +srcs_xorg_compat = [ + 'log.c', +] + +xorg_compat = static_library('xorg_compat', + srcs_xorg_compat, + include_directories: [inc, xorg_inc, top_dir_inc], +) diff --git a/hw/xfree86/meson.build b/hw/xfree86/meson.build index 1192857a0..f1fa48e17 100644 --- a/hw/xfree86/meson.build +++ b/hw/xfree86/meson.build @@ -24,6 +24,7 @@ endif # subdirs for convenience libraries statically linked into Xorg subdir('common') +subdir('compat') subdir('ddc') if build_dri1 subdir('dri') @@ -53,6 +54,7 @@ xorg_link = [ libxserver, libglxvnd, xorg_common, + xorg_compat, xorg_loader, xorg_ddc, xorg_xkb,