diff options
author | Zhigang Gong <zhigang.gong@linux.intel.com> | 2011-12-16 15:04:33 +0800 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2013-12-18 11:23:46 -0800 |
commit | 5769d8603ddef6a8023f12bba1d3d3cde83e82d4 (patch) | |
tree | 0d760b40c8b5a23bdd37e7d4f8887d1a20b75f35 /glamor/glamor.h | |
parent | 3f5d53b33978bdb848dd605a19d3fb4ea5f259e0 (diff) |
Export glamor_create_texture to DDX driver.
If DDX failed to create textured pixmap from its BO's handle,
it can turn to call this API to create a brand new glamor
rather than fallback to pure in memory pixmap.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Diffstat (limited to 'glamor/glamor.h')
-rw-r--r-- | glamor/glamor.h | 67 |
1 files changed, 64 insertions, 3 deletions
diff --git a/glamor/glamor.h b/glamor/glamor.h index eace12873..4c01623d0 100644 --- a/glamor/glamor.h +++ b/glamor/glamor.h @@ -90,12 +90,29 @@ typedef enum glamor_pixmap_type { } glamor_pixmap_type_t; #define GLAMOR_EGL_EXTERNAL_BUFFER 3 - +/* @glamor_init: Initialize glamor internal data structure. + * + * @screen: Current screen pointer. + * @flags: Please refer the flags description above. + * + * This function initializes necessary internal data structure + * for glamor. And before calling into this function, the OpenGL + * environment should be ready. Should be called before any real + * glamor rendering or texture allocation functions. + */ extern _X_EXPORT Bool glamor_init(ScreenPtr screen, unsigned int flags); extern _X_EXPORT void glamor_fini(ScreenPtr screen); extern _X_EXPORT void glamor_set_screen_pixmap_texture(ScreenPtr screen, int w, int h, unsigned int tex); +/* @glamor_glyphs_init: Initialize glyphs internal data structures. + * + * @pScreen: Current screen pointer. + * + * This function must be called after the glamor_init and the texture + * can be allocated. An example is to call it when create the screen + * resources at DDX layer. + */ extern _X_EXPORT Bool glamor_glyphs_init(ScreenPtr pScreen); extern _X_EXPORT void glamor_set_pixmap_texture(PixmapPtr pixmap, int w, int h, @@ -104,21 +121,65 @@ extern _X_EXPORT void glamor_set_pixmap_texture(PixmapPtr pixmap, int w, int h, extern _X_EXPORT void glamor_set_pixmap_type(PixmapPtr pixmap, glamor_pixmap_type_t type); extern _X_EXPORT void glamor_destroy_textured_pixmap(PixmapPtr pixmap); extern _X_EXPORT void glamor_block_handler(ScreenPtr screen); +extern _X_EXPORT PixmapPtr glamor_create_pixmap(ScreenPtr screen, int w, int h, int depth, + unsigned int usage); #ifdef GLAMOR_FOR_XORG +/* @glamor_egl_init: Initialize EGL environment. + * + * @scrn: Current screen info pointer. + * @fd: Current drm fd. + * + * This function creates and intialize EGL contexts. + * Should be called from DDX's preInit function. + * Return TRUE if success, otherwise return FALSE. + * */ extern _X_EXPORT Bool glamor_egl_init(ScrnInfoPtr scrn, int fd); + +/* @glamor_egl_init_textured_pixmap: Initialization for textured pixmap allocation. + * + * @screen: Current screen pointer. + * + * This function must be called before any textured pixmap's creation including + * the screen pixmap. Could be called from DDX's screenInit function after the calling + * to glamor_init.. + */ +extern _X_EXPORT Bool glamor_egl_init_textured_pixmap(ScreenPtr screen); + +/* @glamor_egl_create_textured_screen: Create textured screen pixmap. + * + * @screen: screen pointer to be processed. + * @handle: screen pixmap's BO handle. + * @stride: screen pixmap's stride in bytes. + * + * This function is similar with the create_textured_pixmap. As the + * screen pixmap is a special, we handle it separately in this function. + */ extern _X_EXPORT Bool glamor_egl_create_textured_screen(ScreenPtr screen, int handle, int stride); + +/* + * @glamor_egl_create_textured_pixmap: Try to create a textured pixmap from + * a BO handle. + * + * @pixmap: The pixmap need to be processed. + * @handle: The BO's handle attached to this pixmap at DDX layer. + * @stride: Stride in bytes for this pixmap. + * + * This function try to create a texture from the handle and attach + * the texture to the pixmap , thus glamor can render to this pixmap + * as well. Return true if successful, otherwise return FALSE. + */ extern _X_EXPORT Bool glamor_egl_create_textured_pixmap(PixmapPtr pixmap, int handle, int stride); +extern _X_EXPORT void glamor_egl_destroy_textured_pixmap(PixmapPtr pixmap); + extern _X_EXPORT Bool glamor_egl_close_screen(ScreenPtr screen); extern _X_EXPORT void glamor_egl_free_screen(int scrnIndex, int flags); -extern _X_EXPORT Bool glamor_egl_init_textured_pixmap(ScreenPtr screen); -extern _X_EXPORT void glamor_egl_destroy_textured_pixmap(PixmapPtr pixmap); #endif /* Glamor rendering/drawing functions with XXX_nf. |