Hello community,

here is the log from the commit of package xf86-video-ati for openSUSE:Factory 
checked in at 2018-04-07 20:49:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xf86-video-ati (Old)
 and      /work/SRC/openSUSE:Factory/.xf86-video-ati.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xf86-video-ati"

Sat Apr  7 20:49:28 2018 rev:33 rq:593545 version:18.0.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/xf86-video-ati/xf86-video-ati.changes    
2018-03-12 12:04:51.186224986 +0100
+++ /work/SRC/openSUSE:Factory/.xf86-video-ati.new/xf86-video-ati.changes       
2018-04-07 20:49:37.246539282 +0200
@@ -1,0 +2,14 @@
+Wed Apr  4 13:00:02 UTC 2018 - sndir...@suse.com
+
+- Update to release 18.0.1
+  * This release supports xserver versions 1.13-1.19. It also works with
+    xserver 1.20 RC1, so unless something unexpected happens, it should work
+    with xserver 1.20 as well.
+    This is a bug-fix release addressing issues in 18.0.0. While those
+    issues shouldn't affect most users, I recommend that all users of 18.0.0
+    update to 18.0.1.
+    + The Xorg process could crash when multiple primary screens are
+      configured in xorg.conf.
+    + TearFree could trigger debugging messages in the pixman library
+
+-------------------------------------------------------------------

Old:
----
  xf86-video-ati-18.0.0.tar.bz2
  xf86-video-ati-18.0.0.tar.bz2.sig

New:
----
  xf86-video-ati-18.0.1.tar.bz2
  xf86-video-ati-18.0.1.tar.bz2.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xf86-video-ati.spec ++++++
--- /var/tmp/diff_new_pack.g3gXiY/_old  2018-04-07 20:49:37.986512501 +0200
+++ /var/tmp/diff_new_pack.g3gXiY/_new  2018-04-07 20:49:37.986512501 +0200
@@ -18,7 +18,7 @@
 
 %define xserver_glamor 1
 Name:           xf86-video-ati
-Version:        18.0.0
+Version:        18.0.1
 Release:        0
 Summary:        ATI video driver for the Xorg X server
 License:        MIT

++++++ xf86-video-ati-18.0.0.tar.bz2 -> xf86-video-ati-18.0.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-ati-18.0.0/ChangeLog 
new/xf86-video-ati-18.0.1/ChangeLog
--- old/xf86-video-ati-18.0.0/ChangeLog 2018-03-06 18:30:40.000000000 +0100
+++ new/xf86-video-ati-18.0.1/ChangeLog 2018-03-15 17:21:41.000000000 +0100
@@ -1,3 +1,40 @@
+commit fdba5373522c008f43e9ca5a9e76e35c6e7ad73d
+Author: Michel Dänzer <michel.daen...@amd.com>
+Date:   Thu Mar 15 17:19:59 2018 +0100
+
+    Bump version for 18.0.1 release
+
+commit e0f5020117d0a6340f4208ec52bd3e3b3aa99a1b
+Author: Michel Dänzer <michel.daen...@amd.com>
+Date:   Wed Mar 14 16:54:52 2018 +0100
+
+    Pass extents to radeon_scanout_do_update by value
+    
+    radeon_scanout_extents_intersect could leave the scanout damage region
+    in an invalid state, triggering debugging checks in pixman:
+    
+    *** BUG ***
+    In pixman_region_append_non_o: The expression r->x1 < r->x2 was false
+    Set a breakpoint on '_pixman_log_error' to debug
+    
+    (Ported from amdgpu commit 8af989546907ad9fb491d940e1936d3bfc89276b)
+
+commit b915e8e6fb956e983c2ce2a5565c20838c85707c
+Author: Michel Dänzer <michel.daen...@amd.com>
+Date:   Wed Mar 7 17:28:55 2018 +0100
+
+    Wrap the whole miPointerScreenFuncRec, instead of only Set/MoveCursor
+    
+    We were clobbering entries in mi's global miSpritePointerFuncs struct,
+    which cannot work correctly with multiple primary screens. Instead,
+    assign a pointer to our own wrapper struct to PointPriv->spriteFuncs.
+    
+    Fixes crashes with multiple primary screens.
+    
+    Fixes: 1fe8ca75974c ("Keep track of how many SW cursors are visible on
+                          each screen")
+    Reported-by: Mario Kleiner <mario.kleiner...@gmail.com>
+
 commit 7e18aea984e186dd2ab1144470b0c0e832562ad1
 Author: Michel Dänzer <michel.daen...@amd.com>
 Date:   Tue Mar 6 18:15:45 2018 +0100
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-ati-18.0.0/configure 
new/xf86-video-ati-18.0.1/configure
--- old/xf86-video-ati-18.0.0/configure 2018-03-06 18:30:19.000000000 +0100
+++ new/xf86-video-ati-18.0.1/configure 2018-03-15 17:21:20.000000000 +0100
@@ -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 18.0.0.
+# Generated by GNU Autoconf 2.69 for xf86-video-ati 18.0.1.
 #
 # Report bugs to 
<https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/Radeon>.
 #
@@ -591,8 +591,8 @@
 # Identity of this package.
 PACKAGE_NAME='xf86-video-ati'
 PACKAGE_TARNAME='xf86-video-ati'
-PACKAGE_VERSION='18.0.0'
-PACKAGE_STRING='xf86-video-ati 18.0.0'
+PACKAGE_VERSION='18.0.1'
+PACKAGE_STRING='xf86-video-ati 18.0.1'
 
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/Radeon'
 PACKAGE_URL=''
 
@@ -1400,7 +1400,7 @@
   # 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 18.0.0 to adapt to many kinds of 
systems.
+\`configure' configures xf86-video-ati 18.0.1 to adapt to many kinds of 
systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1471,7 +1471,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of xf86-video-ati 18.0.0:";;
+     short | recursive ) echo "Configuration of xf86-video-ati 18.0.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1629,7 +1629,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-xf86-video-ati configure 18.0.0
+xf86-video-ati configure 18.0.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2044,7 +2044,7 @@
 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 18.0.0, which was
+It was created by xf86-video-ati $as_me 18.0.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2915,7 +2915,7 @@
 
 # Define the identity of the package.
  PACKAGE='xf86-video-ati'
- VERSION='18.0.0'
+ VERSION='18.0.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -20521,7 +20521,7 @@
 # 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 18.0.0, which was
+This file was extended by xf86-video-ati $as_me 18.0.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -20587,7 +20587,7 @@
 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 18.0.0
+xf86-video-ati config.status 18.0.1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-ati-18.0.0/configure.ac 
new/xf86-video-ati-18.0.1/configure.ac
--- old/xf86-video-ati-18.0.0/configure.ac      2018-03-06 18:29:53.000000000 
+0100
+++ new/xf86-video-ati-18.0.1/configure.ac      2018-03-15 17:20:55.000000000 
+0100
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ([2.60])
 AC_INIT([xf86-video-ati],
-        [18.0.0],
+        [18.0.1],
         
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/Radeon],
         [xf86-video-ati])
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-ati-18.0.0/src/drmmode_display.c 
new/xf86-video-ati-18.0.1/src/drmmode_display.c
--- old/xf86-video-ati-18.0.0/src/drmmode_display.c     2018-03-06 
18:29:53.000000000 +0100
+++ new/xf86-video-ati-18.0.1/src/drmmode_display.c     2018-03-15 
17:20:55.000000000 +0100
@@ -37,6 +37,7 @@
 #include "inputstr.h"
 #include "list.h"
 #include "micmap.h"
+#include "mipointrst.h"
 #include "xf86cmap.h"
 #include "xf86Priv.h"
 #include "radeon.h"
@@ -816,7 +817,7 @@
 
                radeon_scanout_do_update(crtc, scanout_id,
                                         screen->GetWindowPixmap(screen->root),
-                                        box);
+                                        *box);
                radeon_bo_wait(drmmode_crtc->scanout[scanout_id].bo);
        }
 }
@@ -2750,8 +2751,8 @@
        info->sprites_visible += device_priv->sprite_visible - sprite_visible;
 }
 
-void drmmode_sprite_set_cursor(DeviceIntPtr pDev, ScreenPtr pScreen,
-                              CursorPtr pCursor, int x, int y)
+static void drmmode_sprite_set_cursor(DeviceIntPtr pDev, ScreenPtr pScreen,
+                                     CursorPtr pCursor, int x, int y)
 {
        ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
        RADEONInfoPtr info = RADEONPTR(scrn);
@@ -2762,11 +2763,11 @@
        device_priv->cursor = pCursor;
        drmmode_sprite_do_set_cursor(device_priv, scrn, x, y);
 
-       info->SetCursor(pDev, pScreen, pCursor, x, y);
+       info->SpriteFuncs->SetCursor(pDev, pScreen, pCursor, x, y);
 }
 
-void drmmode_sprite_move_cursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x,
-                               int y)
+static void drmmode_sprite_move_cursor(DeviceIntPtr pDev, ScreenPtr pScreen,
+                                      int x, int y)
 {
        ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
        RADEONInfoPtr info = RADEONPTR(scrn);
@@ -2776,9 +2777,57 @@
 
        drmmode_sprite_do_set_cursor(device_priv, scrn, x, y);
 
-       info->MoveCursor(pDev, pScreen, x, y);
+       info->SpriteFuncs->MoveCursor(pDev, pScreen, x, y);
 }
 
+static Bool drmmode_sprite_realize_realize_cursor(DeviceIntPtr pDev,
+                                                 ScreenPtr pScreen,
+                                                 CursorPtr pCursor)
+{
+       ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
+       RADEONInfoPtr info = RADEONPTR(scrn);
+
+       return info->SpriteFuncs->RealizeCursor(pDev, pScreen, pCursor);
+}
+
+static Bool drmmode_sprite_realize_unrealize_cursor(DeviceIntPtr pDev,
+                                                   ScreenPtr pScreen,
+                                                   CursorPtr pCursor)
+{
+       ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
+       RADEONInfoPtr info = RADEONPTR(scrn);
+
+       return info->SpriteFuncs->UnrealizeCursor(pDev, pScreen, pCursor);
+}
+
+static Bool drmmode_sprite_device_cursor_initialize(DeviceIntPtr pDev,
+                                                   ScreenPtr pScreen)
+{
+       ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
+       RADEONInfoPtr info = RADEONPTR(scrn);
+
+       return info->SpriteFuncs->DeviceCursorInitialize(pDev, pScreen);
+}
+
+static void drmmode_sprite_device_cursor_cleanup(DeviceIntPtr pDev,
+                                                ScreenPtr pScreen)
+{
+       ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
+       RADEONInfoPtr info = RADEONPTR(scrn);
+
+       info->SpriteFuncs->DeviceCursorCleanup(pDev, pScreen);
+}
+
+miPointerSpriteFuncRec drmmode_sprite_funcs = {
+       .RealizeCursor = drmmode_sprite_realize_realize_cursor,
+       .UnrealizeCursor = drmmode_sprite_realize_unrealize_cursor,
+       .SetCursor = drmmode_sprite_set_cursor,
+       .MoveCursor = drmmode_sprite_move_cursor,
+       .DeviceCursorInitialize = drmmode_sprite_device_cursor_initialize,
+       .DeviceCursorCleanup = drmmode_sprite_device_cursor_cleanup,
+};
+
+       
 void drmmode_set_cursor(ScrnInfoPtr scrn, drmmode_ptr drmmode, int id, struct 
radeon_bo *bo)
 {
        xf86CrtcConfigPtr   xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
@@ -3233,7 +3282,7 @@
                        }
 
                        radeon_scanout_do_update(crtc, scanout_id, new_front,
-                                                &extents);
+                                                extents);
 
                        drmmode_crtc_wait_pending_event(drmmode_crtc, 
pRADEONEnt->fd,
                                                        
drmmode_crtc->scanout_update_pending);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-ati-18.0.0/src/drmmode_display.h 
new/xf86-video-ati-18.0.1/src/drmmode_display.h
--- old/xf86-video-ati-18.0.0/src/drmmode_display.h     2018-03-06 
18:29:53.000000000 +0100
+++ new/xf86-video-ati-18.0.1/src/drmmode_display.h     2018-03-15 
17:20:55.000000000 +0100
@@ -206,10 +206,6 @@
 extern void drmmode_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode);
 extern void drmmode_fini(ScrnInfoPtr pScrn, drmmode_ptr drmmode);
 extern Bool drmmode_set_bufmgr(ScrnInfoPtr pScrn, drmmode_ptr drmmode, struct 
radeon_bo_manager *bufmgr);
-extern void drmmode_sprite_set_cursor(DeviceIntPtr pDev, ScreenPtr pScreen,
-                                     CursorPtr pCursor, int x, int y);
-extern void drmmode_sprite_move_cursor(DeviceIntPtr pDev, ScreenPtr pScreen, 
int x,
-                                      int y);
 extern void drmmode_set_cursor(ScrnInfoPtr scrn, drmmode_ptr drmmode, int id, 
struct radeon_bo *bo);
 void drmmode_adjust_frame(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int x, int 
y);
 extern Bool drmmode_set_desired_modes(ScrnInfoPtr pScrn, drmmode_ptr drmmode,
@@ -249,5 +245,8 @@
                         uint64_t *ust, uint32_t *result_seq);
 
 
+miPointerSpriteFuncRec drmmode_sprite_funcs;
+
+
 #endif
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-ati-18.0.0/src/radeon.h 
new/xf86-video-ati-18.0.1/src/radeon.h
--- old/xf86-video-ati-18.0.0/src/radeon.h      2018-03-06 18:29:53.000000000 
+0100
+++ new/xf86-video-ati-18.0.1/src/radeon.h      2018-03-15 17:20:55.000000000 
+0100
@@ -557,9 +557,7 @@
     CreateScreenResourcesProcPtr CreateScreenResources;
     CreateWindowProcPtr CreateWindow;
     WindowExposuresProcPtr WindowExposures;
-    void (*SetCursor) (DeviceIntPtr pDev, ScreenPtr pScreen,
-                      CursorPtr pCursor, int x, int y);
-    void (*MoveCursor) (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y);
+    miPointerSpriteFuncPtr SpriteFuncs;
 
     /* Number of SW cursors currently visible on this screen */
     int sprites_visible;
@@ -674,7 +672,7 @@
 
 /* radeon_kms.c */
 Bool radeon_scanout_do_update(xf86CrtcPtr xf86_crtc, int scanout_id,
-                             PixmapPtr src_pix, BoxPtr extents);
+                             PixmapPtr src_pix, BoxRec extents);
 void RADEONWindowExposures_oneshot(WindowPtr pWin, RegionPtr pRegion
 #if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1,16,99,901,0)
                                   , RegionPtr pBSRegion
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-ati-18.0.0/src/radeon_kms.c 
new/xf86-video-ati-18.0.1/src/radeon_kms.c
--- old/xf86-video-ati-18.0.0/src/radeon_kms.c  2018-03-06 18:29:53.000000000 
+0100
+++ new/xf86-video-ati-18.0.1/src/radeon_kms.c  2018-03-15 17:20:55.000000000 
+0100
@@ -903,10 +903,10 @@
 
 Bool
 radeon_scanout_do_update(xf86CrtcPtr xf86_crtc, int scanout_id,
-                        PixmapPtr src_pix, BoxPtr extents)
+                        PixmapPtr src_pix, BoxRec extents)
 {
     drmmode_crtc_private_ptr drmmode_crtc = xf86_crtc->driver_private;
-    RegionRec region = { .extents = *extents, .data = NULL };
+    RegionRec region = { .extents = extents, .data = NULL };
     ScrnInfoPtr scrn = xf86_crtc->scrn;
     ScreenPtr pScreen = scrn->pScreen;
     RADEONInfoPtr info = RADEONPTR(scrn);
@@ -915,11 +915,11 @@
 
     if (!xf86_crtc->enabled ||
        !drmmode_crtc->scanout[scanout_id].pixmap ||
-       extents->x1 >= extents->x2 || extents->y1 >= extents->y2)
+       extents.x1 >= extents.x2 || extents.y1 >= extents.y2)
        return FALSE;
 
     pDraw = &drmmode_crtc->scanout[scanout_id].pixmap->drawable;
-    if (!radeon_scanout_extents_intersect(xf86_crtc, extents))
+    if (!radeon_scanout_extents_intersect(xf86_crtc, &extents))
        return FALSE;
 
     if (drmmode_crtc->tear_free) {
@@ -965,9 +965,9 @@
        pScreen->SourceValidate = NULL;
        CompositePicture(PictOpSrc,
                         src, NULL, dst,
-                        extents->x1, extents->y1, 0, 0, extents->x1,
-                        extents->y1, extents->x2 - extents->x1,
-                        extents->y2 - extents->y1);
+                        extents.x1, extents.y1, 0, 0, extents.x1,
+                        extents.y1, extents.x2 - extents.x1,
+                        extents.y2 - extents.y1);
        pScreen->SourceValidate = SourceValidate;
 
  free_dst:
@@ -981,9 +981,9 @@
 
        ValidateGC(pDraw, gc);
        (*gc->ops->CopyArea)(&src_pix->drawable, pDraw, gc,
-                            xf86_crtc->x + extents->x1, xf86_crtc->y + 
extents->y1,
-                            extents->x2 - extents->x1, extents->y2 - 
extents->y1,
-                            extents->x1, extents->y1);
+                            xf86_crtc->x + extents.x1, xf86_crtc->y + 
extents.y1,
+                            extents.x2 - extents.x1, extents.y2 - extents.y1,
+                            extents.x1, extents.y1);
        FreeScratchGC(gc);
     }
 
@@ -1015,7 +1015,7 @@
        drmmode_crtc->dpms_mode == DPMSModeOn) {
        if (radeon_scanout_do_update(crtc, drmmode_crtc->scanout_id,
                                     screen->GetWindowPixmap(screen->root),
-                                    &region->extents))
+                                    region->extents))
            RegionEmpty(region);
     }
 
@@ -1096,7 +1096,7 @@
     scanout_id = drmmode_crtc->scanout_id ^ 1;
     if (!radeon_scanout_do_update(xf86_crtc, scanout_id,
                                  pScreen->GetWindowPixmap(pScreen->root),
-                                 &region->extents))
+                                 region->extents))
        return;
     RegionEmpty(region);
 
@@ -2017,12 +2017,8 @@
            return FALSE;
        }
 
-       if (PointPriv->spriteFuncs->SetCursor != drmmode_sprite_set_cursor) {
-           info->SetCursor = PointPriv->spriteFuncs->SetCursor;
-           info->MoveCursor = PointPriv->spriteFuncs->MoveCursor;
-           PointPriv->spriteFuncs->SetCursor = drmmode_sprite_set_cursor;
-           PointPriv->spriteFuncs->MoveCursor = drmmode_sprite_move_cursor;
-       }
+       info->SpriteFuncs = PointPriv->spriteFuncs;
+       PointPriv->spriteFuncs = &drmmode_sprite_funcs;
     }
 
     if (xf86ReturnOptValBool(info->Options, OPTION_SW_CURSOR, FALSE))
@@ -2186,10 +2182,8 @@
        miPointerScreenPtr PointPriv =
            dixLookupPrivate(&pScreen->devPrivates, miPointerScreenKey);
 
-       if (PointPriv->spriteFuncs->SetCursor == drmmode_sprite_set_cursor) {
-           PointPriv->spriteFuncs->SetCursor = info->SetCursor;
-           PointPriv->spriteFuncs->MoveCursor = info->MoveCursor;
-       }
+       if (PointPriv->spriteFuncs == &drmmode_sprite_funcs)
+           PointPriv->spriteFuncs = info->SpriteFuncs;
     }
 
     pScreen->BlockHandler = info->BlockHandler;



Reply via email to