Commit a5321ea4 authored by Axel Davy's avatar Axel Davy Committed by Emma Anholt
Browse files

Allow to create textured pixmaps from gbm_bo without using gem names

This implements glamor_egl_create_textured_pixmap_from_gbm_bo,
which is similar to glamor_egl_create_textured_pixmap, except
it takes a gbm_bo as argument.
Signed-off-by: Axel Davy's avatarAxel Davy <>
Reviewed-by: default avatarZhigang Gong <>
parent 403004fe
......@@ -230,6 +230,19 @@ extern _X_EXPORT Bool glamor_egl_create_textured_pixmap(PixmapPtr pixmap,
int handle,
int stride);
* @glamor_egl_create_textured_pixmap_from_bo: Try to create a textured pixmap
* from a gbm_bo.
* @pixmap: The pixmap need to be processed.
* @bo: a pointer on a gbm_bo structure attached to this pixmap at DDX layer.
* This function is similar to glamor_egl_create_textured_pixmap.
extern _X_EXPORT Bool
glamor_egl_create_textured_pixmap_from_gbm_bo(PixmapPtr pixmap,
void *bo);
extern _X_EXPORT void glamor_egl_destroy_textured_pixmap(PixmapPtr pixmap);
......@@ -315,6 +315,40 @@ done:
return ret;
glamor_egl_create_textured_pixmap_from_gbm_bo(PixmapPtr pixmap, void *bo)
ScreenPtr screen = pixmap->drawable.pScreen;
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
struct glamor_egl_screen_private *glamor_egl;
EGLImageKHR image;
GLuint texture;
Bool ret = FALSE;
glamor_egl = glamor_egl_get_screen_private(scrn);
image = glamor_egl->egl_create_image_khr(glamor_egl->display,
bo, NULL);
if (image == EGL_NO_IMAGE_KHR) {
glamor_set_pixmap_type(pixmap, GLAMOR_DRM_ONLY);
goto done;
glamor_create_texture_from_image(glamor_egl, image, &texture);
glamor_set_pixmap_type(pixmap, GLAMOR_TEXTURE_DRM);
glamor_set_pixmap_texture(pixmap, texture);
dixSetPrivate(&pixmap->devPrivates, glamor_egl_pixmap_private_key,
ret = TRUE;
return ret;
static void
_glamor_egl_destroy_pixmap_image(PixmapPtr pixmap)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment