mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-10-29 05:40:12 -04:00 
			
		
		
		
	render/gles2: introduce wlr_gles2_renderer_create_with_drm_fd
This commit is contained in:
		
							parent
							
								
									014c59aa40
								
							
						
					
					
						commit
						10c5199d85
					
				
					 2 changed files with 28 additions and 0 deletions
				
			
		|  | @ -15,6 +15,7 @@ | ||||||
| 
 | 
 | ||||||
| struct wlr_egl; | struct wlr_egl; | ||||||
| 
 | 
 | ||||||
|  | struct wlr_renderer *wlr_gles2_renderer_create_with_drm_fd(int drm_fd); | ||||||
| struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_egl *egl); | struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_egl *egl); | ||||||
| 
 | 
 | ||||||
| struct wlr_egl *wlr_gles2_renderer_get_egl(struct wlr_renderer *renderer); | struct wlr_egl *wlr_gles2_renderer_get_egl(struct wlr_renderer *renderer); | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| #include <assert.h> | #include <assert.h> | ||||||
| #include <drm_fourcc.h> | #include <drm_fourcc.h> | ||||||
|  | #include <gbm.h> | ||||||
| #include <GLES2/gl2.h> | #include <GLES2/gl2.h> | ||||||
| #include <GLES2/gl2ext.h> | #include <GLES2/gl2ext.h> | ||||||
| #include <stdint.h> | #include <stdint.h> | ||||||
|  | @ -717,6 +718,32 @@ extern const GLchar tex_fragment_src_rgba[]; | ||||||
| extern const GLchar tex_fragment_src_rgbx[]; | extern const GLchar tex_fragment_src_rgbx[]; | ||||||
| extern const GLchar tex_fragment_src_external[]; | extern const GLchar tex_fragment_src_external[]; | ||||||
| 
 | 
 | ||||||
|  | struct wlr_renderer *wlr_gles2_renderer_create_with_drm_fd(int drm_fd) { | ||||||
|  | 	struct gbm_device *gbm_device = gbm_create_device(drm_fd); | ||||||
|  | 	if (!gbm_device) { | ||||||
|  | 		wlr_log(WLR_ERROR, "Failed to create GBM device"); | ||||||
|  | 		return NULL; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	struct wlr_egl *egl = wlr_egl_create(EGL_PLATFORM_GBM_KHR, gbm_device); | ||||||
|  | 	if (egl == NULL) { | ||||||
|  | 		wlr_log(WLR_ERROR, "Could not initialize EGL"); | ||||||
|  | 		gbm_device_destroy(gbm_device); | ||||||
|  | 		return NULL; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	egl->gbm_device = gbm_device; | ||||||
|  | 
 | ||||||
|  | 	struct wlr_renderer *renderer = wlr_gles2_renderer_create(egl); | ||||||
|  | 	if (!renderer) { | ||||||
|  | 		wlr_log(WLR_ERROR, "Failed to create GLES2 renderer"); | ||||||
|  | 		wlr_egl_destroy(egl); | ||||||
|  | 		return NULL; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return renderer; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_egl *egl) { | struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_egl *egl) { | ||||||
| 	if (!wlr_egl_make_current(egl)) { | 	if (!wlr_egl_make_current(egl)) { | ||||||
| 		return NULL; | 		return NULL; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Simon Zeni
						Simon Zeni