xserver-xorg-video-ati: Changes to 'debian-unstable'
.editorconfig | 3
ChangeLog | 539 ++++++++++++++++++++++++++++++++++++++++++++++++++
Makefile.am | 2
autogen.sh | 11 -
conf/10-radeon.conf | 5
conf/Makefile.am | 24 ++
configure.ac | 20 +
debian/changelog | 6
man/radeon.man | 17 +
src/ati.c | 40 +++
src/drmmode_display.c | 495 ++++++++++++++++++++++++++++++++-------------
src/drmmode_display.h | 15 +
src/radeon.h | 24 --
src/radeon_dri2.c | 42 ++-
src/radeon_dri3.c | 37 +++
src/radeon_glamor.c | 11 -
src/radeon_kms.c | 326 +++++++++++++++++-------------
src/radeon_present.c | 19 +
src/radeon_probe.h | 2
19 files changed, 1305 insertions(+), 333 deletions(-)
New commits:
commit 86629562be50a24bab7b682583ad087a2e182455
Author: Timo Aaltonen <tjaalton@debian.org>
Date: Thu Mar 16 16:15:48 2017 +0200
update changelogs
diff --git a/ChangeLog b/ChangeLog
index db47757..049526f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,542 @@
+commit 66227060872219c1a0dc84fa4cea6264f7548446
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Thu Mar 16 16:38:15 2017 +0900
+
+ Bump version for 7.9.0 release
+
+commit 9a71445094b728f3d78db8f6808b4782ee19a453
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Wed Mar 8 17:42:56 2017 +0900
+
+ Pass TRUE to drmmode_set_desired_modes the first time for GPU screens
+
+ This is the only place we call drmmode_set_desired_modes for GPU screens
+ during server startup. Without this change, the display outputs of
+ secondary GPUs may stay on even while Xorg isn't using them.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 67ae5e00a748ad52cf92738d401afff2947b1891
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Wed Mar 8 11:20:30 2017 +0900
+
+ Skip some initialization steps for GPU screens
+
+ Xorg doesn't use the following functionality of GPU screens, so don't
+ bother initializing it:
+
+ * DRI page flipping
+ * DRI3 / Present / SYNC fences
+ * XVideo / XvMC
+ * Root window with background None
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit f0e7948e1c0e984fc27f235f365639e9cf628291
+Author: Jochen Rollwagen <joro-2013@t-online.de>
+Date: Sun Mar 5 11:32:38 2017 +0100
+
+ Fix build for XServer 1.13
+
+ Latest git build stops with the error message
+
+ radeon_kms.c: In function 'RADEONWindowExposures_oneshot':
+ radeon_kms.c:1644:45: error: expected expression before 'RegionPtr'
+ pScreen->WindowExposures(pWin, pRegion, RegionPtr pBSRegion);
+
+ This patch fixes the build.
+
+ Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
+
+commit d63881623f0686a66a2e3e3c1f84e496aa52ec6b
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Thu Mar 2 16:22:51 2017 +0900
+
+ Don't call radeon_cs_flush_indirect & radeon_bo_wait in drmmode_copy_fb
+
+ RADEONWindowExposures_oneshot takes care of it.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit cc9d6b7db9c2078be1e530a64af6d517c6a42024
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Wed Mar 1 17:35:59 2017 +0900
+
+ Move DPMS check from radeon_scanout_do_update to radeon_scanout_flip
+
+ When radeon_scanout_do_update is called from
+ drmmode_crtc_scanout_update, drmmode_crtc->pending_dpms_mode may still
+ be != DPMSModeOn, e.g. during server startup.
+
+ Fixes intermittently showing garbage with TearFree enabled.
+
+commit 0a12bf1085505017068dfdfd31d23133e51b45b9
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Wed Mar 1 18:00:40 2017 +0900
+
+ Call drmmode_set_desired_modes from a WindowExposures hook
+
+ This is the earliest opportunity where the root window contents are
+ guaranteed to be initialized, and prevents drmmode_set_mode_major from
+ getting called before drmmode_set_desired_modes via RADEONUnblank ->
+ drmmode_crtc_dpms. Also, in contrast to the BlockHandler hook, this is
+ called when running Xorg with -pogo.
+
+ Fixes intermittently showing garbage on server startup or after server
+ reset.
+
+ As a bonus, this avoids trouble due to higher layers (e.g. the tigervnc
+ Xorg module) calling RADEONBlockHandler_oneshot repeatedly even after
+ we set pScreen->BlockHandler = RADEONBlockHandler_KMS.
+
+ v2:
+ * Drop spaces between XORG_VERSION_NUMERIC arguments
+ * Call radeon_bo_wait after radeon_cs_flush_indirect
+
+ Bugzilla: https://bugs.freedesktop.org/99457
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com> (v1)
+
+commit df2d749a4db33298c8ce9f2cfb77c20c5538c9cc
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Thu Mar 2 16:05:42 2017 +0900
+
+ Fix bogus indentation
+
+ Trivial.
+
+ Fixes: 58cd1600057e ("Allow toggling TearFree at runtime via output property")
+
+commit 9035b6abea557828e672ee455f0c84e43da0906f
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Tue Feb 28 18:13:42 2017 +0900
+
+ present: Flush before flipping
+
+ This isn't necessary for DRI clients, but the Present extension can also
+ be used for presenting normal pixmaps rendered to via the X11 protocol.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 0a4eb0e12f0c9c653cf4cea6fd62e1a507eb261c
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Fri Feb 10 12:52:02 2017 +0900
+
+ present: Use async flip for unflip if possible
+
+ In that case, unflip operations should finish faster in general.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 9a951a3e551db58ba50e7a594521ceac54d90615
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Tue Feb 28 18:06:55 2017 +0900
+
+ present: Also flush before using a flip to unflip
+
+ Not doing so might result in intermittently scanning out stale contents
+ of the screen pixmap.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit f2bc882f1c1082bed9f496cfab6c8f07a76bc122
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Tue Feb 28 17:31:14 2017 +0900
+
+ Handle rotation in the driver also with Xorg 1.12-1.18
+
+ We cannot use the HW cursor in that case, but in turn we get more
+ efficient and less teary updates of rotated outputs.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit ae921a3150f69c38b5b3c88a9e37d54fdf0d5093
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Tue Feb 28 17:47:09 2017 +0900
+
+ Fold drmmode_crtc_scanout_allocate into drmmode_crtc_scanout_create
+
+ Not used anywhere else anymore.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 987a34adb319923ad36e2b47a26837248f187c3e
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Tue Feb 28 17:17:20 2017 +0900
+
+ Call drmmode_crtc_scanout_create in drmmode_crtc_shadow_allocate as well
+
+ Calling drmmode_crtc_scanout_allocate in drmmode_crtc_shadow_allocate
+ resulted in drmmode_crtc_scanout_create called from
+ drmmode_crtc_shadow_create passing an uninitialized pitch value to
+ drmmode_create_bo_pixmap.
+
+ Fixes issues such as failure to allocate the scanout pixmap or visual
+ corruption and GPUVM faults when attempting to use rotation with Xorg
+ <1.19.
+
+ Bugzilla: https://bugs.freedesktop.org/99916
+ Fixes: ea30d856ba5e ("Pass pitch from drmmode_crtc_scanout_allocate to drmmode_create_bo_pixmap")
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 244d4bc7f8c8f6bc90f49556c0b9344c8aa40295
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Thu Feb 9 18:55:04 2017 +0900
+
+ present: Wait for screen pixmap BO idle before setting modes for unflip
+
+ To make sure the screen pixmap contents are up to date when it starts
+ being scanned out.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 3ff29e5a14451916bc66b4e0028e9a317f0723f8
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Thu Feb 9 18:50:40 2017 +0900
+
+ present: Only call drmModeRmFB after setting modes for unflip
+
+ Fixes display intermittently blanking when a modeset is used for unflip.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 0c29deb5a97d9a57e994cc0053c49ddf7aca6ecb
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Tue Feb 21 16:56:27 2017 +0900
+
+ Use drmmode_crtc_scanout_free in drmmode_fini
+
+ We were leaking drmmode_crtc->scanout_damage, which caused trouble on
+ server reset. Fixes server reset with active separate scanout pixmaps.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 58cd1600057e41aade0106d4acf78e23eac6e44f
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Thu Dec 1 18:37:57 2016 +0900
+
+ Allow toggling TearFree at runtime via output property
+
+ Option "TearFree" now sets the default value of the output property.
+ See the manpage update for details.
+
+ TearFree is now enabled by default for outputs using rotation or other
+ RandR transforms, and for RandR 1.4 slave outputs.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 305e2cbf335837a2ab6a24e9ff65815afe038296
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Tue Feb 21 15:55:13 2017 +0900
+
+ Factor out drmmode_crtc_scanout_update helper
+
+ Cleanup in preparation for following change, no functional change
+ intended.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 649644a88347a6d03de68f8c41db03a82deeb23b
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Tue Feb 14 17:36:31 2017 +0900
+
+ Factor out radeon_prime_dirty_to_crtc helper
+
+ Cleanup in preparation for the following change, no functional change
+ intended.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 1351e48efe7a2c28eab447e16f36a00fbd02ae48
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Tue Feb 7 18:43:56 2017 +0900
+
+ Don't destroy current FB if drmModeAddFB fails
+
+ It would probably result in a black screen.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 481394e3c9f9f7d88bb66fe9ae8834c87952a8ab
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Tue Feb 7 18:39:05 2017 +0900
+
+ Fix flip event data leak if calloc or drmModeAddFB fails
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 80fc78633962c1ec996b1721bfb757b98dc85bfc
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Tue Jan 31 16:25:37 2017 +0900
+
+ Don't handle Option "SwapbuffersWait" at all with glamor
+
+ It never had any effect with glamor.
+
+ v2: Better formatting, no functional change from v1.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com> (v1)
+
+commit d611d21d9bf9aaa100ff7a5762e5980634846207
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Tue Jan 24 18:05:45 2017 +0900
+
+ Enable tiling by default with glamor on PALM
+
+ The DFS check is only relevant for EXA.
+
+ The lack of tiling prevented DRI3 clients from using page flipping,
+ resulting in tearing.
+
+ Bugzilla: https://bugs.freedesktop.org/99491
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 55a33205cb9bd8091b4bcd478c2d1d191248681b
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Tue Jan 24 18:22:49 2017 +0900
+
+ Add 10-radeon.conf xorg.conf.d snippet
+
+ This instructs Xorg >= 1.16 to try loading the radeon driver for devices
+ managed by the radeon kernel driver, even if the ati wrapper driver
+ isn't available.
+
+ Copied from the amdgpu driver.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 8e6a4e96b7b27559e186f71b5547abb0a80b96dd
+Author: Mihail Konev <k.mvc@ya.ru>
+Date: Thu Jan 26 14:00:22 2017 +1000
+
+ autogen: add default patch prefix
+
+ Signed-off-by: Mihail Konev <k.mvc@ya.ru>
+
+commit e062933b5489705bdcba7a266d14ba6fd3e767ba
+Author: Emil Velikov <emil.l.velikov@gmail.com>
+Date: Mon Mar 9 12:00:52 2015 +0000
+
+ autogen.sh: use quoted string variables
+
+ Place quotes around the $srcdir, $ORIGDIR and $0 variables to prevent
+ fall-outs, when they contain space.
+
+ Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
+ Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 4fe183111f82d412760b175b3c9c8583acba804a
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Tue Jan 24 10:32:07 2017 +1000
+
+ autogen.sh: use exec instead of waiting for configure to finish
+
+ Syncs the invocation of configure with the one from the server.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+ Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
+
+commit a1787e4615a76ab0bb12498be66591c86a6b07ae
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Wed Jan 18 19:07:11 2017 +0900
+
+ ati: Support loading the amdgpu driver from the ati wrapper
+
+ If .../share/X11/xorg.conf.d/10-amdgpu.conf doesn't exist, but the ati
+ wrapper is loaded, it will otherwise try to use the radeon driver even
+ for GPUs driven by the amdgpu kernel driver. This can only fail,
+ potentially in bad ways.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 41b82c776b571e1556f300d77c715aebdd87d8e6
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Tue Jan 24 18:14:23 2017 +0900
+
+ .editorconfig: src/ati.c only uses spaces for indentation
+
+ Trivial.
+
+commit ea30d856ba5e7274c8ea499293b8b0e721b8e082
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Fri Jan 6 17:36:05 2017 +0900
+
+ Pass pitch from drmmode_crtc_scanout_allocate to drmmode_create_bo_pixmap
+
+ radeon_bo_get_tiling can fail, e.g. for linear BOs.
+
+ Fixes TearFree not working in those cases.
+
+ Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97873
+ Fixes: 040a7b80e1fc ("Explicitly set the fbcon pixmap pitch again")
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 720dd07e79b5f5cbbf3ef8bd92300578c485d583
+Author: Jammy Zhou <Jammy.Zhou@amd.com>
+Date: Mon Dec 19 17:27:19 2016 +0900
+
+ Use render node for DRI3 if available
+
+ Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com>
+ (ported from amdgpu commit ea558e645786b08d75307716036045170e97b43e)
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+ [ Second attempt, let's see if there's any fallout this time... ]
+
+commit 92fc387a6256ce3c95d62142735783ea07162c54
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Thu Dec 15 12:44:47 2016 +0900
+
+ Simplify drmmode_handle_uevents
+
+ No functional change intended.
+
+ Reviewed-by: Jim Qu <Jim.Qu@amd.com>
+ (Cherry picked from amdgpu commit edd276185d42962a13faf9ec9eeebc754ef284e7.)
+
+commit 404c64752774d23a2db9aa3134f6ada3155708c9
+Author: jimqu <Jim.Qu@amd.com>
+Date: Wed Dec 14 11:46:16 2016 +0900
+
+ udev_monitor_receive_device() will block when hotplug monitor
+
+ udev_monitor_receive_device() will block and wait for the event of udev
+ use select() to ensure that this will not block.
+
+ Signed-off-by: JimQu <Jim.Qu@amd.com>
+ Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
+ (Cherry picked from amdgpu commit 732cf4d3a248b288532ad0f3443da49e08dc7507)
+
+commit a89c0bced423ce3e09f66edafc35642a7cc03b2f
+Author: Jochen Rollwagen <joro-2013@t-online.de>
+Date: Fri Dec 2 10:56:39 2016 +0100
+
+ Calculate log base 2 in radeon.h based on clz for all platforms
+
+ This commit replaces the inline assembler code (for x86 platforms) and
+ loop (for non-x86 platforms) in RADEONLog2 with a one-liner version
+ based on clz (count leading zeroes).
+
+ Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
+
+commit e2942449171fe628a7726e59bcaab65e27d88563
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Mon Nov 21 18:47:53 2016 +0900
+
+ Call radeon_drm_abort_entry on failure to flip to a scanout pixmap
+
+ Fixes leaking the corresponding struct radeon_drm_queue list entry in
+ that case.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 14c3f59f5157885ad8f941f0bad6c0c5e3db12f8
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Mon Nov 21 18:45:30 2016 +0900
+
+ Call ValidateGC after ChangeClip in radeon_sync_scanout_pixmaps
+
+ The wrong order meant that the clipping region wasn't actually applied,
+ so it always copied the full contents from the other scanout pixmap.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit a995f5830916a0fee5126263d1bfe48632be3a15
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Mon Nov 21 18:39:00 2016 +0900
+
+ Fix radeon_scanout_extents_intersect for GPU screens
+
+ Fixes incorrect screen updates with TearFree enabled on PRIME slave
+ outputs which are not located at (0, 0).
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit e543ef3a2fb304cbe3a965fb780632af2e4186f4
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Mon Nov 21 18:33:25 2016 +0900
+
+ Take current scanout_id into account everywhere involved with TearFree
+
+ Fixes various potential issues with TearFree enabled, e.g. outputs
+ freezing after display configuration changes.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit f130b10e63f7526360b41aa0918b4940f63f662a
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Fri Nov 25 18:12:40 2016 +0900
+
+ Add radeon_is_gpu_screen helper
+
+ This will hopefully decrease the chance of accidentally breaking the
+ build against xserver < 1.13 in the future.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 487aa62a2a23b86e4ea4714fdfd465c9e513141f
+Author: Jochen Rollwagen <joro-2013@t-online.de>
+Date: Thu Nov 24 18:44:01 2016 +0100
+
+ fix build for xserver < 1.13
+
+ same procedure every few patches.....
+
+ Fixes: 13c6bc5e3827 ("Don't install Flush/EventCallback for GPU screens")
+ Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
+
+commit 5fea5ef2f07eee4a0f94baab427010b936f1d4b4
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Thu Nov 24 18:45:22 2016 +0900
+
+ Pass fb_id into drmmode_page_flip_target_absolute/relative
+
+ drmmode->fb_id isn't what we need in the TearFree case. Fixes TearFree
+ freezing with
+
+ (WW) RADEON(0): flip queue failed in radeon_scanout_flip: No such file or directory
+
+ in the log file.
+
+ Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98834
+ Fixes: 1106b2f773ad ("Use DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE/RELATIVE flags when available")
+
+commit 13c6bc5e382765fe567091e1c616c0a26eec04ca
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Mon Aug 1 18:11:57 2016 +0900
+
+ Don't install Flush/EventCallback for GPU screens
+
+ Their purpose is to flush GPU rendering commands corresponding to damage
+ events, but there can be no damage events corresponding to GPU screen
+ rendering operations.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit f11531c99fcd6473f58b4d10efaf3efd84304d8e
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Mon Nov 21 18:15:05 2016 +0900
+
+ Enable glamor by default with >= R600 and Xorg >= 1.18.3
+
+ glamor should now perform at least as well as EXA in general, and this
+ allows DRI3 to be enabled by default for >= R600.
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit 1106b2f773ad0611c729b27f4c192a26b43ef1e7
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Wed Jul 6 15:25:33 2016 +0900
+
+ Use DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE/RELATIVE flags when available
+
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+commit aab80d2203efb8569b26dd02a1c651c792e1ef0c
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Fri Nov 18 12:11:38 2016 +0900
+
+ Post-release version bump
+
commit 5cbe1ee8e499e1b6b2646e341946292721d07e69
Author: Michel Dänzer <michel.daenzer@amd.com>
Date: Thu Nov 17 11:27:16 2016 +0900
diff --git a/debian/changelog b/debian/changelog
index 63a8228..ee61960 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+xserver-xorg-video-ati (1:7.9.0-1) UNRELEASED; urgency=medium
+
+ * New upstream release.
+
+ -- Timo Aaltonen <tjaalton@debian.org> Thu, 16 Mar 2017 16:12:09 +0200
+
xserver-xorg-video-ati (1:7.8.0-1) unstable; urgency=medium
* New upstream release.
commit 66227060872219c1a0dc84fa4cea6264f7548446
Author: Michel Dänzer <michel.daenzer@amd.com>
Date: Thu Mar 16 16:38:15 2017 +0900
Bump version for 7.9.0 release
diff --git a/configure.ac b/configure.ac
index 732f705..b83b18f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-video-ati],
- [7.8.99],
+ [7.9.0],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[xf86-video-ati])
commit 9a71445094b728f3d78db8f6808b4782ee19a453
Author: Michel Dänzer <michel.daenzer@amd.com>
Date: Wed Mar 8 17:42:56 2017 +0900
Pass TRUE to drmmode_set_desired_modes the first time for GPU screens
This is the only place we call drmmode_set_desired_modes for GPU screens
during server startup. Without this change, the display outputs of
secondary GPUs may stay on even while Xorg isn't using them.
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index 907ebfc..424f9f7 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -328,7 +328,8 @@ static Bool RADEONCreateScreenResources_KMS(ScreenPtr pScreen)
}
}
- if (!drmmode_set_desired_modes(pScrn, &info->drmmode, FALSE))
+ if (!drmmode_set_desired_modes(pScrn, &info->drmmode,
+ radeon_is_gpu_screen(pScreen)))
return FALSE;
drmmode_uevent_init(pScrn, &info->drmmode);
commit 67ae5e00a748ad52cf92738d401afff2947b1891
Author: Michel Dänzer <michel.daenzer@amd.com>
Date: Wed Mar 8 11:20:30 2017 +0900
Skip some initialization steps for GPU screens
Xorg doesn't use the following functionality of GPU screens, so don't
bother initializing it:
* DRI page flipping
* DRI3 / Present / SYNC fences
* XVideo / XvMC
* Root window with background None
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
diff --git a/src/radeon.h b/src/radeon.h
index 815c12a..7374411 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -183,8 +183,10 @@ typedef enum {
#if XF86_CRTC_VERSION >= 5
#define RADEON_PIXMAP_SHARING 1
#define radeon_is_gpu_screen(screen) (screen)->isGPU
+#define radeon_is_gpu_scrn(scrn) (scrn)->is_gpu
#else
#define radeon_is_gpu_screen(screen) 0
+#define radeon_is_gpu_scrn(scrn) 0
#endif
#define RADEON_VSYNC_TIMEOUT 20000 /* Maximum wait for VSYNC (in usecs) */
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index 7a561fa..907ebfc 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -1811,32 +1811,36 @@ Bool RADEONPreInit_KMS(ScrnInfoPtr pScrn, int flags)
info->tear_free == 2 ? "auto" : (info->tear_free ? "on" : "off"));
}
- if (info->dri2.pKernelDRMVersion->version_minor >= 8) {
- Bool sw_cursor = xf86ReturnOptValBool(info->Options, OPTION_SW_CURSOR, FALSE);
-
- info->allowPageFlip = xf86ReturnOptValBool(info->Options,
- OPTION_PAGE_FLIP, TRUE);
-
- if (sw_cursor || info->shadow_primary) {
- xf86DrvMsg(pScrn->scrnIndex,
- info->allowPageFlip ? X_WARNING : X_DEFAULT,
- "KMS Pageflipping: disabled%s\n",
- info->allowPageFlip ?
- (sw_cursor ? " because of SWcursor" :
- " because of ShadowPrimary") : "");
- info->allowPageFlip = FALSE;
- } else {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "KMS Pageflipping: %sabled\n", info->allowPageFlip ? "en" : "dis");
+ if (!radeon_is_gpu_scrn(pScrn)) {
+ if (info->dri2.pKernelDRMVersion->version_minor >= 8) {
+ Bool sw_cursor = xf86ReturnOptValBool(info->Options,
+ OPTION_SW_CURSOR, FALSE);
+
+ info->allowPageFlip = xf86ReturnOptValBool(info->Options,
+ OPTION_PAGE_FLIP, TRUE);
+
+ if (sw_cursor || info->shadow_primary) {
+ xf86DrvMsg(pScrn->scrnIndex,
+ info->allowPageFlip ? X_WARNING : X_DEFAULT,
+ "KMS Pageflipping: disabled%s\n",
+ info->allowPageFlip ?
+ (sw_cursor ? " because of SWcursor" :
+ " because of ShadowPrimary") : "");
+ info->allowPageFlip = FALSE;
+ } else {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "KMS Pageflipping: %sabled\n",
+ info->allowPageFlip ? "en" : "dis");
+ }
}
- }
- if (!info->use_glamor) {
- info->swapBuffersWait =
- xf86ReturnOptValBool(info->Options, OPTION_SWAPBUFFERS_WAIT, TRUE);
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "SwapBuffers wait for vsync: %sabled\n",
- info->swapBuffersWait ? "en" : "dis");
+ if (!info->use_glamor) {
+ info->swapBuffersWait =
+ xf86ReturnOptValBool(info->Options, OPTION_SWAPBUFFERS_WAIT, TRUE);
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "SwapBuffers wait for vsync: %sabled\n",
+ info->swapBuffersWait ? "en" : "dis");
+ }
}
if (xf86ReturnOptValBool(info->Options, OPTION_DELETE_DP12, FALSE)) {
@@ -2244,33 +2248,35 @@ Bool RADEONScreenInit_KMS(SCREEN_INIT_ARGS_DECL)
}
#endif
- if (xorgGetVersion() >= XORG_VERSION_NUMERIC(1,18,3,0,0))
- value = info->use_glamor;
- else
- value = FALSE;
- from = X_DEFAULT;
+ if (!radeon_is_gpu_screen(pScreen)) {
+ if (xorgGetVersion() >= XORG_VERSION_NUMERIC(1,18,3,0,0))
+ value = info->use_glamor;
+ else
+ value = FALSE;
+ from = X_DEFAULT;
- if (!info->r600_shadow_fb) {
- if (xf86GetOptValBool(info->Options, OPTION_DRI3, &value))
- from = X_CONFIG;
+ if (!info->r600_shadow_fb) {
+ if (xf86GetOptValBool(info->Options, OPTION_DRI3, &value))
+ from = X_CONFIG;
- if (xf86GetOptValInteger(info->Options, OPTION_DRI, &driLevel) &&
- (driLevel == 2 || driLevel == 3)) {
- from = X_CONFIG;
- value = driLevel == 3;
+ if (xf86GetOptValInteger(info->Options, OPTION_DRI, &driLevel) &&
+ (driLevel == 2 || driLevel == 3)) {
+ from = X_CONFIG;
+ value = driLevel == 3;
+ }
}
- }
- if (value) {
- value = radeon_sync_init(pScreen) &&
- radeon_present_screen_init(pScreen) &&
- radeon_dri3_screen_init(pScreen);
+ if (value) {
+ value = radeon_sync_init(pScreen) &&
+ radeon_present_screen_init(pScreen) &&
+ radeon_dri3_screen_init(pScreen);
- if (!value)
- from = X_WARNING;
- }
+ if (!value)
+ from = X_WARNING;
+ }
- xf86DrvMsg(pScrn->scrnIndex, from, "DRI3 %sabled\n", value ? "en" : "dis");
+ xf86DrvMsg(pScrn->scrnIndex, from, "DRI3 %sabled\n", value ? "en" : "dis");
+ }
pScrn->vtSema = TRUE;
xf86SetBackingStore(pScreen);
@@ -2325,7 +2331,8 @@ Bool RADEONScreenInit_KMS(SCREEN_INIT_ARGS_DECL)
*/
/* xf86DiDGAInit(pScreen, info->LinearAddr + pScrn->fbOffset); */
#endif
- if (info->r600_shadow_fb == FALSE) {
+ if (info->r600_shadow_fb == FALSE &&
+ !radeon_is_gpu_screen(pScreen)) {
/* Init Xv */
xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
"Initializing Xv\n");
@@ -2341,12 +2348,14 @@ Bool RADEONScreenInit_KMS(SCREEN_INIT_ARGS_DECL)
}
pScrn->pScreen = pScreen;
- if (serverGeneration == 1 && bgNoneRoot && info->accelOn) {
- info->CreateWindow = pScreen->CreateWindow;
- pScreen->CreateWindow = RADEONCreateWindow_oneshot;
+ if (!radeon_is_gpu_screen(pScreen)) {
+ if (serverGeneration == 1 && bgNoneRoot && info->accelOn) {
+ info->CreateWindow = pScreen->CreateWindow;
+ pScreen->CreateWindow = RADEONCreateWindow_oneshot;
+ }
+ info->WindowExposures = pScreen->WindowExposures;
+ pScreen->WindowExposures = RADEONWindowExposures_oneshot;
}
- info->WindowExposures = pScreen->WindowExposures;
- pScreen->WindowExposures = RADEONWindowExposures_oneshot;
/* Provide SaveScreen & wrap BlockHandler and CloseScreen */
/* Wrap CloseScreen */
commit f0e7948e1c0e984fc27f235f365639e9cf628291
Author: Jochen Rollwagen <joro-2013@t-online.de>
Date: Sun Mar 5 11:32:38 2017 +0100
Fix build for XServer 1.13
Latest git build stops with the error message
radeon_kms.c: In function 'RADEONWindowExposures_oneshot':
radeon_kms.c:1644:45: error: expected expression before 'RegionPtr'
pScreen->WindowExposures(pWin, pRegion, RegionPtr pBSRegion);
This patch fixes the build.
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index 572dfcc..7a561fa 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -1641,7 +1641,7 @@ static void RADEONWindowExposures_oneshot(WindowPtr pWin, RegionPtr pRegion
pScreen->WindowExposures = info->WindowExposures;
#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1,16,99,901,0)
- pScreen->WindowExposures(pWin, pRegion, RegionPtr pBSRegion);
+ pScreen->WindowExposures(pWin, pRegion, pBSRegion);
#else
pScreen->WindowExposures(pWin, pRegion);
#endif
commit d63881623f0686a66a2e3e3c1f84e496aa52ec6b
Author: Michel Dänzer <michel.daenzer@amd.com>
Date: Thu Mar 2 16:22:51 2017 +0900
Don't call radeon_cs_flush_indirect & radeon_bo_wait in drmmode_copy_fb
RADEONWindowExposures_oneshot takes care of it.
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index a7904a3..ab11583 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -490,9 +490,6 @@ void drmmode_copy_fb(ScrnInfoPtr pScrn, drmmode_ptr drmmode)
FreeScratchGC(gc);
- radeon_cs_flush_indirect(pScrn);
- radeon_bo_wait(info->front_bo);
-
pScreen->canDoBGNoneRoot = TRUE;
destroy_pixmap_for_fbcon(pScrn);
return;
commit cc9d6b7db9c2078be1e530a64af6d517c6a42024
Author: Michel Dänzer <michel.daenzer@amd.com>
Date: Wed Mar 1 17:35:59 2017 +0900
Move DPMS check from radeon_scanout_do_update to radeon_scanout_flip
When radeon_scanout_do_update is called from
drmmode_crtc_scanout_update, drmmode_crtc->pending_dpms_mode may still
be != DPMSModeOn, e.g. during server startup.
Fixes intermittently showing garbage with TearFree enabled.
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index c2089eb..572dfcc 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -882,7 +882,6 @@ radeon_scanout_do_update(xf86CrtcPtr xf86_crtc, int scanout_id)
Bool force;
if (!xf86_crtc->enabled ||
- drmmode_crtc->pending_dpms_mode != DPMSModeOn ||
!drmmode_crtc->scanout[scanout_id].pixmap)
return FALSE;
@@ -1069,7 +1068,8 @@ radeon_scanout_flip(ScreenPtr pScreen, RADEONInfoPtr info,
uintptr_t drm_queue_seq;
unsigned scanout_id;
- if (drmmode_crtc->scanout_update_pending)
+ if (drmmode_crtc->scanout_update_pending ||
+ drmmode_crtc->pending_dpms_mode != DPMSModeOn)
return;
scanout_id = drmmode_crtc->scanout_id ^ 1;
commit 0a12bf1085505017068dfdfd31d23133e51b45b9
Author: Michel Dänzer <michel.daenzer@amd.com>
Date: Wed Mar 1 18:00:40 2017 +0900
Call drmmode_set_desired_modes from a WindowExposures hook
This is the earliest opportunity where the root window contents are
guaranteed to be initialized, and prevents drmmode_set_mode_major from
getting called before drmmode_set_desired_modes via RADEONUnblank ->
drmmode_crtc_dpms. Also, in contrast to the BlockHandler hook, this is
called when running Xorg with -pogo.
Fixes intermittently showing garbage on server startup or after server
reset.
As a bonus, this avoids trouble due to higher layers (e.g. the tigervnc
Xorg module) calling RADEONBlockHandler_oneshot repeatedly even after
we set pScreen->BlockHandler = RADEONBlockHandler_KMS.
v2:
* Drop spaces between XORG_VERSION_NUMERIC arguments
* Call radeon_bo_wait after radeon_cs_flush_indirect
Bugzilla: https://bugs.freedesktop.org/99457
Reviewed-by: Alex Deucher <alexander.deucher@amd.com> (v1)
diff --git a/src/radeon.h b/src/radeon.h
index bfff232..815c12a 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -523,6 +523,7 @@ typedef struct {
CreateScreenResourcesProcPtr CreateScreenResources;
CreateWindowProcPtr CreateWindow;
+ WindowExposuresProcPtr WindowExposures;
Bool IsSecondary;
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index 331f3f1..c2089eb 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -1137,17 +1137,6 @@ static void RADEONBlockHandler_KMS(BLOCKHANDLER_ARGS_DECL)
#endif
}
-static void RADEONBlockHandler_oneshot(BLOCKHANDLER_ARGS_DECL)
-{
- SCREEN_PTR(arg);
- ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
- RADEONInfoPtr info = RADEONPTR(pScrn);
-
- RADEONBlockHandler_KMS(BLOCKHANDLER_ARGS);
-
- drmmode_set_desired_modes(pScrn, &info->drmmode, TRUE);
-}
-
static Bool RADEONIsFastFBWorking(ScrnInfoPtr pScrn)
{
RADEONInfoPtr info = RADEONPTR(pScrn);
@@ -1636,6 +1625,32 @@ static Bool RADEONCreateWindow_oneshot(WindowPtr pWin)
return ret;
}
+/* When the root window is mapped, set the initial modes */
+static void RADEONWindowExposures_oneshot(WindowPtr pWin, RegionPtr pRegion
+#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1,16,99,901,0)
+ , RegionPtr pBSRegion
+#endif
+ )
+{
+ ScreenPtr pScreen = pWin->drawable.pScreen;
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+
+ if (pWin != pScreen->root)
+ ErrorF("%s called for non-root window %p\n", __func__, pWin);
+
+ pScreen->WindowExposures = info->WindowExposures;
+#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1,16,99,901,0)
+ pScreen->WindowExposures(pWin, pRegion, RegionPtr pBSRegion);
+#else
+ pScreen->WindowExposures(pWin, pRegion);
+#endif
+
+ radeon_cs_flush_indirect(pScrn);
+ radeon_bo_wait(info->front_bo);
+ drmmode_set_desired_modes(pScrn, &info->drmmode, TRUE);
+}
Reply to: