XLibre Xserver
Go to file
Mario Kleiner e29d783278 modesetting: Only use modifiers on kms drivers which do support them.
Use the DRM_CAP_ADDFB2_MODIFIERS query to make sure the kms
driver supports modifiers in the addfb2 ioctl, and fall back
to addfb ioctl without modifiers if modifiers are unsupported.

E.g., as of Linux 4.17, nouveau-kms so far does not suppport
modifiers and gets angry if drmModeAddFB2WithModifiers() is
called (-> failure to set a video mode -> blank screen), but
Mesa's nvc0+ gallium driver causes gbm_bo_get_modifier() to
return a valid modifier by translating the default tiling of
bo's created via gbm_bo_create() into a modifier other than
DRM_FORMAT_MOD_INVALID (see Mesa's nvc0_miptree_get_modifier()).

Testing for != DRM_FORMAT_MOD_INVALID is apparently not
sufficient for safe use of drmModeAddFB2WithModifiers.

Bonus: Handle potential failure of populate_format_modifiers().

The required DRM_CAP is defined since libdrm v2.4.65, and we
require v2.4.89+ for the server, so we can use it unconditionally.

Tested on intel-kms, radeon-kms, nouveau-kms. Fixes failure on
NVidia Pascal.

Fixes: 2f807c2324 ("modesetting: Add support for multi-plane pixmaps when page-flipping")
Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Cc: Daniel Stone <daniels@collabora.com>
Cc: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
Reviewed-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
2018-04-23 14:05:43 -04:00
Xext meson: Ensure we always build Xext/hashtable.c for glx 2018-04-19 16:20:22 -04:00
Xi Use ARRAY_SIZE all over the tree 2017-10-30 13:45:20 -04:00
composite meson: Distribute more SDK headers 2018-04-02 13:42:08 -04:00
config meson: Fix install path for 10-quirks.conf 2018-03-27 10:28:33 -04:00
damageext Use ARRAY_SIZE all over the tree 2017-10-30 13:45:20 -04:00
dbe meson: Distribute more SDK headers 2018-04-02 13:42:08 -04:00
dix dix: always send focus event on grab change 2018-04-10 14:50:08 -04:00
doc Rewrite the byte swapping macros. 2017-04-25 15:01:23 -07:00
dri3 dri3: Fix dri3_buffers_from_pixmap request. 2018-04-17 10:24:42 -04:00
exa exa: promise not to touch the data when swapping pointers 2018-03-21 11:22:59 -04:00
fb meson: Distribute more SDK headers 2018-04-02 13:42:08 -04:00
glamor glamor: fix glamor_xv_query_image_attributes() for odd-width images 2018-04-17 17:30:16 -04:00
glx meson: Fix indenting in glx/meson.build 2018-04-19 16:20:27 -04:00
hw modesetting: Only use modifiers on kms drivers which do support them. 2018-04-23 14:05:43 -04:00
include meson: Distribute more SDK headers 2018-04-02 13:42:08 -04:00
m4 Add ax_pthread.m4 to m4/ 2016-05-29 19:20:51 -07:00
man man: s/__/@/g 2018-03-27 10:13:17 -04:00
mi mi: Hush an almost certainly bogus warning 2018-04-05 14:18:49 -04:00
miext meson: Distribute more SDK headers 2018-04-02 13:42:08 -04:00
os os/WaitFor: Check timers on every iteration 2018-04-17 16:30:36 -04:00
present meson: Distribute more SDK headers 2018-04-02 13:42:08 -04:00
pseudoramiX Unvalidated lengths 2017-10-10 23:33:34 +02:00
randr meson: Distribute more SDK headers 2018-04-02 13:42:08 -04:00
record Add a Meson build system alongside autotools. 2017-04-26 15:25:27 -07:00
render meson: Distribute more SDK headers 2018-04-02 13:42:08 -04:00
test travis: Bump rawhide image 2018-03-21 12:11:23 -04:00
xfixes xfixes: Restore monitoring of animated cursors 2018-02-14 13:52:45 -05:00
xkb xkb: Silence some compiler warnings 2018-04-05 14:18:47 -04:00
.appveyor.yml appveyor: use meson 2018-03-21 10:16:44 -04:00
.dir-locals.el Add .dir-locals.el 2013-08-17 12:17:36 +02:00
.gitignore .gitignore: Add new autotools file 'test-driver' 2014-04-21 13:41:42 -07:00
.travis.yml travis: Drop Xcode 8.2 2018-03-21 12:15:28 -04:00
COPYING modesetting: Merge modesetting's COPYING into the xserver's. 2014-09-15 12:46:02 -07:00
Makefile.am automake: Fix 'make dist' 2018-03-28 15:11:16 -04:00
README README: Add link to fd.o CoC 2017-04-11 08:51:34 -04:00
autogen.sh autogen: Set a default subject prefix for patches 2016-02-08 17:41:38 -05:00
configure.ac configure.ac: make use of wayland-scanner.pc 2018-04-12 17:17:43 -04:00
devbook.am doc: Create a script to filter xmlto output 2015-01-05 14:24:06 -08:00
docbook.am docbook.am: embed css styles inside the HTML HEAD element 2011-09-21 14:07:49 -07:00
fix-miregion
fix-miregion-private
fix-patch-whitespace Rename region macros to eliminate screen argument 2010-06-05 18:59:00 -07:00
fix-region Rename region macros to eliminate screen argument 2010-06-05 18:59:00 -07:00
manpages.am autotools: Fix excessive \-escaping that broke the build 2018-03-27 10:47:05 -04:00
meson.build meson: Ensure we always build Xext/hashtable.c for glx 2018-04-19 16:20:22 -04:00
meson_options.txt meson: Fix generation of xorg-server.pc 2018-03-28 09:54:26 -04:00
xorg-server.m4 macros: clarify documentation 2012-11-05 13:24:57 -06:00
xorg-server.pc.in xfree86: link modules against Xorg symbols on Cygwin 2012-04-05 21:57:07 -05:00
xserver.ent.in doc: relocate xserver.ent in the package root directory 2011-05-14 11:22:26 -07:00

					X Server

The X server accepts requests from client applications to create windows,
which are (normally rectangular) "virtual screens" that the client program
can draw into.

Windows are then composed on the actual screen by the X server
(or by a separate composite manager) as directed by the window manager,
which usually communicates with the user via graphical controls such as buttons
and draggable titlebars and borders.

For a comprehensive overview of X Server and X Window System, consult the
following article:
https://en.wikipedia.org/wiki/X_server

All questions regarding this software should be directed at the
Xorg mailing list:

        https://lists.freedesktop.org/mailman/listinfo/xorg

Please submit bug reports to the Xorg bugzilla:

        https://bugs.freedesktop.org/enter_bug.cgi?product=xorg

The master development code repository can be found at:

        git://anongit.freedesktop.org/git/xorg/xserver

        https://cgit.freedesktop.org/xorg/xserver

For patch submission instructions, see:

	https://www.x.org/wiki/Development/Documentation/SubmittingPatches

For more information on the git code manager, see:

        https://wiki.x.org/wiki/GitPage

As with other projects hosted on freedesktop.org, X.Org follows its
Code of Conduct, based on the Contributor Covenant. Please conduct
yourself in a respectful and civilized manner when using the above
mailing lists, bug trackers, etc:

	https://www.freedesktop.org/wiki/CodeOfConduct