[PATCH xf86-video-amdgpu] Don't use DRM_IOCTL_GEM_FLINK in create_pixmap_for_fbcon
Michel Dänzer
michel at daenzer.net
Thu Jul 19 10:43:20 UTC 2018
From: Michel Dänzer <michel.daenzer at amd.com>
We don't need it.
Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
---
src/drmmode_display.c | 39 +++++++++++----------------------------
1 file changed, 11 insertions(+), 28 deletions(-)
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index e947ca979..bf8b1a8b6 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -355,13 +355,11 @@ static PixmapPtr
create_pixmap_for_fbcon(drmmode_ptr drmmode,
ScrnInfoPtr pScrn, int fbcon_id)
{
+ ScreenPtr pScreen = pScrn->pScreen;
AMDGPUEntPtr pAMDGPUEnt = AMDGPUEntPriv(pScrn);
AMDGPUInfoPtr info = AMDGPUPTR(pScrn);
PixmapPtr pixmap = info->fbcon_pixmap;
- struct amdgpu_buffer *bo;
drmModeFBPtr fbcon;
- struct drm_gem_flink flink;
- struct amdgpu_bo_import_result import = {0};
if (pixmap)
return pixmap;
@@ -375,36 +373,21 @@ create_pixmap_for_fbcon(drmmode_ptr drmmode,
fbcon->height != pScrn->virtualY)
goto out_free_fb;
- flink.handle = fbcon->handle;
- if (ioctl(pAMDGPUEnt->fd, DRM_IOCTL_GEM_FLINK, &flink) < 0) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "Couldn't flink fbcon handle\n");
+ pixmap = fbCreatePixmap(pScreen, 0, 0, fbcon->depth, 0);
+ if (!pixmap)
goto out_free_fb;
- }
- bo = calloc(1, sizeof(struct amdgpu_buffer));
- if (!bo) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "Couldn't allocate bo for fbcon handle\n");
- goto out_free_fb;
- }
- bo->ref_count = 1;
+ pScreen->ModifyPixmapHeader(pixmap, fbcon->width, fbcon->height, 0, 0,
+ fbcon->pitch, NULL);
+ pixmap->devPrivate.ptr = NULL;
- if (amdgpu_bo_import(pAMDGPUEnt->pDev,
- amdgpu_bo_handle_type_gem_flink_name, flink.name,
- &import) != 0) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "Couldn't import BO for fbcon handle\n");
- goto out_free_bo;
+ if (!glamor_egl_create_textured_pixmap(pixmap, fbcon->handle,
+ pixmap->devKind)) {
+ pScreen->DestroyPixmap(pixmap);
+ pixmap = NULL;
}
- bo->bo.amdgpu = import.buf_handle;
-
- pixmap = drmmode_create_bo_pixmap(pScrn, fbcon->width, fbcon->height,
- fbcon->depth, fbcon->bpp,
- fbcon->pitch, bo);
+
info->fbcon_pixmap = pixmap;
-out_free_bo:
- amdgpu_bo_unref(&bo);
out_free_fb:
drmModeFreeFB(fbcon);
return pixmap;
--
2.18.0
More information about the amd-gfx
mailing list