summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2018-08-09meson: Add detection of libsystemd-daemon.HEADmasterEric Anholt2-1/+9
This enables Xtrans's systemd socket activation. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-08-09meson: Get close to parity with autotools for CLIENTIDS tracking.Eric Anholt2-2/+12
The client ID is only needed for XRes, and autotools build ignores the --clientids= arg if xres is disabled. We haven't made a meson option for disabling tracking client ids (is it actually worth a build option?), so just make this depend on xres. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-08-09meson: Add missing setup of the NO_LOCAL_CLIENT_CRED define.Eric Anholt1-1/+6
Ported from autotools. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-08-09meson: Make FALLBACK_INPUT_DRIVER configurable in meson.Eric Anholt3-3/+15
This makes us match the featureset of autotools, and also fixes the non-Linux default value to match. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-08-09meson: Make xf86vidmodeproto mandatory.Eric Anholt2-3/+2
This is silly to have optional based on detection of the protocol headers, particularly now that we have a single protocol header repo to install. Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Eric Anholt <eric@anholt.net>
2018-08-09meson: Add linking to x86 iopl libs on BSDs.Eric Anholt2-2/+8
Ported from automake. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-08-09meson: Add HAVE_LIBDISPATCH define to xquartz build.Eric Anholt2-8/+13
Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-08-09meson: Add PIO access support for FreeBSD and NetBSD on Alpha.Eric Anholt2-4/+10
Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-08-09meson, automake: Drop unused USESTDRES cflag setup.Eric Anholt5-6/+4
Nothing in tree references the flag. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-08-09autotools: Handle case when bindir var in xkbcomp.pc is absentvadym.shovkoplias1-1/+4
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107521 Fixes: 726839459cb (autotools: Derive xkb configuration from xkbcomp.pc) Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: vadym.shovkoplias <vadym.shovkoplias@globallogic.com>
2018-08-08dix: check_modmap_change() returns Success, not truePeter Hutterer1-1/+1
Not sure what if anything calls XSetDeviceModifierMapping() but this would've failed all the time. check_modmap_change() returns Success but we were treating it like a boolean. Fix this. Reported-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Keith Packard <keithp@keithp.com>
2018-08-02meson: Automatically detect HAVE_PTHREAD_SETNAME_NPEric Anholt1-1/+17
Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-08-02meson: Try to hook up BSD APM build configuration.Eric Anholt1-2/+9
I don't have a BSD to test on, but this should do the same as what autotools did. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-08-02xorg: Remove the XF86PM define.Eric Anholt7-29/+3
We already have pm_noop.c being built most of the time for the no-OS-PM case, so just switch to always using it. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-08-02automake,meson: Remove HAVE_LIBUDEV define.Eric Anholt2-2/+0
CONFIG_UDEV and CONFIG_UDEV_KMS are the actual defines that are used in the C code. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-08-02meson: Automatically detect support for XTRANS_SEND_FDs.Eric Anholt1-2/+4
The SCM_RIGHTS flag seems to be the thing that xtrans depends on, and meson makes the check easy without needing a build option. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-08-02meson: Remove XXX for libconfig in kdrive.Eric Anholt1-2/+0
This is already included in ephyr (the only kdrive server left) Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-08-02During reset/shutdown, clean up leases in DIX instead of each driverKeith Packard8-22/+30
Instead of having every video driver loop over any pending leases to free them during CloseScreen, do this up in the DIX layer by terminating leases when a leased CRTC or Output is destroyed and (just to make sure), also terminating leases in RRCloseScreen. The latter should "never" get invoked as any lease should be associated with a resource which was destroyed. This is required as by the time the driver's CloseScreen function is invoked, we've already freed all of the DIX randr structures and no longer have any way to reference the leases Signed-off-by: Keith Packard <keithp@keithp.com> Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=106960 Cc: Thomas Hellstrom <thellstrom@vmware.com>
2018-07-25modesetting: Fix cirrus 24bpp breakageTakashi Iwai1-1/+1
The recent rewrite of modesetting driver broke the 24bpp support. As typically found on cirrus KMS, it leads to a blank screen, spewing the error like: failed to add fb -22 (EE) modeset(0): failed to set mode: Invalid argument The culript is that the wrong bpp value of the front buffer is passed to drmModeAddFB(). Fix it by replacing with the back buffer bpp, drmmode->kbpp. Signed-off-by: Takashi Iwai <tiwai@suse.de> Tested-by: Stefan Dirsch <sndirsch@suse.de> Reviewed-by: Adam Jackson <ajax@redhat.com>
2018-07-25xwayland: Enable DRI3 for glamorOlivier Fourdan1-0/+1
glamor_fds_from_pixmap() will bail out early if DRI3 is not enabled, unfortunately Xwayland's glamor code would not set it as enabled which would lead to blank pixmaps when using texture from pixmap. Make sure to mark DRI3 as enabled from glamor_egl_screen_init() in Xwayland. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107287 Fixes: c8c276c956 ("glamor: Implement PixmapFromBuffers and BuffersFromPixmap") Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2018-07-25xwayland: rotate logical size for RRModeemersion1-1/+11
The logical size is the size of the output in the global compositor space. The mode width/height should be scaled as in the logical size, but shouldn't be transformed. Thus we need to rotate back the logical size to be able to use it as the mode width/height. This fixes issues with pointer input on transformed outputs. Signed-Off-By: Simon Ser <contact@emersion.fr> Reviewed-by: Olivier Fourdan <ofourdan@redhat.com>
2018-07-19Xext: dynamically allocate the PanoramiXDepths[j].vids arrayPeter Hutterer1-5/+4
Control flow is: PanoramiXMaybeAddDepth() allocates an array size 240 (pDepth->numVisuals) PanoramiXMaybeAddVisual() finds up to 270 matches (pScreen->numVisuals) and writes those into the previously allocated array. This caused invalid reads/writes followed by eventually a double-free abort. Reproduced with xorg-integration-tests server test XineramaTest.ScreenCrossing/* (and a bunch of others). Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Keith Packard <keithp@keithp.com>
2018-07-10modesetting: Fix 16 bit depth/bpp modeStefan Agner1-1/+3
When setting DefaultDepth to 16 in the Screen section, the current code requests a 32 bpp framebuffer, however the X-Server seems to assumes 16 bpp. Fixes commit 21217d02168d ("modesetting: Implement 32->24 bpp conversion in shadow update") Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Stefan Agner <stefan@agner.ch>
2018-07-03meson: ensure the libc has RPC functions when secure-rpc is enabledLyude Paul1-1/+5
Currently our meson.build just makes the assumption that the libc is going to provide RPC functions. This doesn't actually seem to be the case on Fedora, which causes compilation to fail unexpectedly: ../../Projects/xserver/os/rpcauth.c:47:10: fatal error: rpc/rpc.h: No such file or directory #include <rpc/rpc.h> ^~~~~~~~~~~ compilation terminated. So, in the event that we can't use libtirpc ensure that we actually check whether or not the libc provides rpc/rpc.h. If it doesn't, raise an error. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Lyude Paul <lyude@redhat.com>
2018-07-03xf86-video-modesetting: Lease planes as well if using atomicKeith Packard1-1/+6
If we're using atomic modesetting, then we're also using universal planes, and so the lease we create needs to include the plane. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
2018-07-03xf86-video-modesetting: Don't enable UNIVERSAL_PLANES separatelyKeith Packard1-2/+1
We don't want universal_planes unless we're using atomic APIs for modesetting, and the kernel already enables universal_planes automatically when atomic is enabled. If we enable universal_planes when we're not using atomic, then we won't have selected a plane for each crtc, and this will break lease creation which requires planes for each output when universal_planes is enabled. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
2018-07-02xfree86: Wrap RRCrtcIsLeased and RROutputIsLeased to check for DIX structuresKeith Packard1-8/+34
Before DIX structures are allocated for crtcs and outputs, we don't want to call DIX randr code with NULL pointers. This can happen if the driver sets video modes early in server initialization, which Nouveau does in zaphod mode. Cc: thellstrom@vmware.com Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=106772 Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=106960 Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com>
2018-07-02xfree86: Reset randr_crtc and randr_output early in xf86CrtcCloseScreenKeith Packard1-8/+14
The DIX crtc and output structures are freed when their resources are destroyed, which happens before CloseScreen is called. As a result, we know these pointers are invalid and referencing them during any of the remaining CloseScreen sequence will be bad. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com> Cc: thellstrom@vmware.com Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=106960
2018-07-02meson: use absolute paths in manpage substitutionsJon Turney1-3/+3
paths returned by get_option('foodir') are potentially relative to prefix Noticed when comparing manpages generated by a meson build with those generated by an autotools build Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-06-28modesetting: Allow a DRM fd to be passed on command line with -masterfd [v2]Keith Packard5-1/+50
This lets an application open a suitable DRM device and pass the file descriptor to the mode setting driver through an X server command line option, '-masterfd'. There's a companion application, xlease, which creates a DRM master by leasing an output from another X server. That is available at git clone git://people.freedesktop.org/~keithp/xlease v2: Always print usage, but note that it can't be used if setuid/gid Suggested-by: Lyude Paul <lyude@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Lyude Paul <lyude@redhat.com>
2018-06-28meson: Add configuration of listening on tcp, unix and localLaurent Carlier2-3/+10
bugzilla: https://bugs.kde.org/show_bug.cgi?id=395419 bugzilla: https://bugs.archlinux.org/task/59025 Signed-off-by: Laurent Carlier <lordheavym@gmail.com> Reviewed-by: Aaron Plattner <aplattner@nvidia.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-06-27modesetting: Fix uninitialized memory usage in drmmode_crtc_get_fb_id()Lyude Paul1-0/+2
This really sucked to find out :( Signed-off-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Karol Herbst <kherbst@redhat.com>
2018-06-27glamor: Work around GEM usage v2Thomas Hellstrom1-2/+12
KMS drivers are not required to support GEM. In particular, vmwgfx doesn't support flink and handles and names are identical. Getting a bo name should really be part of a lower level API, if needed, but in the mean time work around this by setting the name identical to the handle if GEM isn't supported. This fixes modesetting driver dri2 on vmwgfx. Reviewed-by: Deepak Rawat <drawat@vmware.com> Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
2018-06-27randr: Scream when creating a shared pixmap failsLyude Paul1-0/+1
This seems like a problem worth screaming about. Signed-off-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Dave Airlie <airlied@redhat.com>
2018-06-27glamor: Unbreak glamor_fd_from_pixmap()Lyude Paul5-25/+53
When support for allocating GBM BOs with modifiers was added, glamor_fd_from_pixmap() was changed so that it would return an error if it got a bo with modifiers set from glamor_fds_from_pixmap(). The problem is that on systems that support BOs with modifiers, glamor_fds_from_pixmap() will always return BOs with modifiers. This means that glamor_fd_from_pixmap() was broken entirely, which broke a number of other things including glamor_shareable_fd_from_pixmap(), which meant that modesetting using multiple GPUs with the modesetting DDX was also broken. Easy reproducer: - Find a laptop with DRI prime that has outputs connected to the dedicated GPU and integrated GPU - Try to enable one display on each using the modesetting DDX - Fail Since there isn't a way to ask for no modifiers from glamor_fds_from_pixmap, we create a shared _glamor_fds_from_pixmap() function used by both glamor_fds_from_pixmap() and glamor_fd_from_pixmap() that calls down to the appropriate glamor_egl_fd*_from_pixmap() function. Signed-off-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Cc: Louis-Francis Ratté-Boulianne <lfrb@collabora.com> Fixes: c8c276c956 ("glamor: Implement PixmapFromBuffers and BuffersFromPixmap")
2018-06-26modesetting: Also disable CRTC in drmmode_output_disable()Lyude Paul1-4/+7
So, this did actually work on older kernels at one point in time, however it seems that this working was a result of some of the Linux kernel's atomic modesetting helpers not preserving the CRTC's enabled state in the right spots. This was fixed in: 846c7dfc1193 ("drm/atomic: Try to preserve the crtc enabled state in drm_atomic_remove_fb, v2") As a result, atomic commits which simply disassociate a DRM connector with it's CRTC while leaving the CRTC in an enabled state aren't enough to disable the CRTC, and result in the atomic commit failing. This currently can cause issues with MST hotplugging where X will end up failing to disable the MST outputs after they've left the system. A simple reproducer: - Start up Xorg - Connect an MST hub with displays connected to it - Remove the hub - Now there should be CRTCs stuck on the orphaned MST connectors, and X won't be able to reclaim them. Signed-off-by: Lyude Paul <lyude@redhat.com> Cc: Louis-Francis Ratté-Boulianne <lfrb@collabora.com> Reviewed-by: Dave Airlie <airlied@redhat.com>
2018-06-26configure: Remove unused CONFIGFILEAdam Jackson1-1/+0
This isn't used for anything, which is just as well, because /etc/xorg.conf is not in fact a path xserver will try to use. Bugzilla: https://bugs.freedesktop.org/8890 Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Aaron Plattner <aplattner@nvidia.com>
2018-06-26modesetting: use drmmode_bo_import() for rotate_fbOlivier Fourdan1-5/+2
drmmode_shadow_allocate() still uses drmModeAddFB() which may fail if the format is not as expected, preventing from using a rotated output. Change it to use the new function drmmode_bo_import() which takes care of calling the drmModeAddFB2() API. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106715 Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Tested-by: Tomas Pelka <tpelka@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com>
2018-06-26Change the DPMS initialization to be conditional on not set from configJohn Lumby1-4/+12
Any DPMS timeout values set in ServerFlags section of the xorg.conf are being overwritten by DPMS extension initialization. Therefore change the DPMS initialization of timeout values to be conditional on not set from config. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106963 Signed-off-by: John Lumby <johnlumby@hotmail.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Keith Packard <keithp@keithp.com>
2018-06-26os: Recompute whether any clients are ready after check_timers()Damien Leone1-1/+2
If a driver calls AttendClient() from within a timer callback we need to re-compute the local 'are_ready' to prevent the attended client from waiting until WaitForSomething() times out. This is a fix similar to commit 9ed5b263. Signed-off-by: Damien Leone <dleone@nvidia.com> Reviewed-by: Keith Packard <keithp@keithp.com>
2018-06-21xwayland: mandatory EGL backend APIOlivier Fourdan2-11/+3
The API init_wl_registry() and has_wl_interfaces() are marked as being optional, but both GBM And EGLStream backends implement them so there is point in keeping those optional. Suggested-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
2018-06-21xwayland: simplify xwl_glamor_pixmap_get_wl_buffer()Olivier Fourdan6-19/+4
When retrieving the Wayland buffer from a pixmap, if the buffer already exists, the GBM backend will return that existing buffer. However, as seen with the Present issues, if the call had previously passed a wrong size, that buffer will remain at the wrong size for as long as the buffer exists, which is error prone. Considering that the width/height passed to get_wl_buffer() is always the actual pixmap drawable size, and considering that the EGLStream backend makes no use of the size either, there is really no point in passing the width/height around. Simplify the xwl_glamor_pixmap_get_wl_buffer() and EGL backends API by removing the pixmap size, and use the drawable size instead. Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
2018-06-21xwayland: EGL_IMG_context_priority required by EGLStreamOlivier Fourdan1-0/+6
xwl_glamor_eglstream_init_egl() uses "EGL_IMG_context_priority" extension, make sure it's actually available before using it. Suggested-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2018-06-21xwayland: check for EGLStream backend explicitlyOlivier Fourdan1-3/+2
Now that we have separate backends for EGLStream and GBM, we can explicitly check for the EGLStream backend to disable present support in that case. Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2018-06-21xwayland: refactor EGL backends for wayland registryOlivier Fourdan6-63/+148
To be able to check for availability of the Wayland interfaces required to run a given EGL backend (either GBM or EGLStream for now), we need to have each backend structures and vfuncs in place before we enter the Wayland registry dance. That basically means that we should init all backends at first, connect to the Wayland compositor and query the available interfaces and then decide which backend is available and should be used (or none if either the Wayland interfaces or the EGL extensions are not available). For this purpose, hold an egl_backend struct for each backend we are to consider prior to connect to the Wayland display so that, when we get to query the Wayland interfaces, everything is in place for each backend to handle the various Wayland interfaces. Eventually, when we need to chose which EGL backend to use for glamor, the available Wayland interfaces and EGL extensions available are all known to Xwayland. Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2018-06-21xwayland: move EGL backend init to glamorOlivier Fourdan3-14/+21
Move EGL backends initialization to its own function in xwayland-glamor.c Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2018-06-21xwayland: Add Wayland interfaces checkOlivier Fourdan4-8/+52
Introduces a new egl_backend function to let the EGL backend check for the presence of the required Wayland interfaces. Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2018-06-21xwayland: move egl_backend to its own structOlivier Fourdan1-48/+51
EGL backend availability requires both EGL extensions and Wayland interfaces to be present, so we will need to consider multiple backends during initialization. As a preliminary work, move the egl_backend to its own struct so that we can have more than one backend at any given time. Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2018-06-21xwayland: skip drm authentication with render nodeOlivier Fourdan1-0/+6
If using a render node, we can skip DRM authentication. Suggested-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2018-06-21xwayland: GBM should fail w/out "GL_OES_EGL_image"Olivier Fourdan1-1/+3
Surely, we should fail to init GBM backend if "GL_OES_EGL_image" is missing. This seems to have been lost with commit 1545e2dba ("xwayland: Decouple GBM from glamor"). Suggested-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>