-
Make sure we're not scanning out any fbs with fancy modifiers when we try to light up new displays. This is already the case in cases where the screen gets resized, but in cases where that doesn't happen it might be possible for the modeset(s) to fail due to watermark/etc. constraints imposed by the fancy modifiers. We can avoid that by making sure everything gets unflipped before the modeset. v2: make poll timeout infinite s/in_modeset/pending_modeset/ deal with tearfree fallout (goto no_flip) Signed-off-by:
Ville Syrjälä <ville.syrjala@linux.intel.com>
899c87af -
Ville Syrjälä authored
Try to minimize the used hw cursor size in order to minimize power consumption. There is no kernel query for the minimum so we'll just probe around with setcursor2 (using an invisible cursor image so there will be no visual artifacts). To avoid having to deal with absolutely every size stick to power-of-two numbers. And with a bit of extra effort we can determine whether non-square dimesions will also work, which they do to some degree on current Intel GPUs. On my Alderlake laptop I'm seeing a massive (up to .5W) difference in power consumption between 64x64 vs. 256x256 cursors. While some of that is undoubtedly something that needs to be fixed in i915's display data buffer allocation code, it still makes sense to use as small as possible cursor to minimize the wastege. In case the crtc is rotated just punt to the max cursor size for now since midlayer has already done the coordinate transformations based on that. To make smaller cursors work with rotation we'd either need to make the midlayer(s) aware of the final cursor size, or just handle the whole roation business in modesetting. I suspect the latter option would be easier. v2: Only allow square cursors in most cases for now as eg. on modern Intel hardware non-square only works with wide+short but not with narrow+tall cursors. Non-square size may still be used when maximum limits aren't square and the squared+POT'd dimensions would exceed one of the max limits. Signed-off-by:
Ville Syrjälä <ville.syrjala@linux.intel.com>
1f41320e -
Stop putting stack garbage into the gamma LUT blob reserved fields. Fixes: 245b9db0 ("modesetting: Use GAMMA_LUT when available") Signed-off-by:
Ville Syrjälä <ville.syrjala@linux.intel.com>
893e9a32 -
4cf89222
-
Signed-off-by:
xurui <xurui@kylinos.cn>
6c605715 -
TearFree support has been available in the modesetting driver for a year with no issues reported. The code is mature and robust, with error handling that's been vetted across many hardware configurations. Notably, TearFree is also the only way to achieve a tear-free desktop with mismatched displays and transformed CRTCs. Enable TearFree by default for a smooth desktop experience out of the box. Signed-off-by:
Sultan Alsawaf <sultan@kerneltoast.com>
0dacee6c -
LOCAL_PEERCRED is similar to SO_PEERCRED but takes SOL_LOCAL. On DragonFly cr_pid isn't supported yet, so fall back to getpeereid(). Based on wayland/wayland@54b237a6
58e8c967 -
5c8f70a1
-
Resolve symbolic links before the PCI device check in fbdev_open. Otherwise, opening device files that are symbolic links will fail. Fixes: #1419 Signed-off-by:
Moritz Bruder <muesli4@gmail.com>
a8e41a81 -
Add a workaround to accept devices of the kernel's ofdrm driver. Makes Xorg work on Open Firmware's pre-configured display with the DRM graphics stack. Signed-off-by:
Thomas Zimmermann <tzimmermann@suse.de>
cd617f2d -
When calling RRSetMonitor, an existing monitor name is allowed. "If 'name' matches an existing Monitor on the screen, the existing one will be deleted as if RRDeleteMonitor were called." https://cgit.freedesktop.org/xorg/proto/randrproto/tree/randrproto.txt It looks like the check was added by mistake, because in the next 'for' the monitor is deleted if it is in this list. Steps to reproduce: Try RRSetMonitor with existing monitor name and other valid params OBSERVED RESULT: RRSetMonitors returns BadValue EXPECTED RESULT: RRSetMonitors returns OK Amend: 7e1f86d4 Signed-off-by:
Ilya Pominov <ipominov@astralinux.ru>
146bb9b2 -
On certain system deployments, /dev/dri/card* nodes aren't directly accessible to the currently logged in user, but the display server only access it by asking systemd-logind to open the device for it. This causes the X server to fail when trying to re-open the card* device directly, causing all use of DRI3 to fail. Fix this by using the render device path instead where possible.
e2eeaab2 -
In commit 7e1f86d4 monitor support was added to randr. At this time it seemed to be reasonable not to have more than one (virtual) monitor on a particular physical display. The code was never changed since. Nowadays, extremely large displays exists (4k displays, ultra-wide displays). In some use cases it makes sense to split these large physical displays into multiple virtual monitors. An example are ultra-wide screens that can be split into 2 monitors. The change in this commit makes this work. Besides that, removing a monitor in a function that is called "RRMonitorAdd" is bad practice and causes unexpected behaviour.
818130bb -
Closes: #1532 Signed-off-by:
Twaik Yont <twaikyont@gmail.com>
43a7bb3c -
After resizing Xephyr's window RRGetCrtcInfo returns the changed size, but the RRCrtcChangeNotify event is not sent. Call RRGetInfo(pScreen, TRUE) to update the current mode and send notifications to clients.
f1bd8255 -
I was seeing SIGBUS errors when running TigerVNC inside the record code because the offsets into the memory buffer were not sufficiently aligned to use the RecordSetRec (alignof(void*)). The current code ensures that all offsets are aligned to sizeof(unsigned long), but that may not be sufficient to load/store a pointer. Architectures where this is not true include Arm Morello which has 16-byte pointers and 8-byte longs.
cb8938e3 -
Fixes: #399 Signed-off-by:
Zoltán Böszörményi <zboszor@gmail.com>
0df31f06 -
Xwayland uses OEFFIS_DEVICE_ALL_DEVICES to get all possible device types enabled. Be more selective and specify explicitly keyboard and pointer instead of relying on what "all devices" translates to in the stack. See-also: https://gitlab.gnome.org/GNOME/mutter/-/issues/3194 Signed-off-by:
Olivier Fourdan <ofourdan@redhat.com>
1bf4d60a -
Alexander Volkov authored
This allows applications to respond to changes of power level of a monitor, e.g. an application may stop rendering and related calculations when the monitor is off. Related bug: https://bugs.freedesktop.org/57120 Signed-off-by:
Alexander Volkov <avolkov@astralinux.ru>
62fec48a
- Xext/dpms.c 215 additions, 7 deletionsXext/dpms.c
- glamor/glamor_egl.c 3 additions, 1 deletionglamor/glamor_egl.c
- glamor/glamor_glyphblt.c 8 additions, 0 deletionsglamor/glamor_glyphblt.c
- glamor/glamor_text.c 8 additions, 0 deletionsglamor/glamor_text.c
- hw/kdrive/ephyr/ephyr.c 1 addition, 0 deletionshw/kdrive/ephyr/ephyr.c
- hw/vfb/InitOutput.c 12 additions, 1 deletionhw/vfb/InitOutput.c
- hw/xfree86/common/xf86platformBus.c 3 additions, 0 deletionshw/xfree86/common/xf86platformBus.c
- hw/xfree86/drivers/modesetting/driver.c 16 additions, 11 deletionshw/xfree86/drivers/modesetting/driver.c
- hw/xfree86/drivers/modesetting/driver.h 5 additions, 1 deletionhw/xfree86/drivers/modesetting/driver.h
- hw/xfree86/drivers/modesetting/drmmode_display.c 120 additions, 13 deletionshw/xfree86/drivers/modesetting/drmmode_display.c
- hw/xfree86/drivers/modesetting/drmmode_display.h 4 additions, 0 deletionshw/xfree86/drivers/modesetting/drmmode_display.h
- hw/xfree86/drivers/modesetting/modesetting.man 1 addition, 1 deletionhw/xfree86/drivers/modesetting/modesetting.man
- hw/xfree86/drivers/modesetting/pageflip.c 7 additions, 0 deletionshw/xfree86/drivers/modesetting/pageflip.c
- hw/xfree86/drivers/modesetting/present.c 3 additions, 0 deletionshw/xfree86/drivers/modesetting/present.c
- hw/xfree86/drivers/modesetting/vblank.c 6 additions, 0 deletionshw/xfree86/drivers/modesetting/vblank.c
- hw/xfree86/fbdevhw/fbdevhw.c 43 additions, 1 deletionhw/xfree86/fbdevhw/fbdevhw.c
- hw/xwayland/xwayland-xtest.c 2 additions, 1 deletionhw/xwayland/xwayland-xtest.c
- include/meson.build 2 additions, 0 deletionsinclude/meson.build
- include/protocol-versions.h 4 additions, 0 deletionsinclude/protocol-versions.h
- meson.build 2 additions, 0 deletionsmeson.build