--- xserver-xorg-video-amdgpu-19.1.0.orig/.dir-locals.el +++ xserver-xorg-video-amdgpu-19.1.0/.dir-locals.el @@ -0,0 +1,12 @@ +((nil + (indent-tabs-mode . t) + (tab-width . 8) + (c-basic-offset . 8) + (c-file-style . "stroustrup") + (fill-column . 78) + (eval . (progn + (c-set-offset 'innamespace '0) + (c-set-offset 'inline-open '0))) + ) + (makefile-mode (indent-tabs-mode . t)) + ) --- xserver-xorg-video-amdgpu-19.1.0.orig/.editorconfig +++ xserver-xorg-video-amdgpu-19.1.0/.editorconfig @@ -0,0 +1,7 @@ +root=true + +[*] +indent_style=tab +tab_width=8 +indent_size=8 +charset=utf-8 --- xserver-xorg-video-amdgpu-19.1.0.orig/.gitlab-ci.yml +++ xserver-xorg-video-amdgpu-19.1.0/.gitlab-ci.yml @@ -0,0 +1,112 @@ +# IMAGE_TAG is the tag of the docker image used for the build jobs. If the +# image doesn't exist yet, the docker-image stage generates it. +# +# In order to generate a new image, one should generally change the tag. +# While removing the image from the registry would also work, that's not +# recommended except for ephemeral images during development: Replacing an +# image after a significant amount of time might pull in newer versions of +# gcc/clang or other packages, which might break the build with older commits +# using the same tag. +# +# After merging a change resulting in generating a new image to the main +# repository, it's recommended to remove the image from the source repository's +# container registry, so that the image from the main repository's registry +# will be used there as well. +variables: + UPSTREAM_REPO: xorg/driver/xf86-video-amdgpu + DEBIAN_VERSION: testing-slim + DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh' + DEBIAN_TAG: "2019-08-02" + IMAGE_LOCAL: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG" + +include: + - project: 'wayland/ci-templates' + ref: adfcd8c318d3398d0547960e45daa34d3b48bce6 + file: '/templates/debian.yml' + +stages: + - docker-image + - build + + +debian-testing: + extends: .debian@container-ifnot-exists + stage: docker-image + + +image: $IMAGE_LOCAL + +# The default build instructions +.default_build: + stage: build + script: + - ./autogen.sh + - make -j$(nproc) check V=1 + variables: + CFLAGS: "-pipe -g -O2 -Werror" + ACLOCAL_PATH: /usr/local/xserver-$XSERVER_VERSION/share/aclocal + PKG_CONFIG_PATH: /usr/local/xserver-$XSERVER_VERSION/lib/pkgconfig + +xserver-1.20: + extends: .default_build + script: + - ./autogen.sh + - make -j$(nproc) check V=1 + - make install V=1 + - make -j$(nproc) distcheck + variables: + XSERVER_VERSION: "1.20" + +xserver-1.20-clang: + extends: .default_build + variables: + CC: clang + XSERVER_VERSION: "1.20" + +xserver-1.13: + extends: .default_build + script: + - ./autogen.sh --disable-glamor + - make -j$(nproc) check V=1 + variables: + XSERVER_VERSION: "1.13" + +xserver-1.14: + extends: xserver-1.13 + variables: + XSERVER_VERSION: "1.14" + +xserver-1.15: + extends: xserver-1.14 + variables: + XSERVER_VERSION: "1.15" + +xserver-1.16: + extends: .default_build + variables: + XSERVER_VERSION: "1.16" + +xserver-1.17: + extends: .default_build + variables: + XSERVER_VERSION: "1.17" + +xserver-1.18: + extends: .default_build + variables: + XSERVER_VERSION: "1.18" + +xserver-1.18-clang: + extends: xserver-1.18 + variables: + CC: clang + +xserver-1.19: + extends: .default_build + variables: + XSERVER_VERSION: "1.19" + +xserver-1.19-clang: + extends: xserver-1.19 + variables: + CC: clang --- xserver-xorg-video-amdgpu-19.1.0.orig/.gitlab-ci/debian-install.sh +++ xserver-xorg-video-amdgpu-19.1.0/.gitlab-ci/debian-install.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +set -e +set -o xtrace + +echo 'deb-src https://deb.debian.org/debian testing main' >/etc/apt/sources.list.d/deb-src.list +apt-get update +apt-get install -y git ca-certificates build-essential automake autoconf libtool pkg-config + +echo 'APT::Get::Build-Dep-Automatic "true";' >>/etc/apt/apt.conf +apt-get build-dep -y xorg-server + +git clone https://gitlab.freedesktop.org/xorg/lib/libXfont.git +cd libXfont +git checkout libXfont-1.5-branch +./autogen.sh +make install-pkgconfigDATA +cd .. && rm -rf libXfont + +git clone https://gitlab.freedesktop.org/xorg/xserver.git +cd xserver + +git checkout server-1.13-branch +./autogen.sh --prefix=/usr/local/xserver-1.13 --enable-dri2 +make -C include install-nodist_sdkHEADERS +make install-headers install-aclocalDATA install-pkgconfigDATA clean + +git checkout server-1.14-branch +./autogen.sh --prefix=/usr/local/xserver-1.14 --enable-dri2 +make -C include install-nodist_sdkHEADERS +make install-headers install-aclocalDATA install-pkgconfigDATA clean + +git checkout server-1.15-branch +./autogen.sh --prefix=/usr/local/xserver-1.15 --enable-dri2 +make -C include install-nodist_sdkHEADERS +make install-headers install-aclocalDATA install-pkgconfigDATA clean + +git checkout server-1.16-branch +./autogen.sh --prefix=/usr/local/xserver-1.16 --enable-dri2 --enable-dri3 --enable-glamor +make -C include install-nodist_sdkHEADERS +make install-headers install-aclocalDATA install-pkgconfigDATA clean + +git checkout server-1.17-branch +./autogen.sh --prefix=/usr/local/xserver-1.17 --enable-dri2 --enable-dri3 --enable-glamor +make -C include install-nodist_sdkHEADERS +make install-headers install-aclocalDATA install-pkgconfigDATA clean + +git checkout server-1.18-branch +./autogen.sh --prefix=/usr/local/xserver-1.18 --enable-dri2 --enable-dri3 --enable-glamor +make -C include install-nodist_sdkHEADERS +make install-headers install-aclocalDATA install-pkgconfigDATA clean + +git checkout server-1.19-branch +./autogen.sh --prefix=/usr/local/xserver-1.19 --enable-dri2 --enable-dri3 --enable-glamor +make -C include install-nodist_sdkHEADERS +make install-headers install-aclocalDATA install-pkgconfigDATA clean + +git checkout server-1.20-branch +./autogen.sh --prefix=/usr/local/xserver-1.20 --enable-dri2 --enable-dri3 --enable-glamor +make -C include install-nodist_sdkHEADERS +make install-headers install-aclocalDATA install-pkgconfigDATA clean +cd .. && rm -rf xserver + +apt-get install -y clang xutils-dev libdrm-dev libgl1-mesa-dev libgbm-dev libudev-dev \ + x11proto-dev libpixman-1-dev libpciaccess-dev +apt-get purge -y git ca-certificates +apt-get autoremove -y --purge --- xserver-xorg-video-amdgpu-19.1.0.orig/ChangeLog +++ xserver-xorg-video-amdgpu-19.1.0/ChangeLog @@ -1,363 +1,3 @@ -commit b467d2569a003da05ad222b0dc095bee5eec450a -Author: Michel Dänzer -Date: Fri Oct 11 17:10:10 2019 +0200 - - Bump version for the 19.1.0 release - -commit a1b7263277c033e109629829c370c0e95978e061 -Author: Michel Dänzer -Date: Thu Sep 26 15:56:59 2019 +0200 - - Don't unreference FBs of pixmaps from different screens in LeaveVT - - FindClientResourcesByType finds pixmaps from all screens, but trying to - process ones from other screens here makes no sense and likely results - in a crash or memory corruption. - - Fixes: c16ff42f927d ("Make all active CRTCs scan out an all-black - framebuffer in LeaveVT") - (Ported from radeon commit 2faaecc69b127248718e759c6c98c84d56dd1b6b) - -commit 5b8bc9fc505c551dcd9b0ed5ab835a49fa4f9fda -Author: Michel Dänzer -Date: Wed Sep 18 12:55:45 2019 +0200 - - Don't set up black scanout buffer if LeaveVT is called from CloseScreen - - Avoids a crash described in - https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu/merge_requests/43#note_223718 - - Reviewed-by: Alex Deucher - -commit e6fce59a071220967fcd4e2c9e4a262c72870761 -Author: Michel Dänzer -Date: Wed Jul 24 16:05:05 2019 +0200 - - present: Don't check pixmap pitch in check_flip with non-DC >= 3.34 - - The current non-DC kernel driver also handles flipping between different - pitches correctly. - - Reviewed-by: Nicholas Kazlauskas - -commit 5bb2580b266468f87843b5585ae64e056b63bb88 -Author: Michel Dänzer -Date: Wed Jul 24 15:55:19 2019 +0200 - - present: Don't check pixmap pitch in check_flip with current DC - - Current DC handles flipping between different pitches correctly. - - Reviewed-by: Nicholas Kazlauskas - -commit ac66086613cbd0974b421cd5eda872adc15242ed -Author: Michel Dänzer -Date: Wed Jul 24 15:45:21 2019 +0200 - - present: Also check pixmap pitch in check_flip with current xserver - - The corresponding check in the xserver Present code was removed again, - because flipping between different pitches can work in some cases. - - Reviewed-by: Nicholas Kazlauskas - -commit 98f172eb2d2353e19edd8167f22215ce596811f8 -Author: Michel Dänzer -Date: Mon Jul 29 18:54:24 2019 +0200 - - gitlab-ci: Use templates from wayland/ci-templates - - These are already used by xserver, Mesa and some other projects. - - Current Debian testing brings e.g. GCC 8.3.0 and clang 7.0.1. - -commit 87f41ace4920fd2069794211683659eb25b025a6 -Author: Michel Dänzer -Date: Fri Jul 5 12:43:53 2019 +0200 - - Don't disable page flipping completely with SW cursor - - Even with SW cursor, page flipping can be used while no X cursor is - visible. - - Occurred to me in the context of xorg/xserver#828. - -commit 7d3fef72e0c871e1677e9e544f4cae5e238b5c52 -Author: Michel Dänzer -Date: Thu May 9 17:39:49 2019 +0200 - - present: Check that we can get a KMS FB for flipping - - This can legitimately fail if the pixmap's storage is shared from - another device, e.g. when using PRIME render offloading. - -commit ea19a5207054bb159fc7fb6d88e0ceb10c3da010 -Author: Michel Dänzer -Date: Thu Jun 6 11:02:15 2019 +0200 - - Remove dri2_drawable_crtc parameter consider_disabled - - All callers were passing TRUE. - - Reviewed-and-tested-by: Flora Cui - -commit 3109f088fdbd89c2ee8078625d4f073852492656 -Author: Michel Dänzer -Date: Thu Jun 6 11:22:09 2019 +0200 - - dri2: Re-use previous CRTC when possible if pick_best_crtc returns NULL - - This way, the MSC will continue ticking at the rate of (the last mode - which was enabled for) that CRTC, instead of the client running - unthrottled. - - Reviewed-and-tested-by: Flora Cui - -commit fb06fb814700a47464abd756e1111dcc76d0d776 -Author: Flora Cui -Date: Wed May 29 14:18:50 2019 +0800 - - dri2: reply to client for WaitMSC request in any case - - otherwise client would wait for reply forever and desktop appears hang. - - Signed-off-by: Flora Cui - Acked-by: Feifei Xu - Reviewed-by: Michel Dänzer - -commit 4b17533fcb30842caf0035ba593b7d986520cc85 -Author: Michel Dänzer -Date: Tue Apr 30 17:50:15 2019 +0200 - - dri3: Always flush glamor before sharing pixmap storage with clients - - Even if glamor_gbm_bo_from_pixmap / glamor_fd_from_pixmap themselves - don't trigger any drawing, there could already be unflushed drawing to - the pixmap whose storage we share with a client. - -commit bf61e6d7ac1a5754b1026d7f80acf25ef622c491 -Author: Michel Dänzer -Date: Thu Apr 18 19:21:40 2019 +0200 - - Retry get_fb_ptr in get_fb - - If get_fb_ptr returns NULL, try again after pixmap_get_handle, it should - work then. - - Fixes spurious Present page flipping failures using "normal" pixmaps - which aren't shared with direct rendering clients, e.g. with a - compositor using the RENDER extension. - - Bugzilla: https://bugs.freedesktop.org/110417 - Reviewed-by: Alex Deucher - -commit bd4ffd4ebbdf1c43ab9e1ef9ba8b812fd2dde4a4 -Author: Michel Dänzer -Date: Tue Mar 19 18:44:31 2019 +0100 - - Bump version for the 19.0.1 release - -commit 6ee857726166f495abcd68e4ff60e3a09593d079 -Author: Dave Airlie -Date: Mon Mar 23 11:33:23 2015 +1000 - - modesetting: add tile property support - - This adds tiling support to the driver, it retrieves the tile info from - the kernel and translates it into the server format and exposes the - property. - - (Ported from xserver commits 8fb8bbb3062f1a06621ab7030a9e89d5e8367b35 - and 6abdb54a11dac4e8854ff94ecdcb90a14321ab31) - Reviewed-by: Alex Deucher - -commit 9534bf3bb33d14cd3a5af08e36ef42b309647fc7 -Author: Michel Dänzer -Date: Wed Mar 6 12:05:14 2019 +0100 - - Bump version for the 19.0.0 release - -commit a2b32e72fdaff3007a79b84929997d8176c2d512 -Author: Michel Dänzer -Date: Fri Mar 1 17:42:08 2019 +0100 - - present: Don't check tiling parameters with DC & DRM minor version >= 31 - - Current DC handles any changes of tiling parameters for flips. - - v2: - * Just check all tiling bits if DRM minor < 31 or DC is disabled. - - Reviewed-by: Nicholas Kazlauskas - -commit 2798244be78df3ef3a7841597577506bfbe50156 -Author: Michel Dänzer -Date: Fri Mar 1 17:47:24 2019 +0100 - - Make drmmode_cm_enabled an inline function - - So that it can be used outside of drmmode_display.c as well. - - Reviewed-by: Nicholas Kazlauskas - -commit 72653455e4f652ca6c7c290c7f1e8a889b77f5ce -Author: Michel Dänzer -Date: Fri Mar 1 17:35:48 2019 +0100 - - Revert "Remove set but unused amdgpu_dri2::pKernelDRMVersion" - - This reverts commit 720a61000aeb139005bd8125908cec66a6e69554. - - We're going to make use of it now. - - Reviewed-by: Nicholas Kazlauskas - -commit 28cd209ebf20561e65d14fa2e8bbfaedf6965948 -Author: Michel Dänzer -Date: Wed Feb 27 17:35:26 2019 +0100 - - Revert "gitlab-ci: Only run docker-image stage if relevant source files change" - - This reverts commit 9c23076b9e81c36ac2408c491f9b2d546829ee8e. - - Some scenarios have come to light where this failed to ensure the docker - image exists: - - * If the master branch of a forked repository is used for an MR which - doesn't modify .gitlab-ci.yml, the docker-image job may not run. - * If the docker-image job of the first pipeline in a forked repository - is cancelled or fails for any reason, and .gitlab-ci.yml isn't - modified for the next pipeline run. - -commit 09be74a3d1dd9604336d9a27f98d132b262dcbaf -Author: Michel Dänzer -Date: Thu Feb 28 17:31:55 2019 +0100 - - dri2: Call drm_queue_handle_deferred in dri2_deferred_event - - drm_queue_handler just puts the event on the signalled list; without - calling drm_queue_handle_deferred, actual processing of the event may be - delayed indefinitely, e.g. until another event arrives from the kernel. - - This could result in DRI2 clients hanging during DPMS off. - - Fixes: 739181c8d3334 "Add amdgpu_drm_handle_event wrapper for - drmHandleEvent" - Reviewed-by: Aaron Liu - Tested-by: Aaron Liu - -commit a636f42b496b0604ca00a144690ece61d1a88a27 -Author: Michel Dänzer -Date: Wed Feb 27 18:43:27 2019 +0100 - - present: Check that flip and screen pixmap pitches match - - If they don't, flipping will result in corrupted display. - - Test case: - - * Run Xorg at 1920x1080 with no window manager - * glxgears -geometry 2048x1080 - - The Present extension code in xserver 1.21 will check for this. - - Tested-by: Jax Lin - -commit bd090f389f19f1f4a3f662ffdd891345a3899539 -Author: Michel Dänzer -Date: Tue Feb 12 17:57:17 2019 +0100 - - Call amdgpu_present_set_screen_vrr from amdgpu_vrr_property_update - - If the window is currently flipping. - - This might make a difference when the property gets disabled: Variable - refresh will now be disabled immediately in that case, instead of only - when the window can no longer use page flipping at all. - - Reviewed-by: Nicholas Kazlauskas - -commit d9be5d712d469595e1e610f7294bc670ca3b1985 -Author: Michel Dänzer -Date: Tue Feb 12 12:26:25 2019 +0100 - - Make use of property request wrappers for VRR property - - Instead of scanning for PropertyNotify events. Reasons: - - * Works even if no client listens to PropertyNotify events for the - window. - * No overhead on delivery of unrelated events, and no overhead at all - if Option "VariableRefresh" is disabled. - - v2: - * Use shorter variable name amdgpu_vrr_atom. - * Call MakeAtom regardless of info->instance_id, for robustness vs VRR - being enabled in some but not all AMDGPU screens. - - Reviewed-by: Nicholas Kazlauskas - -commit ef8fbe33b7d97f7fb5518db9c0e4d2dcbf2fab6f -Author: Michel Dänzer -Date: Thu Jan 17 18:41:11 2019 +0100 - - Wrap change/delete window property request handlers - - Preparation for the following change. - - v2: - * Add comments explaining what the wrappers are wrapping. - * Use global amdgpu_property_vectors_wrapped to keep track of whether - the vectors need to be (un)wrapped, for robustness against VRR being - enabled in some but not all AMDGPU screens. - - Reviewed-by: Nicholas Kazlauskas - -commit 09a45ff8fe3ac07bafa3a0822b1598c41f9ca200 -Author: Michel Dänzer -Date: Tue Feb 12 13:01:04 2019 +0100 - - Don't enable the VRR support code for GPU screens - - Windows aren't associated with GPU screens, and amdgpu_present_flip is - never called for them, so VRR can never actually be enabled for them. - - Reviewed-by: Nicholas Kazlauskas - -commit 2a3d00dc7ed2b4fca698e2d699e1b94da6d0ddb8 -Author: Michel Dänzer -Date: Tue Feb 12 18:12:23 2019 +0100 - - Don't register a window private if VRR is disabled - - It's not used in that case. - - Reviewed-by: Nicholas Kazlauskas - -commit 5f91be77e059d0c4a4268ec10cbd9aa1052f53eb -Author: Michel Dänzer -Date: Mon Feb 11 18:32:07 2019 +0100 - - gitlab-ci: Don't rely on $CI_PROJECT_NAME - - The name of a forked repository can be changed later, in which case this - would fail to refer to the main repository. - - Pointed out by Eric Engestrom in - https://gitlab.freedesktop.org/mesa/mesa/merge_requests/224 . - -commit 9c23076b9e81c36ac2408c491f9b2d546829ee8e -Author: Michel Dänzer -Date: Thu Feb 7 17:35:13 2019 +0100 - - gitlab-ci: Only run docker-image stage if relevant source files change - - Otherwise there's normally no need to run it. It will also run when a - new branch is created, which ensures that the docker image always exists - (e.g. in a newly forked repository). - - Inspired by https://gitlab.freedesktop.org/mesa/mesa/merge_requests/143 - commit 9045fb310f88780e250e60b80431ca153330e61b Author: Michel Dänzer Date: Thu Jan 24 18:31:40 2019 +0100 @@ -6236,7 +5876,7 @@ Must be enabled with - Option "DRI3" + Option "DRI3" in xorg.conf. --- xserver-xorg-video-amdgpu-19.1.0.orig/autogen.sh +++ xserver-xorg-video-amdgpu-19.1.0/autogen.sh @@ -0,0 +1,17 @@ +#! /bin/sh + +srcdir=`dirname "$0"` +test -z "$srcdir" && srcdir=. + +ORIGDIR=`pwd` +cd "$srcdir" + +autoreconf -f -v --install || exit 1 +cd "$ORIGDIR" || exit $? + +git config --local --get format.subjectPrefix >/dev/null 2>&1 || + git config --local format.subjectPrefix "PATCH xf86-video-amdgpu" + +if test -z "$NOCONFIGURE"; then + exec "$srcdir"/configure "$@" +fi --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/README.source +++ xserver-xorg-video-amdgpu-19.1.0/debian/README.source @@ -0,0 +1,49 @@ +------------------------------------------------------ +Quick Guide To Patching This Package For The Impatient +------------------------------------------------------ + +1. Make sure you have quilt installed +2. Unpack the package as usual with "dpkg-source -x" +3. Run the "patch" target in debian/rules +4. Create a new patch with "quilt new" (see quilt(1)) +5. Edit all the files you want to include in the patch with "quilt edit" + (see quilt(1)). +6. Write the patch with "quilt refresh" (see quilt(1)) +7. Run the "clean" target in debian/rules + +Alternatively, instead of using quilt directly, you can drop the patch in to +debian/patches and add the name of the patch to debian/patches/series. + +------------------------------------ +Guide To The X Strike Force Packages +------------------------------------ + +The X Strike Force team maintains X packages in git repositories on +git.debian.org in the pkg-xorg subdirectory. Most upstream packages +are actually maintained in git repositories as well, so they often +just need to be pulled into git.debian.org in a "upstream-*" branch. +Otherwise, the upstream sources are manually installed in the Debian +git repository. + +The .orig.tar.gz upstream source file could be generated using this +"upstream-*" branch in the Debian git repository but it is actually +copied from upstream tarballs directly. + +Due to X.org being highly modular, packaging all X.org applications +as their own independent packages would have created too many Debian +packages. For this reason, some X.org applications have been grouped +into larger packages: xutils, xutils-dev, x11-apps, x11-session-utils, +x11-utils, x11-xfs-utils, x11-xkb-utils, x11-xserver-utils. +Most packages, including the X.org server itself and all libraries +and drivers are, however maintained independently. + +The Debian packaging is added by creating the "debian-*" git branch +which contains the aforementioned "upstream-*" branch plus the debian/ +repository files. +When a patch has to be applied to the Debian package, two solutions +are involved: +* If the patch is available in one of the upstream branches, it + may be git'cherry-picked into the Debian repository. In this + case, it appears directly in the .diff.gz. +* Otherwise, the patch is added to debian/patches/ which is managed + with quilt as documented in /usr/share/doc/quilt/README.source. --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/changelog +++ xserver-xorg-video-amdgpu-19.1.0/debian/changelog @@ -0,0 +1,126 @@ +xserver-xorg-video-amdgpu (19.1.0-1ubuntu0.1) focal; urgency=medium + + * Added patch from git to fix slow refresh rate with AMD GPU Screen + output in reverse prime mode. (LP: #1987038) + + -- Kai-Heng Feng Wed, 24 Aug 2022 15:42:19 +0800 + +xserver-xorg-video-amdgpu (19.1.0-1) unstable; urgency=medium + + * New upstream release. + + -- Timo Aaltonen Tue, 22 Oct 2019 22:09:05 +0300 + +xserver-xorg-video-amdgpu (19.0.1-1) unstable; urgency=medium + + * New upstream release. + + -- Timo Aaltonen Sat, 06 Apr 2019 23:02:05 +0300 + +xserver-xorg-video-amdgpu (19.0.0-1) unstable; urgency=medium + + * New upstream release. + + -- Timo Aaltonen Tue, 12 Mar 2019 11:49:30 +0200 + +xserver-xorg-video-amdgpu (18.1.99+git20190207-1) unstable; urgency=medium + + * New upstream snapshot. + * Stop passing --disable-silent-rules to configure. + + -- Andreas Boll Thu, 07 Feb 2019 22:19:06 +0100 + +xserver-xorg-video-amdgpu (18.1.0-1) unstable; urgency=medium + + * Switch to dbgsym package. + * New upstream release. + * control: Build-depend on x11proto-dev. + * control: Bump libdrm build-dep. + * Bump debhelper to 11. + * control: Bump policy to 4.2.1. + + -- Timo Aaltonen Tue, 18 Sep 2018 10:23:52 +0300 + +xserver-xorg-video-amdgpu (18.0.1-1) unstable; urgency=medium + + * New upstream release. + + -- Timo Aaltonen Tue, 20 Mar 2018 14:02:29 +0200 + +xserver-xorg-video-amdgpu (18.0.0-1) unstable; urgency=medium + + * New upstream release. + * control: Update VCS urls. + * control: Bump policy to 4.1.3, no changes. + + -- Timo Aaltonen Wed, 07 Mar 2018 04:44:35 +0200 + +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 Fri, 29 Sep 2017 00:17:42 +0300 + +xserver-xorg-video-amdgpu (1.3.0-1) unstable; urgency=medium + + * New upstream release. + * control: Bump libdrm-dev build-dep. + + -- Timo Aaltonen Tue, 27 Jun 2017 11:44:43 +0300 + +xserver-xorg-video-amdgpu (1.2.0-1) unstable; urgency=medium + + * New upstream release. + * control: Bump policy to 3.9.8, no changes. + + -- Timo Aaltonen Thu, 17 Nov 2016 11:21:36 +0200 + +xserver-xorg-video-amdgpu (1.1.2-1) unstable; urgency=medium + + * New upstream release. + - fix-configdir.diff: Dropped, fixed upstream + + [ Julien Cristau ] + * Use https URL in debian/watch. + + -- Timo Aaltonen Fri, 16 Sep 2016 13:18:07 +0300 + +xserver-xorg-video-amdgpu (1.1.1-1) unstable; urgency=medium + + * New upstream release. + * fix-configdir.diff: Fix installing the config snippet. + + -- Timo Aaltonen Thu, 15 Sep 2016 23:55:07 +0300 + +xserver-xorg-video-amdgpu (1.1.0-1) unstable; urgency=medium + + * New upstream release. + * control: Bump policy to 3.9.7, no changes. + + -- Timo Aaltonen Thu, 07 Apr 2016 13:32:21 +0300 + +xserver-xorg-video-amdgpu (1.0.1-1) unstable; urgency=medium + + * New upstream release. + + -- Timo Aaltonen Mon, 22 Feb 2016 06:36:08 +0200 + +xserver-xorg-video-amdgpu (1.0.0-1) unstable; urgency=medium + + [ Andreas Boll ] + * First upstream release. + * Let uscan verify tarball signatures. + * Replace non-existing Suggests: linux-firmware with new firmware-amd- + graphics. + * Remove unused libpciaccess-dev build-dep. + * Update list of supported chips. + * Use https for Vcs-* fields. + + -- Timo Aaltonen Tue, 24 Nov 2015 15:46:07 +0200 + +xserver-xorg-video-amdgpu (0.0.01~git20150807-1) unstable; urgency=low + + * Initial release (Closes: #795686) + + -- Timo Aaltonen Sun, 16 Aug 2015 11:26:30 +0300 --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/compat +++ xserver-xorg-video-amdgpu-19.1.0/debian/compat @@ -0,0 +1 @@ +11 --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/control +++ xserver-xorg-video-amdgpu-19.1.0/debian/control @@ -0,0 +1,38 @@ +Source: xserver-xorg-video-amdgpu +Section: x11 +Priority: optional +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Debian X Strike Force +Uploaders: Timo Aaltonen +Build-Depends: + debhelper (>= 11), + quilt, + libdrm-dev (>= 2.4.89) [!hurd-i386], + libgl1-mesa-dev | libgl-dev, + libgbm-dev, + libudev-dev [linux-any], + pkg-config, + x11proto-dev, + xserver-xorg-dev (>= 2:1.16), + xutils-dev (>= 1:7.5+4) +Standards-Version: 4.2.1 +Vcs-Git: https://salsa.debian.org/xorg-team/driver/xserver-xorg-video-amdgpu.git +Vcs-Browser: https://salsa.debian.org/xorg-team/driver/xserver-xorg-video-amdgpu.git + +Package: xserver-xorg-video-amdgpu +Architecture: linux-any +Depends: + ${shlibs:Depends}, + ${misc:Depends}, + ${xviddriver:Depends}, +Provides: ${xviddriver:Provides} +Suggests: firmware-amd-graphics +Description: X.Org X server -- AMDGPU display driver + This package provides the 'amdgpu' driver for the AMD Radeon cards. The + following chip families should be supported: Bonaire, Hawaii, Kaveri, Kabini + Mullins, Iceland, Tonga, Carrizo, Fiji, Stoney. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xf86-video-amdgpu driver module. --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/copyright +++ xserver-xorg-video-amdgpu-19.1.0/debian/copyright @@ -0,0 +1,90 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: xserver-xorg-video-amdgpu +Source: http://xorg.freedesktop.org/releases/individual/driver/ + +Files: * +Copyright: 2012-2014 Advanced Micro Devices, Inc +License: MIT + +Files: src/amdgpu_dri2.c +Copyright: 2008 Jerome Glisse + 2008 Kristian Høgsberg +License: MIT + +Files: src/amdgpu_dri2.h +Copyright: 2008 Jerome Glisse +License: MIT + +Files: src/amdgpu_dri3.c +Copyright: 2013-2014 Intel Corporation + 2015 Advanced Micro Devices, Inc +License: MIT + +Files: src/amdgpu_drm_queue.c src/amdgpu_drm_queue.h +Copyright: 2007 Red Hat, Inc + 2015 Advanced Micro Devices, Inc +License: MIT + +Files: src/amdgpu_drv.h src/amdgpu_probe.c src/amdgpu_probe.h +Copyright: 2000 ATI Technologies Inc. + 2000 VA Linux Systems Inc. +License: MIT + +Files: src/amdgpu_glamor.c src/amdgpu_glamor.h +Copyright: 2011 Intel Corporation +License: MIT + +Files: src/amdgpu_glamor_wrappers.c +Copyright: 2001 Keith Packard + The XFree86 Project Inc + 2008 Red Hat, Inc + 2000 SuSE, Inc + 2010 Intel Corporation + 2012,2015 Advanced Micro Devices, Inc. +License: MIT + +Files: src/amdgpu_kms.c +Copyright: 2009 Red Hat, Inc +License: MIT + +Files: src/amdgpu_present.c src/amdgpu_sync.c +Copyright: 2013-2014 Intel Corporation + 2015 Advanced Micro Devices, Inc +License: MIT + +Files: src/amdgpu_misc.c src/amdgpu_version.h +Copyright: 2000-2004 Marc Aurele La France +License: MIT + +Files: src/compat-api.h src/drmmode_display.h src/pcidb/parse_pci_ids.pl +Copyright: 2007-2012 Red Hat, Inc +License: MIT + +Files: src/simple_list.h +Copyright: 1999-2001 Brian Paul + 1997 Keith Whitwell +License: MIT + +Files: debian/* +Copyright: 2015 Timo Aaltonen +License: MIT + +License: MIT + Permission to use, copy, modify, distribute, and sell this software + and its documentation for any purpose is hereby granted without + fee, provided that the above copyright notice appear in all copies + and that both that copyright notice and this permission notice + appear in supporting documentation, and that the name of the authors + not be used in advertising or publicity pertaining to distribution of the + software without specific, written prior permission. The authors make no + representations about the suitability of this software for any + purpose. It is provided "as is" without express or implied + warranty. + . + THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN + NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR + CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, + NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/patches/0001-amdgpu-fixup-driver-for-new-X-server-ABI.patch +++ xserver-xorg-video-amdgpu-19.1.0/debian/patches/0001-amdgpu-fixup-driver-for-new-X-server-ABI.patch @@ -0,0 +1,32 @@ +From: =?utf-8?q?=C5=81ukasz_Spintzyk?= +Date: Tue, 22 Jun 2021 07:36:42 +0200 +Subject: amdgpu: fixup driver for new X server ABI +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +Signed-off-by: Łukasz Spintzyk +Signed-off-by: Shashank Sharma +Reviewed-by: Alex Deucher +(backported from commit 57740ae2357ca7b973f78be31327365aaa60ed41) +Signed-off-by: Kai-Heng Feng +--- + src/compat-api.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/compat-api.h b/src/compat-api.h +index a703e5c..85f13be 100644 +--- a/src/compat-api.h ++++ b/src/compat-api.h +@@ -38,4 +38,11 @@ + #define BLOCKHANDLER_ARGS pScreen, pTimeout, pReadmask + #endif + ++#if ABI_VIDEODRV_VERSION < SET_ABI_VERSION(25, 2) ++#define secondary_dst slave_dst ++#define secondary_list slave_list ++#define secondary_head slave_head ++#define is_output_secondary is_output_slave ++#endif ++ + #endif --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/patches/0002-Use-randr_crtc_covering_drawable-used-in-modesetting.patch +++ xserver-xorg-video-amdgpu-19.1.0/debian/patches/0002-Use-randr_crtc_covering_drawable-used-in-modesetting.patch @@ -0,0 +1,245 @@ +From: Lukasz Spintzyk +Date: Fri, 11 Jun 2021 08:52:58 +0200 +Subject: Use randr_crtc_covering_drawable used in modesetting +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +Use implementation from modesetting driver that is fixing issue: +https://gitlab.freedesktop.org/xorg/xserver/-/issues/1028 + +Instead of returning primary crtc as fallback we can now find and return crtc that belongs to secondary outputs. + +v2: + restore original naming scheme for amdgpu_crtc_is_enabled, amdgpu_box_intersect, amdgpu_box_area functions + +Signed-off-by: Łukasz Spintzyk +Signed-off-by: Emilia Majewska +Signed-off-by: Shashank Sharma +Reviewed-by: Alex Deucher +(cherry picked from commit 92fb43b8e96bbda77e03b7313ccbba75a304a1b1) +Signed-off-by: Kai-Heng Feng +--- + src/amdgpu_drv.h | 1 + + src/amdgpu_present.c | 16 +----- + src/amdgpu_video.c | 140 ++++++++++++++++++++++++++++++++++++++++++++++++--- + 3 files changed, 135 insertions(+), 22 deletions(-) + +diff --git a/src/amdgpu_drv.h b/src/amdgpu_drv.h +index 0ae171f..60cae7e 100644 +--- a/src/amdgpu_drv.h ++++ b/src/amdgpu_drv.h +@@ -374,6 +374,7 @@ extern void AMDGPUResetVideo(ScrnInfoPtr pScrn); + extern xf86CrtcPtr amdgpu_pick_best_crtc(ScrnInfoPtr pScrn, + Bool consider_disabled, + int x1, int x2, int y1, int y2); ++extern RRCrtcPtr amdgpu_randr_crtc_covering_drawable(DrawablePtr pDraw); + + extern AMDGPUEntPtr AMDGPUEntPriv(ScrnInfoPtr pScrn); + +diff --git a/src/amdgpu_present.c b/src/amdgpu_present.c +index cc3d113..24fed28 100644 +--- a/src/amdgpu_present.c ++++ b/src/amdgpu_present.c +@@ -58,21 +58,7 @@ struct amdgpu_present_vblank_event { + static RRCrtcPtr + amdgpu_present_get_crtc(WindowPtr window) + { +- ScreenPtr screen = window->drawable.pScreen; +- ScrnInfoPtr pScrn = xf86ScreenToScrn(screen); +- xf86CrtcPtr crtc; +- RRCrtcPtr randr_crtc = NULL; +- +- crtc = amdgpu_pick_best_crtc(pScrn, FALSE, +- window->drawable.x, +- window->drawable.x + window->drawable.width, +- window->drawable.y, +- window->drawable.y + window->drawable.height); +- +- if (crtc) +- randr_crtc = crtc->randr_crtc; +- +- return randr_crtc; ++ return amdgpu_randr_crtc_covering_drawable(&window->drawable); + } + + static int +diff --git a/src/amdgpu_video.c b/src/amdgpu_video.c +index 94ae170..b4e3fa4 100644 +--- a/src/amdgpu_video.c ++++ b/src/amdgpu_video.c +@@ -39,10 +39,14 @@ static void amdgpu_box_intersect(BoxPtr dest, BoxPtr a, BoxPtr b) + { + dest->x1 = a->x1 > b->x1 ? a->x1 : b->x1; + dest->x2 = a->x2 < b->x2 ? a->x2 : b->x2; ++ if (dest->x1 >= dest->x2) { ++ dest->x1 = dest->x2 = dest->y1 = dest->y2 = 0; ++ return; ++ } ++ + dest->y1 = a->y1 > b->y1 ? a->y1 : b->y1; + dest->y2 = a->y2 < b->y2 ? a->y2 : b->y2; +- +- if (dest->x1 >= dest->x2 || dest->y1 >= dest->y2) ++ if (dest->y1 >= dest->y2) + dest->x1 = dest->x2 = dest->y1 = dest->y2 = 0; + } + +@@ -64,10 +68,12 @@ static int amdgpu_box_area(BoxPtr box) + return (int)(box->x2 - box->x1) * (int)(box->y2 - box->y1); + } + +-Bool amdgpu_crtc_is_enabled(xf86CrtcPtr crtc) ++Bool ++amdgpu_crtc_is_enabled(xf86CrtcPtr crtc) + { + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; +- return drmmode_crtc->dpms_mode == DPMSModeOn; ++ ++ return crtc->enabled && drmmode_crtc->dpms_mode == DPMSModeOn; + } + + xf86CrtcPtr +@@ -104,12 +110,12 @@ amdgpu_pick_best_crtc(ScrnInfoPtr pScrn, Bool consider_disabled, + for (c = 0; c < xf86_config->num_crtc; c++) { + xf86CrtcPtr crtc = xf86_config->crtc[c]; + +- if (!cd && !amdgpu_crtc_is_enabled(crtc)) ++ if (!cd && !xf86_crtc_on(crtc)) + continue; + + amdgpu_crtc_box(crtc, &crtc_box); +- amdgpu_box_intersect(&cover_box, &crtc_box, &box); +- coverage = amdgpu_box_area(&cover_box); ++ box_intersect(&cover_box, &crtc_box, &box); ++ coverage = box_area(&cover_box); + if (coverage > best_coverage || + (coverage == best_coverage && + crtc == primary_crtc)) { +@@ -124,6 +130,126 @@ amdgpu_pick_best_crtc(ScrnInfoPtr pScrn, Bool consider_disabled, + return best_crtc; + } + ++static void amdgpu_crtc_box(RRCrtcPtr crtc, BoxPtr crtc_box) ++{ ++ if (crtc->mode) { ++ crtc_box->x1 = crtc->x; ++ crtc_box->y1 = crtc->y; ++ switch (crtc->rotation) { ++ case RR_Rotate_0: ++ case RR_Rotate_180: ++ default: ++ crtc_box->x2 = crtc->x + crtc->mode->mode.width; ++ crtc_box->y2 = crtc->y + crtc->mode->mode.height; ++ break; ++ case RR_Rotate_90: ++ case RR_Rotate_270: ++ crtc_box->x2 = crtc->x + crtc->mode->mode.height; ++ crtc_box->y2 = crtc->y + crtc->mode->mode.width; ++ break; ++ } ++ } else ++ crtc_box->x1 = crtc_box->x2 = crtc_box->y1 = crtc_box->y2 = 0; ++} ++ ++static Bool amdgpu_crtc_on(RRCrtcPtr crtc, Bool crtc_is_xf86_hint) ++{ ++ if (!crtc) { ++ return FALSE; ++ } ++ if (crtc_is_xf86_hint && crtc->devPrivate) { ++ return amdgpu_crtc_is_enabled(crtc->devPrivate); ++ } else { ++ return !!crtc->mode; ++ } ++} ++ ++/* ++ * Return the crtc covering 'box'. If two crtcs cover a portion of ++ * 'box', then prefer the crtc with greater coverage. ++ */ ++static RRCrtcPtr ++amdgpu_crtc_covering_box(ScreenPtr pScreen, BoxPtr box, Bool screen_is_xf86_hint) ++{ ++ rrScrPrivPtr pScrPriv; ++ RRCrtcPtr crtc, best_crtc; ++ int coverage, best_coverage; ++ int c; ++ BoxRec crtc_box, cover_box; ++ ++ best_crtc = NULL; ++ best_coverage = 0; ++ ++ if (!dixPrivateKeyRegistered(rrPrivKey)) ++ return NULL; ++ ++ pScrPriv = rrGetScrPriv(pScreen); ++ ++ if (!pScrPriv) ++ return NULL; ++ ++ for (c = 0; c < pScrPriv->numCrtcs; c++) { ++ crtc = pScrPriv->crtcs[c]; ++ ++ /* If the CRTC is off, treat it as not covering */ ++ if (!amdgpu_crtc_on(crtc, screen_is_xf86_hint)) ++ continue; ++ ++ amdgpu_crtc_box(crtc, &crtc_box); ++ amdgpu_box_intersect(&cover_box, &crtc_box, box); ++ coverage = amdgpu_box_area(&cover_box); ++ if (coverage > best_coverage) { ++ best_crtc = crtc; ++ best_coverage = coverage; ++ } ++ } ++ ++ return best_crtc; ++} ++ ++#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0) ++static RRCrtcPtr ++amdgpu_crtc_covering_box_on_secondary(ScreenPtr pScreen, BoxPtr box) ++{ ++ if (!pScreen->isGPU) { ++ ScreenPtr secondary; ++ RRCrtcPtr crtc = NULL; ++ ++ xorg_list_for_each_entry(secondary, &pScreen->secondary_list, secondary_head) { ++ if (!secondary->is_output_secondary) ++ continue; ++ ++ crtc = amdgpu_crtc_covering_box(secondary, box, FALSE); ++ if (crtc) ++ return crtc; ++ } ++ } ++ ++ return NULL; ++} ++#endif ++ ++RRCrtcPtr ++amdgpu_randr_crtc_covering_drawable(DrawablePtr pDraw) ++{ ++ ScreenPtr pScreen = pDraw->pScreen; ++ RRCrtcPtr crtc = NULL; ++ BoxRec box; ++ ++ box.x1 = pDraw->x; ++ box.y1 = pDraw->y; ++ box.x2 = box.x1 + pDraw->width; ++ box.y2 = box.y1 + pDraw->height; ++ ++ crtc = amdgpu_crtc_covering_box(pScreen, &box, TRUE); ++#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0) ++ if (!crtc) { ++ crtc = amdgpu_crtc_covering_box_on_secondary(pScreen, &box); ++ } ++#endif ++ return crtc; ++} ++ + void AMDGPUInitVideo(ScreenPtr pScreen) + { + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/patches/0003-Prefer-crtc-of-primary-output-for-synchronization-wh.patch +++ xserver-xorg-video-amdgpu-19.1.0/debian/patches/0003-Prefer-crtc-of-primary-output-for-synchronization-wh.patch @@ -0,0 +1,63 @@ +From: Lukasz Spintzyk +Date: Mon, 21 Jun 2021 11:41:40 +0200 +Subject: Prefer crtc of primary output for synchronization when screen has to + crtcs with the same coverage +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +This is adjusting randr_crtc_covering_drawable to cover scenario fixed in +9151f3b1c2ebcc34e63195888ba696f2183ba5e2 + +Signed-off-by: Łukasz Spintzyk +Signed-off-by: Shashank Sharma +Reviewed-by: Alex Deucher +(cherry picked from commit e39a3ee07c9dea73b0452b71b1ef633b6cd6f389) +Signed-off-by: Kai-Heng Feng +--- + src/amdgpu_video.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/src/amdgpu_video.c b/src/amdgpu_video.c +index b4e3fa4..d00e9c4 100644 +--- a/src/amdgpu_video.c ++++ b/src/amdgpu_video.c +@@ -172,13 +172,16 @@ static RRCrtcPtr + amdgpu_crtc_covering_box(ScreenPtr pScreen, BoxPtr box, Bool screen_is_xf86_hint) + { + rrScrPrivPtr pScrPriv; +- RRCrtcPtr crtc, best_crtc; ++ RRCrtcPtr crtc, best_crtc, primary_crtc; + int coverage, best_coverage; + int c; + BoxRec crtc_box, cover_box; ++ RROutputPtr primary_output; + + best_crtc = NULL; + best_coverage = 0; ++ primary_crtc = NULL; ++ primary_output = NULL; + + if (!dixPrivateKeyRegistered(rrPrivKey)) + return NULL; +@@ -188,6 +191,10 @@ amdgpu_crtc_covering_box(ScreenPtr pScreen, BoxPtr box, Bool screen_is_xf86_hint + if (!pScrPriv) + return NULL; + ++ primary_output = RRFirstOutput(pScreen); ++ if (primary_output && primary_output->crtc) ++ primary_crtc = primary_output->crtc->devPrivate; ++ + for (c = 0; c < pScrPriv->numCrtcs; c++) { + crtc = pScrPriv->crtcs[c]; + +@@ -198,7 +205,8 @@ amdgpu_crtc_covering_box(ScreenPtr pScreen, BoxPtr box, Bool screen_is_xf86_hint + amdgpu_crtc_box(crtc, &crtc_box); + amdgpu_box_intersect(&cover_box, &crtc_box, box); + coverage = amdgpu_box_area(&cover_box); +- if (coverage > best_coverage) { ++ if (coverage > best_coverage || ++ (crtc == primary_crtc && coverage == best_coverage)) { + best_crtc = crtc; + best_coverage = coverage; + } --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/patches/0004-Do-not-consider-disabled-crtc-anymore-when-looking-f.patch +++ xserver-xorg-video-amdgpu-19.1.0/debian/patches/0004-Do-not-consider-disabled-crtc-anymore-when-looking-f.patch @@ -0,0 +1,173 @@ +From: Lukasz Spintzyk +Date: Fri, 11 Jun 2021 14:54:35 +0200 +Subject: Do not consider disabled crtc anymore when looking for xf86crtc + covering drawable. +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +This is commit is removing obsolete switch done in + +xf86-video-ati at sha 61d0aec40e2521488c2fe43e7a6823e5c87d94d7: video: add option to include disabled CRTCs in best CRTC search +This is not required anymore as with commit done in +xorg-server at sha 5c5c1b77982a9af7279a90bc3c2be48adaa9c778: present: Add Present extension +That in case of lack of crtc is using fake_crtc with render 1Hz frequency + +When consider_disabled is removed then amdgpu_pick_best_crtc is doing the same what rr_crtc_covering_box is doing +so it can be reimplemented to reuse that function. + +Signed-off-by: Łukasz Spintzyk +Signed-off-by: Shashank Sharma +Reviewed-by: Alex Deucher +(cherry picked from commit f3f57a58342c286808220bdbe6dc6bb7098763b9) +Signed-off-by: Kai-Heng Feng +--- + src/amdgpu_dri2.c | 3 +- + src/amdgpu_drv.h | 3 +- + src/amdgpu_video.c | 91 ++++++++++++++---------------------------------------- + 3 files changed, 26 insertions(+), 71 deletions(-) + +diff --git a/src/amdgpu_dri2.c b/src/amdgpu_dri2.c +index a77e4e3..bfc14f3 100644 +--- a/src/amdgpu_dri2.c ++++ b/src/amdgpu_dri2.c +@@ -417,8 +417,7 @@ static + xf86CrtcPtr amdgpu_dri2_drawable_crtc(DrawablePtr pDraw) + { + ScreenPtr pScreen = pDraw->pScreen; +- ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); +- xf86CrtcPtr crtc = amdgpu_pick_best_crtc(pScrn, TRUE, ++ xf86CrtcPtr crtc = amdgpu_pick_best_crtc(pScreen, + pDraw->x, pDraw->x + pDraw->width, + pDraw->y, pDraw->y + pDraw->height); + +diff --git a/src/amdgpu_drv.h b/src/amdgpu_drv.h +index 60cae7e..dae90a9 100644 +--- a/src/amdgpu_drv.h ++++ b/src/amdgpu_drv.h +@@ -371,8 +371,7 @@ extern void amdgpu_sync_close(ScreenPtr screen); + /* amdgpu_video.c */ + extern void AMDGPUInitVideo(ScreenPtr pScreen); + extern void AMDGPUResetVideo(ScrnInfoPtr pScrn); +-extern xf86CrtcPtr amdgpu_pick_best_crtc(ScrnInfoPtr pScrn, +- Bool consider_disabled, ++extern xf86CrtcPtr amdgpu_pick_best_crtc(ScreenPtr pScreen, + int x1, int x2, int y1, int y2); + extern RRCrtcPtr amdgpu_randr_crtc_covering_drawable(DrawablePtr pDraw); + +diff --git a/src/amdgpu_video.c b/src/amdgpu_video.c +index d00e9c4..9cf8ea1 100644 +--- a/src/amdgpu_video.c ++++ b/src/amdgpu_video.c +@@ -50,19 +50,6 @@ static void amdgpu_box_intersect(BoxPtr dest, BoxPtr a, BoxPtr b) + dest->x1 = dest->x2 = dest->y1 = dest->y2 = 0; + } + +-static void amdgpu_crtc_box(xf86CrtcPtr crtc, BoxPtr crtc_box) +-{ +- if (crtc->enabled) { +- crtc_box->x1 = crtc->x; +- crtc_box->x2 = +- crtc->x + xf86ModeWidth(&crtc->mode, crtc->rotation); +- crtc_box->y1 = crtc->y; +- crtc_box->y2 = +- crtc->y + xf86ModeHeight(&crtc->mode, crtc->rotation); +- } else +- crtc_box->x1 = crtc_box->x2 = crtc_box->y1 = crtc_box->y2 = 0; +-} +- + static int amdgpu_box_area(BoxPtr box) + { + return (int)(box->x2 - box->x1) * (int)(box->y2 - box->y1); +@@ -76,60 +63,6 @@ amdgpu_crtc_is_enabled(xf86CrtcPtr crtc) + return crtc->enabled && drmmode_crtc->dpms_mode == DPMSModeOn; + } + +-xf86CrtcPtr +-amdgpu_pick_best_crtc(ScrnInfoPtr pScrn, Bool consider_disabled, +- int x1, int x2, int y1, int y2) +-{ +- xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); +- int coverage, best_coverage, c, cd; +- BoxRec box, crtc_box, cover_box; +- RROutputPtr primary_output = NULL; +- xf86CrtcPtr best_crtc = NULL, primary_crtc = NULL; +- +- if (!pScrn->vtSema) +- return NULL; +- +- box.x1 = x1; +- box.x2 = x2; +- box.y1 = y1; +- box.y2 = y2; +- best_coverage = 0; +- +- /* Prefer the CRTC of the primary output */ +- if (dixPrivateKeyRegistered(rrPrivKey)) +- { +- primary_output = RRFirstOutput(pScrn->pScreen); +- } +- if (primary_output && primary_output->crtc) +- primary_crtc = primary_output->crtc->devPrivate; +- +- /* first consider only enabled CRTCs +- * then on second pass consider disabled ones +- */ +- for (cd = 0; cd < (consider_disabled ? 2 : 1); cd++) { +- for (c = 0; c < xf86_config->num_crtc; c++) { +- xf86CrtcPtr crtc = xf86_config->crtc[c]; +- +- if (!cd && !xf86_crtc_on(crtc)) +- continue; +- +- amdgpu_crtc_box(crtc, &crtc_box); +- box_intersect(&cover_box, &crtc_box, &box); +- coverage = box_area(&cover_box); +- if (coverage > best_coverage || +- (coverage == best_coverage && +- crtc == primary_crtc)) { +- best_crtc = crtc; +- best_coverage = coverage; +- } +- } +- if (best_crtc) +- break; +- } +- +- return best_crtc; +-} +- + static void amdgpu_crtc_box(RRCrtcPtr crtc, BoxPtr crtc_box) + { + if (crtc->mode) { +@@ -258,6 +191,30 @@ amdgpu_randr_crtc_covering_drawable(DrawablePtr pDraw) + return crtc; + } + ++xf86CrtcPtr ++amdgpu_pick_best_crtc(ScreenPtr pScreen, ++ int x1, int x2, int y1, int y2) ++{ ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); ++ ++ if (!pScrn->vtSema) ++ return NULL; ++ ++ RRCrtcPtr crtc = NULL; ++ BoxRec box; ++ ++ box.x1 = x1; ++ box.x2 = x2; ++ box.y1 = y1; ++ box.y2 = y2; ++ ++ crtc = amdgpu_crtc_covering_box(pScreen, &box, TRUE); ++ if (crtc) { ++ return crtc->devPrivate; ++ } ++ return NULL; ++} ++ + void AMDGPUInitVideo(ScreenPtr pScreen) + { + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/patches/0005-Initialize-present-extension-for-GPU-screen.patch +++ xserver-xorg-video-amdgpu-19.1.0/debian/patches/0005-Initialize-present-extension-for-GPU-screen.patch @@ -0,0 +1,76 @@ +From: Kai-Heng Feng +Date: Mon, 8 Aug 2022 10:49:11 +0800 +Subject: Initialize present extension for GPU screen + +Some laptops have the external outputs routed to dGPU, when the external +output over dGPU is the only display in reverse prime mode, we need +present extension so fake CRTC won't be used. + +(cherry picked from commit a3a012b649eb9b3066abefe163a72854514792fa) +Signed-off-by: Kai-Heng Feng +--- + src/amdgpu_kms.c | 44 +++++++++++++++++++++----------------------- + 1 file changed, 21 insertions(+), 23 deletions(-) + +diff --git a/src/amdgpu_kms.c b/src/amdgpu_kms.c +index 6a60f54..c08067e 100644 +--- a/src/amdgpu_kms.c ++++ b/src/amdgpu_kms.c +@@ -2041,36 +2041,34 @@ Bool AMDGPUScreenInit_KMS(ScreenPtr pScreen, int argc, char **argv) + } + #endif + +- if (!pScreen->isGPU) { +- if (xorgGetVersion() >= XORG_VERSION_NUMERIC(1,18,3,0,0)) +- value = info->use_glamor; +- else +- value = FALSE; +- from = X_DEFAULT; ++ if (xorgGetVersion() >= XORG_VERSION_NUMERIC(1,18,3,0,0)) ++ value = info->use_glamor; ++ else ++ value = FALSE; ++ from = X_DEFAULT; + +- if (info->use_glamor) { +- if (xf86GetOptValBool(info->Options, OPTION_DRI3, &value)) +- from = X_CONFIG; ++ if (info->use_glamor) { ++ 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 = amdgpu_sync_init(pScreen) && +- amdgpu_present_screen_init(pScreen) && +- amdgpu_dri3_screen_init(pScreen); +- +- if (!value) +- from = X_WARNING; +- } ++ if (value) { ++ value = amdgpu_sync_init(pScreen) && ++ amdgpu_present_screen_init(pScreen) && ++ amdgpu_dri3_screen_init(pScreen); + +- xf86DrvMsg(pScrn->scrnIndex, from, "DRI3 %sabled\n", value ? "en" : "dis"); ++ if (!value) ++ from = X_WARNING; + } + ++ xf86DrvMsg(pScrn->scrnIndex, from, "DRI3 %sabled\n", value ? "en" : "dis"); ++ + pScrn->vtSema = TRUE; + xf86SetBackingStore(pScreen); + --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/patches/series +++ xserver-xorg-video-amdgpu-19.1.0/debian/patches/series @@ -0,0 +1,5 @@ +0001-amdgpu-fixup-driver-for-new-X-server-ABI.patch +0002-Use-randr_crtc_covering_drawable-used-in-modesetting.patch +0003-Prefer-crtc-of-primary-output-for-synchronization-wh.patch +0004-Do-not-consider-disabled-crtc-anymore-when-looking-f.patch +0005-Initialize-present-extension-for-GPU-screen.patch --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/rules +++ xserver-xorg-video-amdgpu-19.1.0/debian/rules @@ -0,0 +1,33 @@ +#!/usr/bin/make -f +#DH_VERBOSE = 1 + +DPKG_EXPORT_BUILDFLAGS = 1 +include /usr/share/dpkg/default.mk + +XXV=xserver-xorg-video + +override_dh_auto_configure: + dh_auto_configure --builddirectory=build/ -- \ + --libdir=/usr/lib + +override_dh_auto_install: + dh_auto_install --destdir debian/tmp + +# Kill *.la files, and forget no-one: +override_dh_install: + find debian/tmp -name '*.la' -delete + dh_install + +override_dh_missing: + dh_missing --fail-missing + +# Debug packages: +override_dh_strip: + dh_strip -p$(XXV)-amdgpu --dbgsym-migration="$(XXV)-amdgpu-dbg (<< 18.0.1-2~)" + +# That's a plugin, use appropriate warning level: +override_dh_shlibdeps: + dh_shlibdeps -- --warnings=6 + +%: + dh $@ --with quilt,xsf --builddirectory=build/ --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/source/format +++ xserver-xorg-video-amdgpu-19.1.0/debian/source/format @@ -0,0 +1 @@ +1.0 --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/upstream/signing-key.asc +++ xserver-xorg-video-amdgpu-19.1.0/debian/upstream/signing-key.asc @@ -0,0 +1,26 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQGiBDsehS8RBACbsIQEX31aYSIuEKxEnEX82ezMR8z3LG8ktv1KjyNErUX9Pt7A +UC7W3W0bLUhu8Le8S2va6hi7GfSAifl0ih3k6Bv1Itzgnd+7ZmSrvCN8yGJaHNQf +AevAuEboIb+MaVHo9EMJj4ikOcRZCmQWw7evu/D9uQdtkCnRY9iJiAGxbwCguBHt +poGMxDOINCr5UU6qt+m4O+UD/355ohBBzzyh49lTj0kTFKr0Ozd20G2FbcqHgfFL +1dc1MPyigej2gLga2osu2QY0ObvAGkOuWBi3LTY8Zs8uqFGDC4ZAwMPoFy3yzu3n +e6T7d/68rJil0QcdQjzzHi6ekqHuhst4a+/+D23hZa8MJBEcdOhRhsaDVGAJSFEQ +B1qLBACOs0xN+XblejO35gsDSVVk8s+FUUw3TSWJBfZa3ImpV2U2tBO4qck+wqbH +NfdnU/crrsHahjzBjvk8Up7VoY8oT+z03sal2vXEonS279xN2B92TttrAgwosujg +uFO/7tvzymWC76rDEwue8TsADE11ErjwaBTs8ZXfnN/uAANgPLQjTWljaGVsIERh +ZW56ZXIgPGRhZW56ZXJAZGViaWFuLm9yZz6IXwQTEQIAFwUCOx6FMAULBwoDBAMV +AwIDFgIBAheAABIJEFqBr45q27IAB2VHUEcAAQFmmQCfSxXBxMctJqTLwn2Ijv5V +JYbUWK8AmQGwoAUEMLmo8Ceu/NJDgkkS92xttCNNaWNoZWwgRGFlbnplciA8bWlj +aGVsQGRhZW56ZXIubmV0PohmBBMRAgAeBQJAVfEmAhsDBgsJCAcDAgMVAgMDFgIB +Ah4BAheAABIJEFqBr45q27IAB2VHUEcAAQGKzwCfcpKJ1yN6EHF/NzdqswhErSzV +uO4Ani1pv0Ij2I6rRlJ50m8rk0HyMkpCuQENBDsehUUQBACWZHL5JT8CQoDYsN+6 +dBkoSphRhqn/2t8WWRKYyKjcc7IRURZ3mc3uH+S4c219f7yJufmV7BFspqSX2c8g +pmD8POkHBccmX5ZAMR8fS3g/vPRJcW8OsE9AnC70r/ETn1NZvGIRm1eoNs1siw9P +52kBlW/HuBYVShjWNhBGx4BQawADBgP9FZLRTgsRQXcy0Ne0Qk8Aid8acj+KrCyR +9MgqANuqx9sxNkcwcoa0xU2Gc2xRInd3XRohzgRC/mzvthjbX4mCpm05I9bTGSfC ++obijjWlawEhcy72WtnZXNs42vWUpLCpoHuQTkyloG8nqRHOasUo7mLGK1+cXy4E +2QuWm4Yc7aWITgQYEQIABgUCOx6FRQASCRBaga+OatuyAAdlR1BHAAEBlscAn2Uf +k2d6/3p4Cuyz/NX7KpL2dQ8WAJ9UD5JEakhfofed8PSqOM7jOO3LCA== +=P0UI +-----END PGP PUBLIC KEY BLOCK----- --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/watch +++ xserver-xorg-video-amdgpu-19.1.0/debian/watch @@ -0,0 +1,4 @@ +#git=git://anongit.freedesktop.org/xorg/driver/xf86-video-amdgpu +version=3 +opts=pgpsigurlmangle=s/$/.sig/ \ +https://xorg.freedesktop.org/releases/individual/driver/ xf86-video-amdgpu-(.*)\.tar\.gz --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/xserver-xorg-video-amdgpu.install +++ xserver-xorg-video-amdgpu-19.1.0/debian/xserver-xorg-video-amdgpu.install @@ -0,0 +1,3 @@ +usr/lib/xorg/modules/drivers/amdgpu_drv.so +usr/share/man/man4/amdgpu.4 +usr/share/X11/xorg.conf.d/10-amdgpu.conf --- xserver-xorg-video-amdgpu-19.1.0.orig/debian/xserver-xorg-video-amdgpu.links +++ xserver-xorg-video-amdgpu-19.1.0/debian/xserver-xorg-video-amdgpu.links @@ -0,0 +1,2 @@ +usr/share/bug/xserver-xorg-core/script usr/share/bug/xserver-xorg-video-amdgpu/script +