xf86-video-ati: Branch 'master' - 4 commits

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Aug 29 15:25:19 UTC 2018


 src/radeon.h           |   10 +++++++---
 src/radeon_bo_helper.c |    3 +++
 src/radeon_exa.c       |    3 ++-
 src/radeon_glamor.c    |    4 +++-
 4 files changed, 15 insertions(+), 5 deletions(-)

New commits:
commit de88ea2755611bdcb18d91d8234d2ab5be8ff2e9
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Fri Aug 24 11:00:16 2018 +0200

    glamor: Handle ihandle == -1 in radeon_glamor_set_shared_pixmap_backing

diff --git a/src/radeon_glamor.c b/src/radeon_glamor.c
index c733d192..bffc89ec 100644
--- a/src/radeon_glamor.c
+++ b/src/radeon_glamor.c
@@ -402,11 +402,13 @@ radeon_glamor_set_shared_pixmap_backing(PixmapPtr pixmap, void *handle)
 {
 	ScreenPtr screen = pixmap->drawable.pScreen;
 	ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
+	int ihandle = (int)(long)handle;
 
 	if (!radeon_set_shared_pixmap_backing(pixmap, handle, NULL))
 		return FALSE;
 
-	if (!radeon_glamor_create_textured_pixmap(pixmap,
+	if (ihandle != -1 &&
+	    !radeon_glamor_create_textured_pixmap(pixmap,
 						  radeon_get_pixmap_bo(pixmap))) {
 		xf86DrvMsg(scrn->scrnIndex, X_ERROR,
 			   "Failed to get PRIME drawable for glamor pixmap.\n");
commit 84bde2df5b453f8aab35aa18b0cf1f20b8d20488
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Fri Aug 24 10:58:51 2018 +0200

    EXA: Handle ihandle == -1 in RADEONEXASharePixmapBacking

diff --git a/src/radeon_exa.c b/src/radeon_exa.c
index 93c2f056..268155ed 100644
--- a/src/radeon_exa.c
+++ b/src/radeon_exa.c
@@ -296,11 +296,12 @@ Bool RADEONEXASharePixmapBacking(PixmapPtr ppix, ScreenPtr slave, void **fd_hand
 Bool RADEONEXASetSharedPixmapBacking(PixmapPtr ppix, void *fd_handle)
 {
     struct radeon_exa_pixmap_priv *driver_priv = exaGetPixmapDriverPrivate(ppix);
+    int ihandle = (int)(long)fd_handle;
 
     if (!radeon_set_shared_pixmap_backing(ppix, fd_handle, &driver_priv->surface))
 	return FALSE;
 
-    driver_priv->shared = TRUE;
+    driver_priv->shared = ihandle != -1;
     return TRUE;
 }
 
commit 1799680f7bd84e0618f34f4c7486799521ddaf83
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Fri Aug 24 10:56:58 2018 +0200

    Handle ihandle == -1 in radeon_set_shared_pixmap_backing
    
    It means to stop using the shared pixmap backing.
    
    Fixes crash when changing PRIME slave output configuration.

diff --git a/src/radeon_bo_helper.c b/src/radeon_bo_helper.c
index 79e8ff1b..da5a484f 100644
--- a/src/radeon_bo_helper.c
+++ b/src/radeon_bo_helper.c
@@ -454,6 +454,9 @@ Bool radeon_set_shared_pixmap_backing(PixmapPtr ppix, void *fd_handle,
     uint32_t size = ppix->devKind * ppix->drawable.height;
     Bool ret = FALSE;
 
+    if (ihandle == -1)
+	return radeon_set_pixmap_bo(ppix, NULL);
+
     bo = (struct radeon_buffer *)calloc(1, sizeof(struct radeon_buffer));
     if (!bo)
 	goto error;
commit 3c42bd04800211f64a17640c7ce7c4111ffd4978
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Fri Aug 24 10:55:49 2018 +0200

    EXA: Handle NULL BO pointer in radeon_set_pixmap_bo

diff --git a/src/radeon.h b/src/radeon.h
index 1a1edb1b..b1d5f5af 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -772,11 +772,15 @@ static inline Bool radeon_set_pixmap_bo(PixmapPtr pPix, struct radeon_buffer *bo
 	    radeon_buffer_unref(&driver_priv->bo);
 	    drmmode_fb_reference(pRADEONEnt->fd, &driver_priv->fb, NULL);
 
-	    radeon_buffer_ref(bo);
 	    driver_priv->bo = bo;
 
-	    radeon_bo_get_tiling(bo->bo.radeon, &driver_priv->tiling_flags,
-				 &pitch);
+	    if (bo) {
+		radeon_buffer_ref(bo);
+		radeon_bo_get_tiling(bo->bo.radeon, &driver_priv->tiling_flags,
+				     &pitch);
+	    } else
+		driver_priv->tiling_flags = 0;
+
 	    return TRUE;
 	}
 


More information about the xorg-commit mailing list