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;