Module Name:    xsrc
Committed By:   jmcneill
Date:           Fri Feb  7 23:36:50 UTC 2020

Modified Files:
        xsrc/external/mit/xf86-video-ati-kms/dist/src: drmmode_display.c

Log Message:
When adding an FB, don't assume that the front buffer is a radeon buffer
(it could be GBM managed instead).


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.9 -r1.2 \
    xsrc/external/mit/xf86-video-ati-kms/dist/src/drmmode_display.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/xf86-video-ati-kms/dist/src/drmmode_display.c
diff -u xsrc/external/mit/xf86-video-ati-kms/dist/src/drmmode_display.c:1.1.1.9 xsrc/external/mit/xf86-video-ati-kms/dist/src/drmmode_display.c:1.2
--- xsrc/external/mit/xf86-video-ati-kms/dist/src/drmmode_display.c:1.1.1.9	Sat Jun  1 07:24:16 2019
+++ xsrc/external/mit/xf86-video-ati-kms/dist/src/drmmode_display.c	Fri Feb  7 23:36:50 2020
@@ -870,6 +870,7 @@ drmmode_set_mode_major(xf86CrtcPtr crtc,
 	Rotation saved_rotation;
 	DisplayModeRec saved_mode;
 	Bool ret = FALSE;
+	uint32_t handle;
 	int i;
 	struct drmmode_fb *fb = NULL;
 
@@ -917,10 +918,15 @@ drmmode_set_mode_major(xf86CrtcPtr crtc,
 		if (!fb)
 			fb = radeon_pixmap_get_fb(pScreen->GetWindowPixmap(pScreen->root));
 		if (!fb) {
+			if (info->front_buffer->flags & RADEON_BO_FLAGS_GBM) {
+				handle = gbm_bo_get_handle(info->front_buffer->bo.gbm).u32;
+			} else {
+				handle = info->front_buffer->bo.radeon->handle;
+			}
 			fb = radeon_fb_create(pScrn, pRADEONEnt->fd,
 					      pScrn->virtualX, pScrn->virtualY,
 					      pScrn->displayWidth * info->pixel_bytes,
-					      info->front_buffer->bo.radeon->handle);
+					      handle);
 			/* Prevent refcnt of ad-hoc FBs from reaching 2 */
 			drmmode_fb_reference(pRADEONEnt->fd, &drmmode_crtc->fb, NULL);
 			drmmode_crtc->fb = fb;

Reply via email to