[PATCH xserver 05/10] Revert "modesetting: Delete dead drmmode_bo_for_pixmap function."
Qiang Yu
Qiang.Yu at amd.com
Fri Jan 6 14:25:27 UTC 2017
This reverts commit d3d4ff0ed4d4679b7983b1a3ea267ff945f7643c.
This function is needed for importing pixmap created by render
node for display node.
Signed-off-by: Qiang Yu <Qiang.Yu at amd.com>
---
hw/xfree86/drivers/modesetting/drmmode_display.c | 30 ++++++++++++++++++++++++
hw/xfree86/drivers/modesetting/drmmode_display.h | 1 +
2 files changed, 31 insertions(+)
diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c
index 6e755e9..4bfaace 100644
--- a/hw/xfree86/drivers/modesetting/drmmode_display.c
+++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
@@ -179,6 +179,36 @@ drmmode_create_bo(drmmode_ptr drmmode, drmmode_bo *bo,
}
Bool
+drmmode_bo_for_pixmap(drmmode_ptr drmmode, drmmode_bo *bo, PixmapPtr pixmap)
+{
+#ifdef GLAMOR
+ ScreenPtr screen = xf86ScrnToScreen(drmmode->scrn);
+ CARD16 pitch;
+ CARD32 size;
+ int fd;
+
+#ifdef GLAMOR_HAS_GBM
+ if (drmmode->glamor) {
+ bo->gbm = glamor_gbm_bo_from_pixmap(screen, pixmap);
+ bo->dumb = NULL;
+ return bo->gbm != NULL;
+ }
+#endif
+
+ fd = glamor_fd_from_pixmap(screen, pixmap, &pitch, &size);
+ if (fd < 0) {
+ xf86DrvMsg(drmmode->scrn->scrnIndex, X_ERROR,
+ "Failed to get fd for flip to new front.\n");
+ return FALSE;
+ }
+ bo->dumb = dumb_get_bo_from_fd(drmmode->fd, fd, pitch, size);
+ close(fd);
+#endif
+
+ return bo->dumb != NULL;
+}
+
+Bool
drmmode_SetSlaveBO(PixmapPtr ppix,
drmmode_ptr drmmode, int fd_handle, int pitch, int size)
{
diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.h b/hw/xfree86/drivers/modesetting/drmmode_display.h
index 50976b8..da7d5d7 100644
--- a/hw/xfree86/drivers/modesetting/drmmode_display.h
+++ b/hw/xfree86/drivers/modesetting/drmmode_display.h
@@ -165,6 +165,7 @@ extern DevPrivateKeyRec msPixmapPrivateKeyRec;
#define msGetPixmapPriv(drmmode, p) ((msPixmapPrivPtr)dixGetPrivateAddr(&(p)->devPrivates, &(drmmode)->pixmapPrivateKeyRec))
+Bool drmmode_bo_for_pixmap(drmmode_ptr drmmode, drmmode_bo *bo, PixmapPtr pixmap);
int drmmode_bo_destroy(drmmode_ptr drmmode, drmmode_bo *bo);
uint32_t drmmode_bo_get_pitch(drmmode_bo *bo);
uint32_t drmmode_bo_get_handle(drmmode_bo *bo);
--
2.7.4
More information about the xorg-devel
mailing list