tested on:
radeondrm0 at pci2 dev 0 function 0 "ATI Radeon HD 3650" rev 0x00

Bug fix release... ok ?

Index: ChangeLog
===================================================================
RCS file: /cvs/xenocara/driver/xf86-video-ati/ChangeLog,v
retrieving revision 1.17
diff -u -p -u -r1.17 ChangeLog
--- ChangeLog   8 Mar 2019 21:59:55 -0000       1.17
+++ ChangeLog   19 Mar 2019 22:01:52 -0000
@@ -1,3 +1,52 @@
+commit 36703f66c3b06875651606a6280d5dc9d9dad51e
+Author: Michel Dänzer <michel.daen...@amd.com>
+Date:   Tue Mar 19 18:01:02 2019 +0100
+
+    Bump version for 19.0.1 release
+
+commit 4407c78bd86da4460ee07a15a365e07d99e0dd27
+Author: Dave Airlie <airl...@redhat.com>
+Date:   Thu Mar 14 11:17:32 2019 +0100
+
+    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)
+    (Ported from amdgpu commit 6ee857726166f495abcd68e4ff60e3a09593d079)
+    Reviewed-by: Alex Deucher <alexander.deuc...@amd.com>
+
+commit 79bc0e054f37026377d54cac6cd8127d4aa9baca
+Author: Michel Dänzer <michel.daen...@amd.com>
+Date:   Thu Mar 14 11:10:51 2019 +0100
+
+    Use radeon_finish in drmmode_crtc_scanout_update
+    
+    radeon_glamor_finish only works if we're using glamor, otherwise it'll
+    crash.
+    
+    Fixes: ce7db51020d3 "Cancel pending scanout update in 
drmmode_crtc_scanout_update"
+    Bug: https://bugs.debian.org/924540
+    Reviewed-by: Alex Deucher <alexander.deuc...@amd.com>
+
+commit f6cd4a67d7de5d3ff1a6e58a8c83749fc8ffc310
+Author: Michel Dänzer <michel.daen...@amd.com>
+Date:   Fri Mar 8 11:48:10 2019 +0100
+
+    Revert "glamor: Avoid glamor_create_pixmap for pixmaps backing windows"
+    
+    This reverts commit 274703087f80342f51fa69c935bb9a1cb0c4ae47.
+    
+    Reports of visual corruption were bisected to this, e.g.
+    https://bugs.archlinux.org/task/61941 . I can reproduce this with Turks,
+    but not with Bonaire. I assume it's a Mesa/glamor bug, but let's revert
+    for now.
+    
+    Acked-by: Alex Deucher <alexander.deuc...@amd.com>
+
 commit 0d132d99e0b750896a78f47d73a8639680495d8c
 Author: Michel Dänzer <michel.daen...@amd.com>
 Date:   Wed Mar 6 17:48:03 2019 +0100
Index: configure
===================================================================
RCS file: /cvs/xenocara/driver/xf86-video-ati/configure,v
retrieving revision 1.26
diff -u -p -u -r1.26 configure
--- configure   8 Mar 2019 21:59:56 -0000       1.26
+++ configure   19 Mar 2019 22:01:54 -0000
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for xf86-video-ati 19.0.0.
+# Generated by GNU Autoconf 2.69 for xf86-video-ati 19.0.1.
 #
 # Report bugs to 
<https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/Radeon>.
 #
@@ -591,8 +591,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='xf86-video-ati'
 PACKAGE_TARNAME='xf86-video-ati'
-PACKAGE_VERSION='19.0.0'
-PACKAGE_STRING='xf86-video-ati 19.0.0'
+PACKAGE_VERSION='19.0.1'
+PACKAGE_STRING='xf86-video-ati 19.0.1'
 
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/Radeon'
 PACKAGE_URL=''
 
@@ -1398,7 +1398,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures xf86-video-ati 19.0.0 to adapt to many kinds of 
systems.
+\`configure' configures xf86-video-ati 19.0.1 to adapt to many kinds of 
systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1468,7 +1468,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of xf86-video-ati 19.0.0:";;
+     short | recursive ) echo "Configuration of xf86-video-ati 19.0.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1629,7 +1629,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-xf86-video-ati configure 19.0.0
+xf86-video-ati configure 19.0.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2044,7 +2044,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by xf86-video-ati $as_me 19.0.0, which was
+It was created by xf86-video-ati $as_me 19.0.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2876,7 +2876,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='xf86-video-ati'
- VERSION='19.0.0'
+ VERSION='19.0.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -20122,7 +20122,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by xf86-video-ati $as_me 19.0.0, which was
+This file was extended by xf86-video-ati $as_me 19.0.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -20188,7 +20188,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-xf86-video-ati config.status 19.0.0
+xf86-video-ati config.status 19.0.1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
Index: configure.ac
===================================================================
RCS file: /cvs/xenocara/driver/xf86-video-ati/configure.ac,v
retrieving revision 1.19
diff -u -p -u -r1.19 configure.ac
--- configure.ac        8 Mar 2019 21:59:56 -0000       1.19
+++ configure.ac        19 Mar 2019 22:01:54 -0000
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ([2.60])
 AC_INIT([xf86-video-ati],
-        [19.0.0],
+        [19.0.1],
         
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/Radeon],
         [xf86-video-ati])
 
Index: src/drmmode_display.c
===================================================================
RCS file: /cvs/xenocara/driver/xf86-video-ati/src/drmmode_display.c,v
retrieving revision 1.19
diff -u -p -u -r1.19 drmmode_display.c
--- src/drmmode_display.c       8 Mar 2019 21:59:56 -0000       1.19
+++ src/drmmode_display.c       19 Mar 2019 22:01:54 -0000
@@ -785,7 +785,7 @@ drmmode_crtc_scanout_update(xf86CrtcPtr 
                                             
screen->GetWindowPixmap(screen->root),
                                             extents)) {
                        RegionEmpty(DamageRegion(drmmode_crtc->scanout_damage));
-                       radeon_glamor_finish(scrn);
+                       radeon_finish(scrn, 
drmmode_crtc->scanout[scanout_id].bo);
 
                        if (!drmmode_crtc->flip_pending) {
                                radeon_drm_abort_entry(drmmode_crtc->
@@ -1576,6 +1576,51 @@ drmmode_output_mode_valid(xf86OutputPtr 
        return MODE_OK;
 }
 
+static void
+drmmode_output_attach_tile(xf86OutputPtr output)
+{
+#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1, 17, 99, 901, 0)
+       drmmode_output_private_ptr drmmode_output = output->driver_private;
+       drmModeConnectorPtr koutput = drmmode_output->mode_output;
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(output->scrn);
+       struct xf86CrtcTileInfo tile_info, *set = NULL;
+       int i;
+
+       if (!koutput) {
+               xf86OutputSetTile(output, NULL);
+               return;
+       }
+
+       /* look for a TILE property */
+       for (i = 0; i < koutput->count_props; i++) {
+               drmModePropertyPtr props;
+               props = drmModeGetProperty(pRADEONEnt->fd, koutput->props[i]);
+               if (!props)
+                       continue;
+
+               if (!(props->flags & DRM_MODE_PROP_BLOB)) {
+                       drmModeFreeProperty(props);
+                       continue;
+               }
+
+               if (!strcmp(props->name, "TILE")) {
+                       drmModeFreePropertyBlob(drmmode_output->tile_blob);
+                       drmmode_output->tile_blob =
+                               drmModeGetPropertyBlob(pRADEONEnt->fd,
+                                                      koutput->prop_values[i]);
+               }
+               drmModeFreeProperty(props);
+       }
+       if (drmmode_output->tile_blob) {
+               if (xf86OutputParseKMSTile(drmmode_output->tile_blob->data,
+                                          drmmode_output->tile_blob->length,
+                                          &tile_info) == TRUE)
+                       set = &tile_info;
+       }
+       xf86OutputSetTile(output, set);
+#endif
+}
+
 static int
 koutput_get_prop_idx(int fd, drmModeConnectorPtr koutput,
         int type, const char *name)
@@ -1648,6 +1693,8 @@ drmmode_output_get_modes(xf86OutputPtr o
        }
        xf86OutputSetEDID(output, mon);
 
+       drmmode_output_attach_tile(output);
+
        /* modes should already be available */
        for (i = 0; i < koutput->count_modes; i++) {
                Mode = xnfalloc(sizeof(DisplayModeRec));
@@ -1665,8 +1712,11 @@ drmmode_output_destroy(xf86OutputPtr out
        drmmode_output_private_ptr drmmode_output = output->driver_private;
        int i;
 
-       if (drmmode_output->edid_blob)
-               drmModeFreePropertyBlob(drmmode_output->edid_blob);
+       drmModeFreePropertyBlob(drmmode_output->edid_blob);
+#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1, 17, 99, 901, 0)
+       drmModeFreePropertyBlob(drmmode_output->tile_blob);
+#endif
+
        for (i = 0; i < drmmode_output->num_props; i++) {
                drmModeFreeProperty(drmmode_output->props[i].mode_prop);
                free(drmmode_output->props[i].atoms);
Index: src/drmmode_display.h
===================================================================
RCS file: /cvs/xenocara/driver/xf86-video-ati/src/drmmode_display.h,v
retrieving revision 1.13
diff -u -p -u -r1.13 drmmode_display.h
--- src/drmmode_display.h       8 Mar 2019 21:59:56 -0000       1.13
+++ src/drmmode_display.h       19 Mar 2019 22:01:54 -0000
@@ -142,6 +142,9 @@ typedef struct {
     drmModeConnectorPtr mode_output;
     drmModeEncoderPtr *mode_encoders;
     drmModePropertyBlobPtr edid_blob;
+#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1, 17, 99, 901, 0)
+    drmModePropertyBlobPtr tile_blob;
+#endif
     int dpms_enum_id;
     int num_props;
     drmmode_prop_ptr props;
Index: src/radeon_glamor.c
===================================================================
RCS file: /cvs/xenocara/driver/xf86-video-ati/src/radeon_glamor.c,v
retrieving revision 1.10
diff -u -p -u -r1.10 radeon_glamor.c
--- src/radeon_glamor.c 8 Mar 2019 21:59:57 -0000       1.10
+++ src/radeon_glamor.c 19 Mar 2019 22:01:54 -0000
@@ -238,7 +238,7 @@ radeon_glamor_create_pixmap(ScreenPtr sc
                if (info->shadow_primary) {
                        if (usage != CREATE_PIXMAP_USAGE_BACKING_PIXMAP)
                                return fbCreatePixmap(screen, w, h, depth, 
usage);
-               } else if (usage != CREATE_PIXMAP_USAGE_BACKING_PIXMAP) {
+               } else {
                        pixmap = glamor_create_pixmap(screen, w, h, depth, 
usage);
                        if (pixmap)
                            return pixmap;

-- 
Matthieu Herrb

Reply via email to