ChangeLog | 644 +++++++++++++++++++++++++++++++++++++ Makefile.am | 2 README | 14 autogen.sh | 2 configure.ac | 15 debian/changelog | 7 debian/control | 2 man/amdgpu.man | 12 src/Makefile.am | 1 src/amdgpu_bo_helper.c | 32 + src/amdgpu_bo_helper.h | 2 src/amdgpu_dri2.c | 183 ++-------- src/amdgpu_drm_queue.c | 5 src/amdgpu_drv.h | 50 ++ src/amdgpu_glamor.c | 16 src/amdgpu_glamor.h | 4 src/amdgpu_glamor_wrappers.c | 4 src/amdgpu_kms.c | 448 ++++++++++++++++---------- src/amdgpu_list.h | 40 -- src/amdgpu_pixmap.h | 66 +++ src/amdgpu_present.c | 119 ++++--- src/amdgpu_probe.h | 14 src/amdgpu_video.c | 2 src/compat-api.h | 70 ---- src/drmmode_display.c | 729 +++++++++++++++++++++++-------------------- src/drmmode_display.h | 99 ++++- 26 files changed, 1703 insertions(+), 879 deletions(-)
New commits: commit 70e5fbf7ad23f7a600dd1a3139674c86348ec603 Author: Timo Aaltonen <tjaal...@debian.org> Date: Fri Sep 29 00:17:51 2017 +0300 release to sid diff --git a/debian/changelog b/debian/changelog index 3e31667..4989ca8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ -xserver-xorg-video-amdgpu (1.4.0-1) UNRELEASED; urgency=medium +xserver-xorg-video-amdgpu (1.4.0-1) unstable; urgency=medium * New upstream release. * control: Bump libdrm-dev build-dep to 2.4.78 to match configure.ac. - -- Timo Aaltonen <tjaal...@debian.org> Thu, 28 Sep 2017 17:17:55 +0300 + -- Timo Aaltonen <tjaal...@debian.org> Fri, 29 Sep 2017 00:17:42 +0300 xserver-xorg-video-amdgpu (1.3.0-1) unstable; urgency=medium commit 12ff37303e7231e1e1fdf9a6e464f0a4510314d8 Author: Timo Aaltonen <tjaal...@debian.org> Date: Fri Sep 29 00:17:02 2017 +0300 control: Bump libdrm-dev build-dep to 2.4.78 to match configure.ac. diff --git a/debian/changelog b/debian/changelog index 531a8ea..3e31667 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ xserver-xorg-video-amdgpu (1.4.0-1) UNRELEASED; urgency=medium * New upstream release. + * control: Bump libdrm-dev build-dep to 2.4.78 to match configure.ac. -- Timo Aaltonen <tjaal...@debian.org> Thu, 28 Sep 2017 17:17:55 +0300 diff --git a/debian/control b/debian/control index 8cd2499..f1204ac 100644 --- a/debian/control +++ b/debian/control @@ -7,7 +7,7 @@ Build-Depends: debhelper (>= 9), dh-autoreconf, quilt, - libdrm-dev (>= 2.4.72) [!hurd-i386], + libdrm-dev (>= 2.4.78) [!hurd-i386], libgl1-mesa-dev | libgl-dev, libgbm-dev, libudev-dev [linux-any], commit 251726afe8362ad63a1743baab72aed1c8968dc0 Author: Timo Aaltonen <tjaal...@debian.org> Date: Thu Sep 28 17:18:47 2017 +0300 update the changelogs diff --git a/ChangeLog b/ChangeLog index b01bdde..39d63c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,647 @@ +commit cf1767a9a58a3ec95622a7b8ca661113e2148da9 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Fri Sep 8 16:19:48 2017 +0900 + + Bump version for 1.4.0 release + +commit 114de91e3548cd30b709b19f1447f597e71175e0 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Thu Aug 31 17:59:08 2017 +0900 + + Require xserver >= 1.13 + + xserver 1.13.0 was released on September 6th, 2012, almost 5 years ago. + + This allows cleaning up a bunch of backwards compatibility code. + + (Ported from radeon commit 5cdd334b3402c2431deb3a87a8d04ef590da53ee) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 456e5841233a8a79c23ad13649bbdaf8428b50f3 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Wed Aug 30 17:17:49 2017 +0900 + + Use a timer for unreferencing the all-black FB + + The timer fires 1 second after LeaveVT. This gives the next DRM master + enough time to set up scanout of its own buffers. + + Fixes prolonged intermittent black screen when switching from Xorg to + e.g. the GDM Wayland mode login VT. + + Fixes: c16ff42f927d ("Make all active CRTCs scan out an all-black + framebuffer in LeaveVT") + (Ported from radeon commit 9d9c565c84601f4c6c73ad769f86491088683f7a) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 639076efb06cdf13a211a8df1acb00c3908992b9 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Tue Aug 29 17:24:18 2017 +0900 + + Remove drmmode_scanout_free + + Not used anymore. + + (Cherry picked from radeon commit e4a3df19d588a4310fcb889ef34e205d0e92e4d7) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit c16ff42f927df805619a5255bc383841474daff8 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Tue Aug 29 17:06:58 2017 +0900 + + Make all active CRTCs scan out an all-black framebuffer in LeaveVT + + And destroy all other FBs. This is so that other DRM masters can only + get access to this all-black FB, not to any other FB we created, while + we're switched away and not DRM master. + + Fixes: b09fde0d81e0 ("Use reference counting for tracking KMS + framebuffer lifetimes") + (Ported from radeon commit 06a465484101f21e99d3a0a62fb03440bcaff93e) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 19672625df0531c12acc05999ea09ea763e5db59 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Tue Aug 29 17:05:19 2017 +0900 + + Create amdgpu_master_screen helper + + Preparatory, no functional change intended yet. + + (Ported from radeon commit 7f0cd68d1b0c132e32ae736371bce3e12ed33c7a) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 6b376c8d73b20c92755527edb0527a233886e4eb +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Tue Aug 29 16:56:56 2017 +0900 + + Create amdgpu_pixmap_get_fb_ptr helper + + Preparatory, no functional change intended yet. + + Also inline amdgpu_pixmap_create_fb into amdgpu_pixmap_get_fb, since + there's only one call-site. + + (Ported from radeon commit 20f6b56fdb74d88086e8e094013fedbb14e50a24) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 5af396253f6a03fa3f8f92e81da231dd581b50c9 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Tue Aug 29 16:54:10 2017 +0900 + + Create drmmode_set_mode helper + + Preparatory, no functional change intended yet. + + (Ported from radeon commit 4bc992c31059eb50e22df4ebf5b92d08411f41ef) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 1afd4a526c97e77ec882988e35d4977880b9d16c +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Tue Aug 29 16:46:33 2017 +0900 + + Create amdgpu_pixmap_clear helper + + Preparatory, no functional change intended yet. + + (Ported from radeon commit 3f6210ca2c8ef60d59efc8139151d3b9838bb875) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 0de05767adb79d417284dae83e9a77857633fd80 +Author: Martin Peres <martin.pe...@linux.intel.com> +Date: Tue Aug 22 18:43:24 2017 +0900 + + modesetting: re-set the crtc's mode when link-status goes BAD + + Despite all the careful planning of the kernel, a link may become + insufficient to handle the currently-set mode. At this point, the + kernel should mark this particular configuration as being broken + and potentially prune the mode before setting the offending connector's + link-status to BAD and send the userspace a hotplug event. This may + happen right after a modeset or later on. + + Upon receiving a hot-plug event, we iterate through the connectors to + re-apply the currently-set mode on all the connectors that have a + link-status property set to BAD. The kernel may be able to get the + link to work by dropping to using a lower link bpp (with the same + display bpp). However, the modeset may fail if the kernel has pruned + the mode, so to make users aware of this problem a warning is outputed + in the logs to warn about having a potentially-black display. + + This patch does not modify the current behaviour of always propagating + the events to the randr clients. This allows desktop environments to + re-probe the connectors and select a new resolution based on the new + (currated) mode list if a mode disapeared. This behaviour is expected in + order to pass the Display Port compliance tests. + + (Ported from xserver commit bcee1b76aa0db8525b491485e90b8740763d7de6) + + [ Michel: Bump libdrm dependency to >= 2.4.78 for + DRM_MODE_LINK_STATUS_BAD ] + (Ported from radeon commit 0472a605e0ec8fec1892bbc3a84698b7ef9c5296) + Acked-by: Harry Wentland <harry.wentl...@amd.com> + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit a2ee5c36c7d4fdcd067fdc1ef424be474f1ad2cb +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Fri Aug 18 17:24:45 2017 +0900 + + Make amdgpu_scanout_do_update take a PixmapPtr instead of a DrawablePtr + + All callers were already passing in a pixmap. + + This allows simplifying the rotated scanout case slightly. + + (Ported from radeon commit d822a0f47070374ad0c1a97b559bae27724dc52a) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 828fb44cf953f78bd65d8f391bdabe2b1b3d53ae +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Fri Aug 18 17:22:12 2017 +0900 + + Use xorg_list_append for the DRM event list + + We were adding entries at the start of the list, i.e. the list was + ordered from most recently added to least recently added. However, the + corresponding DRM events are generally expected to arrive in the same + order as they are queued, which means that amdgpu_drm_queue_alloc would + generally have to traverse the whole list to find the entry + corresponding to an arrived event. Fix this by adding entries at the end + of the list. + + (Ported from radeon commit 3e24770b1b472fc15df56d06f5f04778c9db63dd) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 22740f86d028cdd0f556543df7444516a86f923b +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Fri Aug 18 17:15:54 2017 +0900 + + Consolidate amdgpu_scanout_flip_abort/handler helpers + + While at it, make them use crtc->driver_private. + + (Ported from radeon commit 36ce7920136c0d723c9397a84e7dd5926a9c7943) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 2692508ae8920ce62f488a9384444c1645964913 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Fri Aug 18 17:12:15 2017 +0900 + + Always allow DRI2 page flipping with TearFree + + Even if TearFree is enabled for the CRTC we're synchronizing to. + + (Ported from radeon commit d314cbfb228bb4b8762714f98d0c114a8ee3f061) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 8c82878c6ef1b984ba289383dc17152192c916ee +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Fri Aug 18 16:57:13 2017 +0900 + + Always allow Present page flipping with TearFree + + Even if TearFree is active for the the CRTC we're synchronizing to. In + that case, for Present flips synchronized to vertical blank, the other + scanout buffer is immediately synchronized and flipped to during the + target vertical blank period. For Present flips not synchronized to + vertical blank, we simply use the MSC and timestamp values of the last + vertical blank period for timing purposes, and let the normal TearFree + mechanism handle display updates. + + (Ported from radeon commit 4445765af5b97d0cfd10889fe6d6f58f2ce85659) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit d8e8f0107bb3e83a787917f4db16a7a54ce4768b +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Fri Aug 18 16:46:18 2017 +0900 + + Pass extents to amdgpu_scanout_do_update + + Preparation for following change, no functional change intended yet. + + (Ported from radeon commit 65e0c5ea1b4adff21d673dbf54af99704c429627) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit cc1dfb88eb6714fcdcb9b576a70f400a5d0d58ca +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Fri Aug 18 16:34:50 2017 +0900 + + Add source drawable parameter to amdgpu_scanout_do_update + + Preparation for following changes, no functional change intended yet. + + (Ported from radeon commit 1443270e52e8562bd8dc3603f301963bd4027cef) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit b82d1b6063a36facc9cdd0e0189fdb6932be94e2 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Fri Aug 18 16:23:39 2017 +0900 + + Handle multiple "pending" Present flips + + The xserver Present code can submit a flip in response to notifying it + that a vblank event arrived. This can happen before the completion event + of the previous flip is processed. In that case, we were clearing the + drmmode_crtc->flip_pending field prematurely. + + Prevent this by only clearing drmmode_crtc->flip_pending when it matches + the framebuffer being scanned out since the flip whose completion event + we're processing. + + (Ported from radeon commit 7c10ee9c88378d773c0bcf651fdc5d9f2c6dc5e5) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 2cbe7f2dff5eef159486f875b3ec67516c85862d +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Fri Aug 18 16:13:17 2017 +0900 + + Wait for pending flips synchronously before turning off a CRTC + + Allows removing drmmode_clear_pending_flip and the pending_dpms_mode + field and cleaning up the code considerably. + + (Ported from radeon commit e6d7dc2070f4d21a6900916bb70a31839112882c) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit e8d0bfab276d47338c337955b9d2fcbff3af225f +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Fri Aug 18 16:11:41 2017 +0900 + + Create drmmode_crtc_wait_pending_event helper macro + + Preparation for following change, no functional change intended yet. + + (Ported from radeon commit f87acdbfb1b0b6d2769764772a52ea8b81675e20) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit fd5b78b7edff2021111bca37642b8b508f0c3328 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Fri Aug 18 15:12:35 2017 +0900 + + Create drmmode_wait_vblank helper + + Allows cleaning up the code considerably. + + (Ported from radeon commit 99f1d7a474af3683fe1a66f50c0bb8935478ff0a) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 24b2718992e4bbc859c07e5b29b571f53314045d +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Fri Aug 18 15:03:52 2017 +0900 + + Pass reference CRTC to amdgpu_do_pageflip directly + + Simplifies the code slightly. + + (Ported from radeon commit 49cc61ab970ee28d4509b4e2dd0a57165136889f) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 87a1f577f1de62f6b628bbe221cd8d551531e708 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Fri Aug 18 14:56:10 2017 +0900 + + Remove drmmode_crtc->scanout_destroy[] array + + No longer necessary since we're reference counting framebuffers. + + (Ported from radeon commit 3f120fa1d5d921656a367751bc079e020e9ab105) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit e15b23663cd1a6f85394253b3fb566b55828b1c5 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Tue Apr 18 18:21:24 2017 +0900 + + Adapt to PixmapDirtyUpdateRec::src being a DrawablePtr + +commit 9caa9dd9cc5eb9882c4bb85275bc318948dab71f +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Wed Aug 2 19:07:40 2017 +0900 + + Allow DRI page flipping when some CRTCs use separate scanout buffers + + As long as the CRTC we're synchronizing to doesn't. + + (Ported from radeon commit 5309bde0c4e28adf2b167191c6d7011a19e31eed) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 4441c7c6dde2d71bd44c3031c5679ee3186ea8f9 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Tue Aug 1 17:29:16 2017 +0900 + + Add drmmode_crtc_can_flip helper + + To reduce code duplication between DRI2 and Present. No functional + change intended yet. + + (Ported from radeon commit 9bc3eef74452d924f9101c024f66ad9b14c404c8) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 3e08409344a2fd504429522507592f98555bec05 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Wed Aug 2 19:03:40 2017 +0900 + + Use root window (pixmap) instead of screen pixmap for scanout updates + + Preparation for following changes, no functional change intended yet. + + (Ported from radeon commit c2d26890691ec105858f086b63170ad94c6f7f05) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 35106fc0a948957cbb7e1e9649c89993a3d5c95c +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Thu Jul 27 15:22:02 2017 +0900 + + Only handle reflection in the driver with Xorg < 1.16 + + Xorg doesn't handle the hardware cursor correctly in that case for + rotation and general transforms, and we can't force the SW cursor. + + Fixes: ba2aa0a8c12a ("Handle rotation in the driver also with Xorg + 1.12-1.18") + (Cherry picked from radeon commit 7d7abf99b5441ddb04dbee99bc8fa7abc30d4c46) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit a47c0093338d80d84e7033ad15d051925d542ca0 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Wed Jul 26 16:46:14 2017 +0900 + + autogen.sh: Pass -f to autoreconf + + To ensure that any existing copies of autotools files will be replaced + with the current versions. + + Acked-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 842bad4b951296ca25f47b50cb358e502bf30ebb +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Wed Jul 26 16:44:00 2017 +0900 + + Makefile.am: Set ACLOCAL_AMFLAGS = -I m4 + + Suggested by one of the tools called by autoreconf. + + Acked-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 227b399badaad9bbef0be5a776ce008d0d243449 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Wed Jul 26 16:42:58 2017 +0900 + + Add AC_CONFIG_MACRO_DIRS([m4]) to configure.ac + + Suggested by one of the tools called by autoreconf. + + Acked-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 4d36306bcebb8548455a21eae6a7216a9439d9e4 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Thu Jul 13 17:40:58 2017 +0900 + + If a TearFree flip fails, fall back to non-TearFree operation + + In order to avoid possible freeze / log file spam in that case. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99769 + (Ported from radeon commit 94dc2b80f3ef0b2c17c20501d824fb0447d52e7a) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 88147c1a532a9275eb57e14d8c11be41bf4c1fe1 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Thu Jul 13 17:35:55 2017 +0900 + + Use drmmode_crtc->scanout_id instead of 0 to check for scanout buffer + + Preparation for following change, no functional change intended. + + (Ported from radeon commit aff267ee36cc6a703a532f91f82adc1ba1425ff3) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit e90721ba654d70db5eeb1cf552308c73151530ee +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Tue Jun 27 18:13:05 2017 +0900 + + Only call drmmode_scanout_free for non-GPU screens in LeaveVT + + Destroying the scanout buffers of GPU screens resulted in a crash when + switching back to the Xorg VT. + + Fixes: b10ecdbd89b0 ("Use drmmode_crtc_scanout_* helpers for RandR 1.4 + scanout pixmaps") + (Ported from radeon commit c9dd28cb0c9c3de676eadac61e727732510f6b9b) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 1b6ff5fd9933c00ec1ec90dfc62e0b531927749b +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Thu Jun 22 16:27:32 2017 +0900 + + Improve drmmode_fb_reference debugging code + + If a reference count is <= 0, call FatalError with the call location + (in case it doesn't get resolved in the backtrace printed by + FatalError). + + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit af7221e1c4d2dbdfd488eb0976a835584ea8441c +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Wed Jun 21 19:01:54 2017 +0900 + + Increase reference count of FB assigned to drmmode_crtc->flip_pending + + Otherwise, it could happen that we destroy the FB before the flip + completes, resulting in use-after-free and most likely a crash. + + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 184d50e008b9b31f4dda1425e255af068b6ab068 +Author: Adam Jackson <a...@redhat.com> +Date: Tue Jun 13 09:36:21 2017 -0400 + + modesetting: Validate the atom for enum properties + + The client could have said anything here, and if what they said doesn't + actually name an atom NameForAtom() will return NULL, and strcmp() will + be unhappy about that. + + [copied from xserver d4995a3936ae283b9080fdaa0905daa669ebacfc] + + Signed-off-by: Adam Jackson <a...@redhat.com> + Reviewed-and-Tested-by: Michel Dänzer <michel.daen...@amd.com> + +commit bbdac40e2af472d37aa0f4f26df77a0b1b12a830 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Thu Jun 8 10:46:26 2017 +0900 + + Improve AMDGPUPreInitAccel_KMS log messages + + Now it should always be clear in the log file why acceleration isn't + enabled. + + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit b09fde0d81e07fbe96139289098b4d4b9f5e3c35 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Thu May 11 19:04:11 2017 +0900 + + Use reference counting for tracking KMS framebuffer lifetimes + + References are held by the pixmaps corresponding to the FBs (so + the same KMS FB can be reused as long as the pixmap exists) and by the + CRTCs scanning out from them (so a KMS FB is only destroyed once it's + not being scanned out anymore, preventing intermittent black screens and + worse issues due to a CRTC turning off when it should be on). + + v2: + * Only increase reference count in drmmode_fb_reference if it was sane + before + * Make drmmode_fb_reference's indentation match the rest of + drmmode_display.h + + (Ported from radeon commit 55e513b978b2afc52b7cafc5bfcb0d1dc78d75f6) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 000e5eaeb20607508c5c5371654615a30a8a1b0b +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Wed May 24 10:12:55 2017 +0900 + + Update URLs + + * Point to the amd-gfx mailing list + * Specify the component in all bugzilla URLs + * Use https:// for all HTML URLs + + (Ported from radeon commit d80d01a73c2eaba2e3649b7bc0a3541b3ff782f6) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 2ea2d4d827f086098be198f110ca822ed2c290cd +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Fri May 12 19:01:18 2017 +0900 + + Simplify tracking of PRIME scanout pixmap + + Remember the shared pixmap passed to drmmode_set_scanout_pixmap for each + CRTC, and just compare against that. + + Fixes leaving stale entries in ScreenRec::pixmap_dirty_list under some + circumstances, which would usually result in use-after-free and a crash + down the line. + + (Ported from radeon commit 7dc68e26755466f9056f8c72195ab8690660693d) + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 8cb41b962eb06b9cb1b3a573a4087e4d89f733fb +Author: Eric Anholt <e...@anholt.net> +Date: Wed May 17 16:11:52 2017 +0900 + + Use plain glamor_egl_create_textured_screen(). + + Since 5064ffab631 (2014), glamor's implementation of _ext just drops the + back_pixmap arg, which we were passing NULL (the default) to anyway. + + Signed-off-by: Eric Anholt <e...@anholt.net> + Reviewed-by: Michel Dänzer <michel.daen...@amd.com> + (Ported from radeon commit 2b7d77b90108911777a11ecaa63435552000c958) + +commit e900e48a11a93cde7d8d2d7bdb4a15ec705c56b1 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Wed May 10 18:37:56 2017 +0900 + + Don't enable DRI3 without glamor + + Can't work currently. Fixes crash when trying to run a DRI3 client when + glamor isn't enabled. + + Bugzilla: https://bugs.freedesktop.org/100968 + + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 462ac3341e5bfbded9086d3d9043821d19352b3e +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Tue May 2 17:58:55 2017 +0900 + + Remove unused struct members from drmmode_display.h + + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 82fa615f38137add75f9cd4bb49c48dd88de916f +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Tue May 2 11:53:25 2017 +0900 + + Apply gamma correction to HW cursor + + The display hardware CLUT we're currently using for gamma correction + doesn't affect the HW cursor, so we have to apply it manually when + uploading the HW cursor data. + + This currently only works in depth 24/32. + + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 981bac185cfd74ae50dffc28f57cf34623a9595f +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Thu Mar 23 18:51:38 2017 +0900 + + Don't set modes before AMDGPUWindowExposures_oneshot is called + + The root window contents may be undefined before that, so we don't want + to show anything yet. + + Fixes a crash on startup with rotation and virtual resolution set in + xorg.conf. + + Bugzilla: https://bugs.freedesktop.org/100276 + Fixes: ad53635af150 ("Move DPMS check from amdgpu_scanout_do_update to + amdgpu_scanout_flip") + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 51e17041cb89806c934c5cf795207940a6aaccfe +Author: Daniel Stone <dani...@collabora.com> +Date: Mon Apr 10 17:36:01 2017 +0900 + + Set correct DRM event context version + + DRM_EVENT_CONTEXT_VERSION is the latest context version supported by + whatever version of libdrm is present. We were blindly asserting we + supported whatever version that may be, even if we actually didn't. + + Set the version as 2, which should be bumped only with the appropriate + version checks. + + Signed-off-by: Daniel Stone <dani...@collabora.com> + (Ported from xserver commit 0c8e6ed85810e96d84173a52d628863802a78d82) + v2: Remove second paragraph of commit log, we always initialize + page_flip_handler2 = NULL (Emil Velikov) + Reviewed-by: Emil Velikov <emil.l.veli...@gmail.com> + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> # v1 + +commit 67d155e62f5e09af242b0181527c162576dae02e +Author: Nicholas Molloy <nick.a.mol...@gmail.com> +Date: Sun Mar 26 02:38:40 2017 +1300 + + Fix a misspelling of 'acceleration' in amdgpu_kms.c + + Reviewed-by: Edward O'Callaghan <funfunc...@folklore1984.net> + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + Reviewed-by: Michel Dänzer <michel.daen...@amd.com> + +commit 165b51447643ce37f391f25ca6aecb8d76fabaa3 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Wed Mar 22 18:58:32 2017 +0900 + + manpage: Don't put "'" at the beginning of a line + + It caused the whole line to be dropped. + + Fixes: af0b24c1aca4 ("Allow toggling TearFree at runtime via output + property") + Reported-by: Andy Furniss <adf.li...@gmail.com> + Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> + +commit 1b476d417f85fd1b97e813adbbf4970db07adf5c +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Thu Mar 23 18:03:56 2017 +0900 + + Post-release version bump + commit 804e30e14e51f94403a0721ef2aae28f1fa9e9f2 Author: Michel Dänzer <michel.daen...@amd.com> Date: Thu Mar 16 17:28:11 2017 +0900 diff --git a/debian/changelog b/debian/changelog index 7e65256..531a8ea 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +xserver-xorg-video-amdgpu (1.4.0-1) UNRELEASED; urgency=medium + + * New upstream release. + + -- Timo Aaltonen <tjaal...@debian.org> Thu, 28 Sep 2017 17:17:55 +0300 + xserver-xorg-video-amdgpu (1.3.0-1) unstable; urgency=medium * New upstream release. commit cf1767a9a58a3ec95622a7b8ca661113e2148da9 Author: Michel Dänzer <michel.daen...@amd.com> Date: Fri Sep 8 16:19:48 2017 +0900 Bump version for 1.4.0 release diff --git a/configure.ac b/configure.ac index 506c372..0896fb0 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-video-amdgpu], - [1.3.99], + [1.4.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/AMDgpu], [xf86-video-amdgpu]) commit 114de91e3548cd30b709b19f1447f597e71175e0 Author: Michel Dänzer <michel.daen...@amd.com> Date: Thu Aug 31 17:59:08 2017 +0900 Require xserver >= 1.13 xserver 1.13.0 was released on September 6th, 2012, almost 5 years ago. This allows cleaning up a bunch of backwards compatibility code. (Ported from radeon commit 5cdd334b3402c2431deb3a87a8d04ef590da53ee) Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> diff --git a/configure.ac b/configure.ac index 6d7cee4..506c372 100644 --- a/configure.ac +++ b/configure.ac @@ -75,7 +75,7 @@ PKG_CHECK_MODULES(LIBDRM_AMDGPU, [libdrm_amdgpu >= 2.4.72]) PKG_CHECK_MODULES(GBM, [gbm]) # Obtain compiler/linker options for the driver dependencies -PKG_CHECK_MODULES(XORG, [xorg-server >= 1.10 xproto fontsproto xf86driproto $REQUIRED_MODULES]) +PKG_CHECK_MODULES(XORG, [xorg-server >= 1.13 xproto fontsproto xf86driproto $REQUIRED_MODULES]) PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1], HAVE_XEXTPROTO_71="yes"; AC_DEFINE(HAVE_XEXTPROTO_71, 1, [xextproto 7.1 available]), HAVE_XEXTPROTO_71="no") @@ -180,12 +180,6 @@ AC_CHECK_DECL(xf86CursorResetCursor, [#include <xorg-server.h> #include <xf86Cursor.h>]) -AC_CHECK_DECL(xorg_list_init, - [AC_DEFINE(HAVE_XORG_LIST, 1, [Have xorg_list API])], [], - [#include <X11/Xdefs.h> - #include "xorg-server.h" - #include "list.h"]) - AC_CHECK_DECL(GBM_BO_USE_LINEAR, [AC_DEFINE(HAVE_GBM_BO_USE_LINEAR, 1, [Have GBM_BO_USE_LINEAR])], [], [#include <stdlib.h> diff --git a/src/Makefile.am b/src/Makefile.am index 7468bba..c23c87d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -62,7 +62,6 @@ EXTRA_DIST = \ amdgpu_drm_queue.h \ amdgpu_glamor.h \ amdgpu_drv.h \ - amdgpu_list.h \ amdgpu_pixmap.h \ amdgpu_probe.h \ amdgpu_version.h \ diff --git a/src/amdgpu_bo_helper.c b/src/amdgpu_bo_helper.c index ee52e0c..ba22122 100644 --- a/src/amdgpu_bo_helper.c +++ b/src/amdgpu_bo_helper.c @@ -79,13 +79,8 @@ struct amdgpu_buffer *amdgpu_alloc_pixmap_bo(ScrnInfoPtr pScrn, int width, bo_use |= GBM_BO_USE_SCANOUT; #ifdef HAVE_GBM_BO_USE_LINEAR -#ifdef CREATE_PIXMAP_USAGE_SHARED - if (usage_hint == CREATE_PIXMAP_USAGE_SHARED) { - bo_use |= GBM_BO_USE_LINEAR; - } -#endif - - if (usage_hint & AMDGPU_CREATE_PIXMAP_LINEAR) { + if (usage_hint == CREATE_PIXMAP_USAGE_SHARED || + (usage_hint & AMDGPU_CREATE_PIXMAP_LINEAR)) { bo_use |= GBM_BO_USE_LINEAR; } #endif @@ -394,7 +389,6 @@ struct amdgpu_buffer *amdgpu_gem_bo_open_prime(amdgpu_device_handle pDev, return bo; } -#ifdef AMDGPU_PIXMAP_SHARING Bool amdgpu_set_shared_pixmap_backing(PixmapPtr ppix, void *fd_handle) { @@ -467,5 +461,3 @@ Bool amdgpu_set_shared_pixmap_backing(PixmapPtr ppix, void *fd_handle) return ret; } - -#endif /* AMDGPU_PIXMAP_SHARING */ diff --git a/src/amdgpu_dri2.c b/src/amdgpu_dri2.c index ccf5477..a8ccd22 100644 --- a/src/amdgpu_dri2.c +++ b/src/amdgpu_dri2.c @@ -48,15 +48,10 @@ #include "amdgpu_bo_helper.h" #include "amdgpu_version.h" -#include "amdgpu_list.h" - +#include <list.h> #include <xf86Priv.h> #include <X11/extensions/dpmsconst.h> -#if DRI2INFOREC_VERSION >= 9 -#define USE_DRI2_PRIME -#endif - #define FALLBACK_SWAP_DELAY 16 typedef DRI2BufferPtr BufferPtr; @@ -204,14 +199,6 @@ error: return NULL; } -DRI2BufferPtr -amdgpu_dri2_create_buffer(DrawablePtr pDraw, unsigned int attachment, - unsigned int format) -{ - return amdgpu_dri2_create_buffer2(pDraw->pScreen, pDraw, - attachment, format); -} - static void amdgpu_dri2_destroy_buffer2(ScreenPtr pScreen, DrawablePtr drawable, BufferPtr buffers) @@ -240,11 +227,6 @@ amdgpu_dri2_destroy_buffer2(ScreenPtr pScreen, } } -void amdgpu_dri2_destroy_buffer(DrawablePtr pDraw, DRI2BufferPtr buf) -{ - amdgpu_dri2_destroy_buffer2(pDraw->pScreen, pDraw, buf); -} - static inline PixmapPtr GetDrawablePixmap(DrawablePtr drawable) { if (drawable->type == DRAWABLE_PIXMAP) @@ -274,17 +256,14 @@ amdgpu_dri2_copy_region2(ScreenPtr pScreen, dst_drawable = &dst_private->pixmap->drawable; if (src_private->attachment == DRI2BufferFrontLeft) { -#ifdef USE_DRI2_PRIME if (drawable->pScreen != pScreen) { src_drawable = DRI2UpdatePrime(drawable, src_buffer); if (!src_drawable) return; } else -#endif src_drawable = drawable; } if (dst_private->attachment == DRI2BufferFrontLeft) { -#ifdef USE_DRI2_PRIME if (drawable->pScreen != pScreen) { dst_drawable = DRI2UpdatePrime(drawable, dest_buffer); if (!dst_drawable) @@ -292,7 +271,6 @@ amdgpu_dri2_copy_region2(ScreenPtr pScreen, if (dst_drawable != drawable) translate = TRUE; } else -#endif dst_drawable = drawable; } @@ -320,14 +298,6 @@ amdgpu_dri2_copy_region2(ScreenPtr pScreen, FreeScratchGC(gc); } -void -amdgpu_dri2_copy_region(DrawablePtr pDraw, RegionPtr pRegion, - DRI2BufferPtr pDstBuffer, DRI2BufferPtr pSrcBuffer) -{ - return amdgpu_dri2_copy_region2(pDraw->pScreen, pDraw, pRegion, - pDstBuffer, pSrcBuffer); -} - enum DRI2FrameEventType { DRI2_SWAP, DRI2_FLIP, @@ -362,8 +332,9 @@ static void amdgpu_dri2_unref_buffer(BufferPtr buffer) { if (buffer) { struct dri2_buffer_priv *private = buffer->driverPrivate; - amdgpu_dri2_destroy_buffer(&(private->pixmap->drawable), - buffer); + DrawablePtr draw = &private->pixmap->drawable; + + amdgpu_dri2_destroy_buffer2(draw->pScreen, draw, buffer); } } @@ -751,8 +722,8 @@ static void amdgpu_dri2_frame_event_handler(xf86CrtcPtr crtc, uint32_t seq, box.x2 = drawable->width; box.y2 = drawable->height; REGION_INIT(pScreen, ®ion, &box, 0); - amdgpu_dri2_copy_region(drawable, ®ion, event->front, - event->back); + amdgpu_dri2_copy_region2(drawable->pScreen, drawable, ®ion, + event->front, event->back); swap_type = DRI2_BLIT_COMPLETE; } @@ -1286,7 +1257,7 @@ blit_fallback: box.y2 = draw->height; REGION_INIT(pScreen, ®ion, &box, 0); - amdgpu_dri2_copy_region(draw, ®ion, front, back); + amdgpu_dri2_copy_region2(draw->pScreen, draw, ®ion, front, back); DRI2SwapComplete(client, draw, 0, 0, 0, DRI2_BLIT_COMPLETE, func, data); @@ -1315,10 +1286,6 @@ Bool amdgpu_dri2_screen_init(ScreenPtr pScreen) dri2_info.driverName = SI_DRIVER_NAME; dri2_info.fd = pAMDGPUEnt->fd; dri2_info.deviceName = info->dri2.device_name; - dri2_info.version = DRI2INFOREC_VERSION; - dri2_info.CreateBuffer = amdgpu_dri2_create_buffer; - dri2_info.DestroyBuffer = amdgpu_dri2_destroy_buffer; - dri2_info.CopyRegion = amdgpu_dri2_copy_region; if (info->drmmode.count_crtcs > 2) { uint64_t cap_value; @@ -1338,11 +1305,10 @@ Bool amdgpu_dri2_screen_init(ScreenPtr pScreen) } if (scheduling_works) { - dri2_info.version = 4; dri2_info.ScheduleSwap = amdgpu_dri2_schedule_swap;