Commit Graph

21029 Commits

Author SHA1 Message Date
Dongwon Kim
b64a70ba41 modesetting: Empty damage once dispatch is done
This commit is to fix some regression caused by

commit 995e60a919

where DamageEmpty on damage was missing in several
places.

Signed-off-by: Dongwon Kim <dongwon.kim@intel.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1486>
2026-04-10 19:21:25 +02:00
Patrick Lerda
94cee65104 modesetting: find the first compatible dri device as default
This change replaces the default "/dev/dri/card0" by a loop which
searches for the first compatible device.

This change avoids the error below which happens on some ARM boards:
(EE) No devices detected.
(EE)
Fatal server error:
(EE) no screens found(EE)
(EE)

Signed-off-by: Patrick Lerda <patrick9876@free.fr>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1496>
2026-04-10 19:21:25 +02:00
hongao
091acc86bd randr: clear primary screen's primaryOutput when the output is deleted
This fix use after free when a pluggable gpu screen (such as displaylink)
was set as primary screen and unpluged.

gdb backtrace:
 #0 OssigHandler (signo=11, sip=0x7fff2e0a50f0, unused=0x7fff2e0a4fc0) at ../../../../os/osinit.c:138
 #1 <signal handler called>
 #2 rrGetscreenResources (client=0x3195160, query=0) at ../../../../randr/rrscreen.c:577
 #3 0x0000000000562bae in ProcRRGetscreenResourcesCurrent (client=0x3195160) at ../../../../randr/rrscreen.c:652
 #4 OxOOOOB0000054de63 in ProcRRDispatch (client=0x3195160) at ../../../../randr/randr.c:717
 #5 0x00000000004322c6 in Dispatch () at ../../../../dix/dispatch.c:485
 #6 0x0900900990443139 in dix_main (argc=12, argv=0x7fff2e0a5f78, envp=0x7fff2e0a5fe0) at ../../../../dix/main.c:276
 #7 0X0000000000421d9a in main (argc=12, argv=0x7fff2e0a5f78, envp=0x7fff2e0a5fe0) at ../../../../dix/stubmain.c:34

Signed-off-by: hongao <hongao@uniontech.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1553>
2026-04-10 19:21:25 +02:00
Sultan Alsawaf
de8ba22aab modesetting: Don't recursively force present to unflip
Present calls drmmode_set_mode_major() as part of ms_present_unflip(),
which leads to a crash due to the recursive attempt to force present to
unflip when it already is.

Fix it by simply skipping the forced present unflip when present itself is
unflipping. This also speeds up drmmmode_prepare_modeset() when present
isn't even flipping to begin with.

Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1791
Fixes: 899c87af1 ("modesetting: unflip before any setcrtc() calls")
Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1793>
2026-04-10 19:21:25 +02:00
matt335672
21789690a9 Add docs for some internal methods
Doxygen headers added for XkbGetCoreMap() and XkbSetRepeatKeys()

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1851>
2026-04-10 19:21:24 +02:00
Povilas Kanapickas
c0587aebc3 Revert "glamor: explicitly draw endpoints of line segments"
This reverts commit 530e80375e.

The commit breaks xts5/Xlib9/XDrawLines/XDrawLines test as per
https://gitlab.freedesktop.org/xorg/xserver/-/issues/1801#note_2812218

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1858>
2026-04-10 19:19:37 +02:00
Thomas Zimmermann
a3df9d6ac7 xf86: Accept devices with the kernel's vesadrm driver
Add a workaround to accept devices of the kernel's vesadrm driver.
Makes Xorg work on pre-configured displays with VESA and the DRM
graphics stack. Review of the vesadrm driver happens at [1].

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/series/146477/ # 1
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1879>
2026-04-10 19:19:37 +02:00
Thomas Zimmermann
9f324737df xf86: Accept devices with the kernel's efidrm driver
Add a workaround to accept devices of the kernel's efidrm driver.
Makes Xorg work on pre-configured displays with UEFI and the DRM
graphics stack. Review of the efidrm driver happens at [1].

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/series/146477/ # 1
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1879>
2026-04-10 19:19:37 +02:00
Timo Aaltonen
a4243c3b9d xf86pciBus.c: use Intel ddx only for pre-gen3 hardware
Use intel ddx only on pre-gen4 hw, newer ones will fall back to modesetting.

Instead of defaulting to the Intel driver for all Intel hardware, only
default it for older hardware for which it has shown to be better for.

Note that Debian/Fedora and their derivatives, as well as the yocto project
have been carrying this patch for many years:
192254841a
ee515e44b0

so this simply aligns xserver upstream with Linux distributions.

Signed-off-by: California Sullivan <california.l.sullivan@intel.com>
Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Co-authored-by: Balló György <ballogyor@gmail.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1887>
2026-04-10 19:19:37 +02:00
Icenowy Zheng
7e77b5cdef randr: do full transform when checking SetScreenSize size
When validating the size passed to SetScreenSize, the CRTC mode size
needs to be applied the full CRTC transform, otherwise the check may
bogusly fail.

Do a full transform on the CRTC mode size when checking the
SetScreenSize request size instead of the current code that only
manually handles rotation.

Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1971>
2026-04-10 19:19:37 +02:00
Icenowy Zheng
a5741d057f modesetting: properly use fb_id of front_bo for reverse PRIME CRTC
When doing reverse PRIME, the buffer being scaned out is still the front
BO.

Properly reuse its fb_id, to prevent adding a FB for the front_bo each
time the fb_id is requested.

Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2064>
2026-04-10 19:19:37 +02:00
Pierre Le Marre
fd39262231 xkb: Fix serialization of key type without level names
Before this commit the count of key type level names was wrongly set
in `XkbGetNames`: for key type without names, it was set to the level
count, while it should be 0:
- `XkbComputeGetNamesReplySize()` does not account key type without
  level names;
- `XkbSendNames()` does not write any level entry for key types without
  level names.

This causes a mismatch offset while parsing the response and its
processing would ultimately fail.

Fixed by setting the correct level name count: 0 if there is no level
name, else the number of levels.

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2082>
2026-04-10 19:19:31 +02:00
Pierre Le Marre
f5748423a6 xkb: Fix key type without level names in XkbCopyKeymap
A key type that has no level names is legit. Before this commit,
`XkbCopyKeymap` would make such level inconsistent by setting its
number of levels to 0 while keeping its map entries. It suffices
to clear the names array.

Fixed by copying the level count from the source type.

WARNING: this will trigger an error in `XkbGetNames`, which worked
before this commit only by chance. This is fixed in the next commit.

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2082>
2026-04-10 19:18:48 +02:00
Qiang Yu
71f3205c31 glamor: enable dmabuf_capable by default for radeonsi
This is needed by radeonsi to support multi plane modifier when
using modesetting DDX.

xserver reject any multi plane buffer (in DRI3PixmapFromBuffers)
without the dmabuf_capable debug option. It's OK for single plane
buffer as xserver will fallback to DRI3BufferFromPixmap path.
amdgpu DDX does not expose DRI3PixmapFromBuffers, mesa just use
the single plane path anyway, so amdgpu DDX does not have this
problem.

Reviewed-by: Sultan Alsawaf <sultan@kerneltoast.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2091>
2026-04-10 19:18:47 +02:00
Qiang Yu
10c7fba06c modesetting: fix PRESENT_FLIP_REASON_BUFFER_FORMAT gets overwritten
When dmabuf_capable is enabled, ms_present_check_unflip may return
with reason PRESENT_FLIP_REASON_BUFFER_FORMAT to be reported back
to client by PresentCompleteModeSuboptimalCopy. We should not
overwrite it by page flip reasons anyway when exit.

This fix also avoid changing vblank->exec_msc in present_scmd_pixmap()
which caused by page flip reasons to prevent a present to be executed
immediatly. So that we can cancel pending vblanks when new vblanks with
same msc arrive. This happens when application just starts.

This problem can be observed at least using radeonsi OGL driver, start
xserver with dmabuf_capable enabled, no window manager, glxgears will
stuck for the first several seconds. If using a composite window manager
like Mutter, we can't observe the glxgears stuck, but the prensent
complete event still shows unexpected Copy mode instead of
PresentCompleteModeSuboptimalCopy or Skip mode.

glxgears window msc is 0 at the beginning, it will send present request
with target msc = 1, 2, 3, ... N before server send back the complete
event for target msc = 1. But server side window msc is way bigger than N,
so it will think all these present requests are outdated and just show the
Nth request at the next vblank. [1 .. N-1] requests should be skipped.
But without this fix, all [1 .. N] presents will be executed with Copy
mode which causes stuck.

Fixes: a94dd9536 ("modesetting: add support for TearFree page flips")
Reviewed-by: Sultan Alsawaf <sultan@kerneltoast.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2091>
2026-04-10 19:18:04 +02:00
Michel Dänzer
2767da13b6 composite: Skip copying parent pixmap contents when possible
If the parent window has a different depth (which means pWin can't have
valid contents yet) and pWin has effective background other than None.

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2092>
2026-04-10 19:18:04 +02:00
quantenzitrone
55ee68f13b COPYING: add author to HPND-sell-MIT-disclaimer-xserver
the license notice comes from these files:
- dix/registry.c
- Xext/xselinuxint.h
- Xext/xselinux_label.c
- Xext/xselinux_hooks.c
- Xext/xselinux_ext.c
- Xext/xselinux.h
- Xext/xacestr.h
- Xext/xace.h
- Xext/xace.c

while this is not like the standard `Copyright (C)` lines I think it
still belongs to the license, even if just to make it more clearly
separate from the MIT license above

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2098>
2026-04-10 19:18:01 +02:00
quantenzitrone
8d035c95ac COPYING: add missing paragraph to SGI-B-2.0
all files that this license applies to include the last paragraph:
- glx/xfont.c
- glx/unpack.h
- glx/singlesize.h
- glx/singlesize.c
- glx/singlepixswap.c
- glx/singlepix.c
- glx/single2swap.c
- glx/single2.c
- glx/rensize.c
- glx/renderpixswap.c
- glx/renderpix.c
- glx/render2swap.c
- glx/render2.c
- glx/glxutil.h
- glx/glxdrawable.h
- glx/glxserver.h
- glx/glxcontext.h
- glx/glxscreens.h
- glx/glxscreens.c
- glx/glxcmdsswap.c
- glx/glxext.h
- glx/glxcmds.c
- glx/glxext.c

the paragraph was likely accidentally missed when the license changed
from SGI-B-1.0 to SGI-B-2.0 in ed9aecf851

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2097>
2026-04-10 19:18:01 +02:00
Mikhail Dmitrichenko
b642933b4e render: fix multiple mem leaks on err paths
Free nested allocations when initialization fails.
Several code paths returned early on error without releasing
memory owned by embedded structures, leading to leaks.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Signed-off-by: Mikhail Dmitrichenko <m.dmitrichenko222@gmail.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2125>
2026-04-10 19:17:29 +02:00
Alan Coopersmith
c49cbafeac xfree86: remove leftover ev56.c source files
Commit 166ac294a replaced the function calls in these files with inline
functions in compiler.h and updated the configure scripts & meson builds
to stop compiling them, but missed actually removing the now unused sources.

Fixes: 166ac294a ("xfree86: Inline xf86{Read,Write}Mmio{8,16,32} on alpha")
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2122>
2026-04-10 19:17:25 +02:00
Enrico Weigelt, metux IT consult
e579e951e1 hotfix release xlibre-xserver-25.0.0.21
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
xlibre-xserver-25.0.0.21
2026-02-10 11:45:35 +01:00
Enrico Weigelt, metux IT consult
11eb10fbf1 Xi: fix byte-swapping in SProcXIPassiveGrabDevice()
Yet another old Xorg bug: the even masks are transmitted as CARD32's,
so they also need to be byte-swapped.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-02-04 12:51:34 +01:00
Enrico Weigelt, metux IT consult
1f66f6076b xfree86: ddc: add xf86Monitor_gtf_supported()
replacement for GTF_SUPPORTED() macro that's not a good API isolation
at all. Drivers should use that function instead for checking whether
the monitor supports GTF.

Should be backported to older releases, too - so drivers don't need
extra per-Xserver-version tweaks.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-02-03 09:57:05 +01:00
Enrico Weigelt, metux IT consult
ad08af5ea9 xfree86: xlibre-server.h: fix missing HAVE_TIMINGSAFE_MEMCMP
os.h still defining our own timingsafe_memcmp() prototype when this
symbol isn't set - this is causing trouble with drivers on FreeBSD.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-01-22 12:38:47 +01:00
Enrico Weigelt, metux IT consult
5acf9d4069 xfree86: add exported xf86GetConsoleFd()
This functions is designed for some legacy keyboard drivers
(eg. xf86-input-keyboard) that need to get the fd to the console
device, so they don't need to directly access xf86Info field anymore.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-01-14 11:15:41 +01:00
Tautvis
b80ff48375 glx: glxext fix memory leak when calling DestroyPixmap
Call dixDestroyPixmap instead pScreen->DestroyPixmap, which is correct
call to free resources as since cece84fa93
the Screen->DestroyPixmap function is no longer wrapped.

Fixes: https://github.com/X11Libre/xserver/issues/1809

Signed-off-By: Tautvis <gtautvis@gmail.com>
2026-01-13 15:01:49 +01:00
Enrico Weigelt, metux IT consult
979b28687f hotfix release xlibre-xserver-25.0.0.20
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
xlibre-xserver-25.0.0.20
2026-01-08 17:47:35 +01:00
Enrico Weigelt, metux IT consult
a8d4448b43 xorg-server.m4: add helper macros for driver builds
Adding a bunch of autoconf macros easier building of drivers.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-01-08 17:32:00 +01:00
Enrico Weigelt, metux IT consult
0be66f0934 xorg-server.pc: add more variables for easier driver builds
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-01-08 17:17:22 +01:00
Enrico Weigelt, metux IT consult
dca986faab hotfix release xlibre-xserver-25.0.0.19
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
xlibre-xserver-25.0.0.19
2026-01-07 20:40:09 +01:00
Enrico Weigelt, metux IT consult
9599e0849e xfree86: add macros for declaring XF86ModuleData fields
XF86_MODULE_DATA_INPUT() creates XF86ModuleData field for input driver,
while XF86_MODULE_DATA_VIDEO creating one for a video driver.

These are filled with given values, _X_EXPORT'ed and properly named so
the module loader can find them. Also creating the associated
XF86ModuleVersionInfo field and link them into the XF86ModuleData.

Example:

    XF86_MODULE_DATA_INPUT(
        egalax,
        eGalaxPlug,
        eGalaxUnplug,
        "egalax",
        PACKAGE_VERSION_MAJOR,
        PACKAGE_VERSION_MINOR,
        PACKAGE_VERSION_PATCHLEVEL);

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-01-07 20:39:02 +01:00
Enrico Weigelt, metux IT consult
8c185f1379 xfree86: xf86Module.h: macro for declaring video driver module version
Reduce the effort of declaring/filling an video driver's module version
struct to short statement like this:

    XF86_MODULE_VERSION_VIDEO("ati",
                              PACKAGE_VERSION_MAJOR,
                              PACKAGE_VERSION_MINOR,
                              PACKAGE_VERSION_PATCHLEVEL);

This will create a properly filled XF86ModuleVersionInfo structure
named `modInfo`.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-01-07 20:26:17 +01:00
Enrico Weigelt, metux IT consult
84d631bc6d xfree86: xf86Module.h: macro for declaring input driver module version
Reduce the effort of declaring/filling an input driver's module version
struct to short statement like this:

    XF86_MODULE_VERSION_INPUT("egalax",
                              PACKAGE_VERSION_MAJOR,
                              PACKAGE_VERSION_MINOR,
                              PACKAGE_VERSION_PATCHLEVEL);

This will create a properly filled XF86ModuleVersionInfo structure
named `modInfo`.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-01-07 19:55:20 +01:00
Enrico Weigelt, metux IT consult
f93fb63e1b stop defining _XF86DRI_SERVER_
This once was needed on including xf86driproto.h, but these day
have gone now for aeons.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-01-05 14:42:09 +01:00
Enrico Weigelt, metux IT consult
424383ddf6 xfree86: compat: fix DragonFly build
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-12-23 20:40:37 +01:00
Enrico Weigelt, metux IT consult
614b551053 hotfix release xlibre-xserver-25.0.0.18
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
xlibre-xserver-25.0.0.18
2025-12-19 17:51:00 +01:00
Enrico Weigelt, metux IT consult
ae38b2fa42 xorg-server.pc: add variables for input and video driver directories
Future driver versions should query those for their installation dirs.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-12-19 17:50:02 +01:00
Enrico Weigelt, metux IT consult
3cb5fc8f81 xfree86: loader: add subdirs for input and video drivers
in the future, input and video drivers should reside in separate
sub-directories. still supporting the old dirs until ABI 26.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-12-19 17:50:16 +01:00
Enrico Weigelt, metux IT consult
588f81cf84 xorg-server.pc: add xserverconfigdir variable
That variable is supposed to be used by drivers to query the path to
the xserver config directory (eg /etc/X11/xorg.conf.d), if they have
to install config snippets. It's supposed to replace / phase-out the
sysconfigdir variable, which has a bit misleading name.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-12-19 17:28:13 +01:00
Enrico Weigelt, metux IT consult
183267b8bc dix: Dispatch() separate variable for read result
Mixing result variables for separate things is making the code hard
to understand, so add a new local variable for temporarily storing
the result of ReadRequestFromClient().

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-12-19 12:41:04 +01:00
Enrico Weigelt, metux IT consult
28bbfcd0b7 exa: silence calloc() warning on mingw32
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-12-19 12:40:37 +01:00
Oleh Nykyforchyn
b0fcbcbde5 fb: reexport fbGetGCPrivateKey and add itw wrapped version
This patch reexports a symbol needed by NVidia 340 driver and adds
its "wrapped" version for libwfb to prevent XServer crashes.

Signed-off-by: Oleh Nykyforchyn <oleh.nyk@gmail.com>
2025-12-19 12:38:56 +01:00
Enrico Weigelt, metux IT consult
c9dde4ef01 mingw32: fix winsock2.h include
winsock2.h needs to be included before windows.h

> /usr/share/mingw-w64/include/winsock2.h:15:2: error: #warning Please include winsock2.h before windows.h [-Werror=cpp]
>    15 | #warning Please include winsock2.h before windows.h
>       |  ^~~~~~~

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-12-19 12:37:12 +01:00
Enrico Weigelt, metux IT consult
1ce24cdd9c meson_options.txt: move xf86-* driver flags to separate section
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-12-19 12:36:39 +01:00
b-aaz
70c113eb89 arm_video.c: Fixed xf86_os_support.h's #include.
The 'h' in the file suffixed was mistakenly removed, fixed it.

Signed-off-by: b-aaz <b-aazbsd@proton.me>
2025-12-19 12:22:27 +01:00
Herman Semenoff
83b0ce7275 xfree86: fix infinite boot when parsing incorrect BusID section Device
This change checks if there is a colon after the bus name. If there is none, *retID will point to the final null character of the original string.
2025-12-16 15:54:03 +01:00
Enrico Weigelt, metux IT consult
70b3821113 hotfix release xlibre-xserver-25.0.0.17
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
xlibre-xserver-25.0.0.17
2025-12-15 13:20:17 +01:00
Enrico Weigelt, metux IT consult
c937804d0e .github: switch dependencies to our new mirrors
Our new automatic mirrors have a special prefix, so we need to
fixup the URLs.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-12-11 15:28:25 +01:00
Enrico Weigelt, metux IT consult
adc2653824 kdrive: ephyr: add noreturn attribute to ephyrProcessErrorEvent()
>  ../hw/kdrive/ephyr/ephyr.c:977:1: warning: function 'ephyrProcessErrorEvent' could be declared with attribute 'noreturn' [-Wmissing-noreturn]
>    977 | {
>        | ^

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-12-11 15:05:01 +01:00
Enrico Weigelt, metux IT consult
041df2b777 xfree86: fix include of xf86VGAarbiter_priv.h
Needs to be included also in non-pciaccess case, so the dummy
functions are declared.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-12-11 15:04:52 +01:00