xf86-video-amdgpu: Branch 'master'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Aug 3 16:23:33 UTC 2018


 src/amdgpu_glamor.c |   32 ++++++++++++++++++--------------
 1 file changed, 18 insertions(+), 14 deletions(-)

New commits:
commit 08c4d42f43f80baa4bbc2ff9d0a422202cdc3538
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Thu Aug 2 18:41:04 2018 +0200

    glamor: Use glamor_egl_create_textured_pixmap_from_gbm_bo when possible
    
    Inspired by the modesetting driver.
    
    (Ported from radeon commit db28d35ce9fd07a2a4703f3df0633d4c8291ff9b)
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

diff --git a/src/amdgpu_glamor.c b/src/amdgpu_glamor.c
index 8b83910..ea49f82 100644
--- a/src/amdgpu_glamor.c
+++ b/src/amdgpu_glamor.c
@@ -53,9 +53,9 @@ void amdgpu_glamor_exchange_buffers(PixmapPtr src, PixmapPtr dst)
 
 Bool amdgpu_glamor_create_screen_resources(ScreenPtr screen)
 {
+	PixmapPtr screen_pixmap = screen->GetScreenPixmap(screen);
 	ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
 	AMDGPUInfoPtr info = AMDGPUPTR(scrn);
-	uint32_t bo_handle;
 
 	if (!info->use_glamor)
 		return TRUE;
@@ -65,14 +65,8 @@ Bool amdgpu_glamor_create_screen_resources(ScreenPtr screen)
 		return FALSE;
 #endif
 
-	if (!amdgpu_bo_get_handle(info->front_buffer, &bo_handle) ||
-	    !glamor_egl_create_textured_screen(screen, bo_handle,
-					       scrn->displayWidth *
-					       info->pixel_bytes)) {
-		return FALSE;
-	}
-
-	return TRUE;
+	return amdgpu_glamor_create_textured_pixmap(screen_pixmap,
+						    info->front_buffer);
 }
 
 Bool amdgpu_glamor_pre_init(ScrnInfoPtr scrn)
@@ -129,16 +123,26 @@ amdgpu_glamor_create_textured_pixmap(PixmapPtr pixmap, struct amdgpu_buffer *bo)
 {
 	ScrnInfoPtr scrn = xf86ScreenToScrn(pixmap->drawable.pScreen);
 	AMDGPUInfoPtr info = AMDGPUPTR(scrn);
-	uint32_t bo_handle;
 
 	if ((info->use_glamor) == 0)
 		return TRUE;
 
-	if (!amdgpu_bo_get_handle(bo, &bo_handle))
-		return FALSE;
+	if (bo->flags & AMDGPU_BO_FLAGS_GBM) {
+		return glamor_egl_create_textured_pixmap_from_gbm_bo(pixmap,
+								     bo->bo.gbm
+#if XORG_VERSION_CURRENT > XORG_VERSION_NUMERIC(1,19,99,903,0)
+								     , FALSE
+#endif
+								     );
+	} else {
+		uint32_t bo_handle;
 
-	return glamor_egl_create_textured_pixmap(pixmap, bo_handle,
-						 pixmap->devKind);
+		if (!amdgpu_bo_get_handle(bo, &bo_handle))
+			return FALSE;
+
+		return glamor_egl_create_textured_pixmap(pixmap, bo_handle,
+							 pixmap->devKind);
+	}
 }
 
 static Bool amdgpu_glamor_destroy_pixmap(PixmapPtr pixmap)


More information about the xorg-commit mailing list