Commits on Source (15)
-
Sultan Alsawaf authored
PixmapDirtyCopyArea() is about to be used outside of pixmap.c, so fix up its interface by specifying the dirty area directly rather than passing a `PixmapDirtyUpdatePtr`. This makes it easier to use outside of pixmap.c, as the caller doesn't need to create a bulky PixmapDirtyUpdateRec to use this function. Signed-off-by:
Sultan Alsawaf <sultan@kerneltoast.com>
-
Sultan Alsawaf authored
xf86RotateCrtcRedisplay() is about to be used outside of xf86Rotate.c in order to copy transformed pixmaps, so fix up its interface by specifying the source drawable and destination pixmap rather than assuming the root drawable and rotated pixmap, respectively. In addition, add an argument to make xf86RotateCrtcRedisplay() not perform any transformations, which is an indicator that it should only copy a transformed pixmap rather than actually transform a pixmap. These changes make it possible to use xf86RotateCrtcRedisplay() to not only copy transformed pixmaps, but also actually transform pixmaps, making it very useful outside of xf86Rotate.c. Signed-off-by:
Sultan Alsawaf <sultan@kerneltoast.com>
-
Sultan Alsawaf authored
Shadow buffers are about to be used for TearFree, so make the shadow buffer helpers generic such that they can be used to create arbitrary per-CRTC shadows aside from just the per-CRTC rotated buffer. Signed-off-by:
Sultan Alsawaf <sultan@kerneltoast.com>
-
Sultan Alsawaf authored
do_queue_flip_on_crtc() is about to be used to flip buffers other than the primary scanout (`ms->drmmode.fb_id`), so make it generic to accept any frame buffer ID, as well as x and y coordinates in the frame buffer, to flip on a given CRTC. Move the retry logic from queue_flip_on_crtc() into it as well, so that it's robust for all callers. Signed-off-by:
Sultan Alsawaf <sultan@kerneltoast.com>
-
Sultan Alsawaf authored
When a driver uses TearFree to flip all frames synchronized to the vblank interval, Present has no idea and still assumes that each presentation occurs immediately upon copying its damages to the primary scanout. This faulty assumption breaks presentation timestamping, potentially leading to A/V de-synchronization and dropped frames. Present needs to have some awareness of a driver using TearFree so that it can know when each presentation actually becomes visible on the screen. Teach Present about drivers using TearFree by expanding PresentFlipReason to allow drivers to export some contextual info about TearFree when Present cannot page-flip directly anyway. PRESENT_FLIP_REASON_DRIVER_TEARFREE indicates that a driver has TearFree enabled but doesn't have a TearFree flip currently pending. PRESENT_FLIP_REASON_DRIVER_TEARFREE_FLIPPING indicates that a driver has a TearFree flip currently pending. Signed-off-by:
Sultan Alsawaf <sultan@kerneltoast.com>
-
Sultan Alsawaf authored
The DRM event queue in the kernel is quite small and can be easily exhausted by DRI clients. When the event queue is full, that means nothing can be queued onto it anymore, which can lead to incorrect presentation times for DRI clients and failure when attempting to queue a page flip. To make matters worse, once an event is placed onto the kernel's event queue, there's no straightforward way to prematurely remove it from the kernel's event queue in userspace, which means that aborting a sequence number doesn't free up space in the event queue. Since vblank events from DRI clients are the largest consumers of the event queue, and since it's often easy to know the desired target MSC of their vblank events without querying the kernel for a CRTC's current MSC, we can coalesce vblank events occurring at the same MSC such that only one of them is placed onto the kernel's event queue, instead of allowing duplicate vblank events to pollute the event queue. This is achieved by tracking the next kernel-queued event's MSC on a per-CRTC basis and then running all of that CRTC's vblank event handlers which have reached their target MSC when the queued MSC is signaled. Signed-off-by:
Sultan Alsawaf <sultan@kerneltoast.com>
-
Sultan Alsawaf authored
This adds support for TearFree page flips to eliminate tearing without the use of a compositor. It allocates two shadow buffers for each CRTC, a back buffer and a front buffer, and uses damage tracking to minimize excessive copying between buffers and skip unnecessary flips when the screen's contents remain unchanged. It works on transformed screens too, such as rotated and scaled CRTCs. When PageFlip is enabled, TearFree won't force fullscreen DRI clients to synchronize their page flips to the vblank interval. TearFree is disabled by default. Signed-off-by:
Sultan Alsawaf <sultan@kerneltoast.com>
-
Olivier Fourdan authored
The modesetting driver has atomic modesetting disabled by default but can be enabled (if supported) using a configuration option. Add this option in the man page. Signed-off-by:
Olivier Fourdan <ofourdan@redhat.com> Reviewed-by:
Martin Roukala <martin.roukala@mupuf.org>
-
Olivier Fourdan authored
If atomic modesetting is to be enabled in the configuration file, log whether this is supported and eventually enabled or disabled. Signed-off-by:
Olivier Fourdan <ofourdan@redhat.com> Reviewed-by:
Martin Roukala <martin.roukala@mupuf.org>
-
Jeremy Huddleston Sequoia authored
Signed-off-by:
Jeremy Huddleston Sequoia <jeremyhu@apple.com>
-
Jeremy Huddleston Sequoia authored
Signed-off-by:
Jeremy Huddleston Sequoia <jeremyhu@apple.com>
-
Jeremy Huddleston Sequoia authored
Signed-off-by:
Jeremy Huddleston Sequoia <jeremyhu@apple.com>
-
Autumn Ashton authored
wayland-protocols requires wayland-scanner 1.20, but Debian bullseye has 1.18 only Signed-off-by:
Joshua Ashton <joshua@froggi.es> Reviewed-by:
Michel Dänzer <mdaenzer@redhat.com>
-
Autumn Ashton authored
Debian Bullseye only has 1.20, so we need to bump this. Signed-off-by:
Joshua Ashton <joshua@froggi.es> Reviewed-by:
Michel Dänzer <mdaenzer@redhat.com>
-
Autumn Ashton authored
Implements the xwayland_shell protocol which makes the surface association happen via a shared serial, rather than sharing a wl_surface resource ID across an X atom. This solves a race that can happen if the wl_surface associated with a WL_SURFACE_ID for a window was destroyed before the update of the atom was processed by the compositor and another surface (or other object) had taken its id due to recycling. Closes: #1157 Signed-off-by:
Joshua Ashton <joshua@froggi.es> Reviewed-by:
Olivier Fourdan <ofourdan@redhat.com>
Showing
- .gitlab-ci.yml 1 addition, 1 deletion.gitlab-ci.yml
- .gitlab-ci/debian-install.sh 12 additions, 4 deletions.gitlab-ci/debian-install.sh
- dix/pixmap.c 7 additions, 8 deletionsdix/pixmap.c
- hw/xfree86/common/xf86Module.h 1 addition, 1 deletionhw/xfree86/common/xf86Module.h
- hw/xfree86/drivers/modesetting/driver.c 127 additions, 9 deletionshw/xfree86/drivers/modesetting/driver.c
- hw/xfree86/drivers/modesetting/driver.h 6 additions, 0 deletionshw/xfree86/drivers/modesetting/driver.h
- hw/xfree86/drivers/modesetting/drmmode_display.c 187 additions, 36 deletionshw/xfree86/drivers/modesetting/drmmode_display.c
- hw/xfree86/drivers/modesetting/drmmode_display.h 23 additions, 1 deletionhw/xfree86/drivers/modesetting/drmmode_display.h
- hw/xfree86/drivers/modesetting/modesetting.man 15 additions, 0 deletionshw/xfree86/drivers/modesetting/modesetting.man
- hw/xfree86/drivers/modesetting/pageflip.c 83 additions, 21 deletionshw/xfree86/drivers/modesetting/pageflip.c
- hw/xfree86/drivers/modesetting/present.c 20 additions, 2 deletionshw/xfree86/drivers/modesetting/present.c
- hw/xfree86/drivers/modesetting/vblank.c 115 additions, 8 deletionshw/xfree86/drivers/modesetting/vblank.c
- hw/xfree86/modes/xf86Crtc.h 5 additions, 0 deletionshw/xfree86/modes/xf86Crtc.h
- hw/xfree86/modes/xf86Rotate.c 13 additions, 9 deletionshw/xfree86/modes/xf86Rotate.c
- hw/xquartz/mach-startup/bundle-main.c 3 additions, 0 deletionshw/xquartz/mach-startup/bundle-main.c
- hw/xquartz/xpr/xprFrame.c 6 additions, 20 deletionshw/xquartz/xpr/xprFrame.c
- hw/xwayland/meson.build 3 additions, 0 deletionshw/xwayland/meson.build
- hw/xwayland/xwayland-screen.c 5 additions, 0 deletionshw/xwayland/xwayland-screen.c
- hw/xwayland/xwayland-screen.h 2 additions, 0 deletionshw/xwayland/xwayland-screen.h
- hw/xwayland/xwayland-window.c 86 additions, 12 deletionshw/xwayland/xwayland-window.c