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>
This commit is contained in:
		
							parent
							
								
									3f5d53b339
								
							
						
					
					
						commit
						5769d8603d
					
				|  | @ -90,12 +90,29 @@ typedef enum  glamor_pixmap_type { | ||||||
| } glamor_pixmap_type_t; | } glamor_pixmap_type_t; | ||||||
| 
 | 
 | ||||||
| #define GLAMOR_EGL_EXTERNAL_BUFFER 3 | #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 Bool glamor_init(ScreenPtr screen, unsigned int flags); | ||||||
| extern _X_EXPORT void glamor_fini(ScreenPtr screen); | extern _X_EXPORT void glamor_fini(ScreenPtr screen); | ||||||
| extern _X_EXPORT void glamor_set_screen_pixmap_texture(ScreenPtr screen, | extern _X_EXPORT void glamor_set_screen_pixmap_texture(ScreenPtr screen, | ||||||
| 						       int w, int h, | 						       int w, int h, | ||||||
| 						       unsigned int tex); | 						       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 Bool glamor_glyphs_init(ScreenPtr pScreen); | ||||||
| 
 | 
 | ||||||
| extern _X_EXPORT void glamor_set_pixmap_texture(PixmapPtr pixmap, int w, int h, | 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_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_destroy_textured_pixmap(PixmapPtr pixmap); | ||||||
| extern _X_EXPORT void glamor_block_handler(ScreenPtr screen); | 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 | #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); | 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, | extern _X_EXPORT Bool glamor_egl_create_textured_screen(ScreenPtr screen, | ||||||
| 							int handle, | 							int handle, | ||||||
| 							int stride); | 							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, | extern _X_EXPORT Bool glamor_egl_create_textured_pixmap(PixmapPtr pixmap, | ||||||
| 							int handle, | 							int handle, | ||||||
| 							int stride); | 							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 Bool glamor_egl_close_screen(ScreenPtr screen); | ||||||
| extern _X_EXPORT void glamor_egl_free_screen(int scrnIndex, int flags); | 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 | #endif | ||||||
| 
 | 
 | ||||||
| /* Glamor rendering/drawing functions with XXX_nf. 
 | /* Glamor rendering/drawing functions with XXX_nf. 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue