render: drop egl parameters from wlr_renderer_autocreate
This commit is contained in:
		
							parent
							
								
									affc59454e
								
							
						
					
					
						commit
						e128e6c08d
					
				|  | @ -29,8 +29,7 @@ bool init_drm_renderer(struct wlr_drm_backend *drm, | |||
| 		return false; | ||||
| 	} | ||||
| 
 | ||||
| 	renderer->wlr_rend = wlr_renderer_autocreate(EGL_PLATFORM_GBM_KHR, | ||||
| 			renderer->gbm); | ||||
| 	renderer->wlr_rend = wlr_renderer_autocreate(&drm->backend); | ||||
| 	if (!renderer->wlr_rend) { | ||||
| 		wlr_log(WLR_ERROR, "Failed to create EGL/WLR renderer"); | ||||
| 		goto error_gbm; | ||||
|  |  | |||
|  | @ -219,8 +219,7 @@ struct wlr_backend *wlr_headless_backend_create(struct wl_display *display) { | |||
| 		goto error_dup; | ||||
| 	} | ||||
| 
 | ||||
| 	struct wlr_renderer *renderer = wlr_renderer_autocreate( | ||||
| 		EGL_PLATFORM_GBM_KHR, gbm_alloc->gbm_device); | ||||
| 	struct wlr_renderer *renderer = wlr_renderer_autocreate(&backend->backend); | ||||
| 	if (!renderer) { | ||||
| 		wlr_log(WLR_ERROR, "Failed to create renderer"); | ||||
| 		goto error_renderer; | ||||
|  |  | |||
|  | @ -437,8 +437,7 @@ struct wlr_backend *wlr_wl_backend_create(struct wl_display *display, | |||
| 	} | ||||
| 	wl->allocator = &gbm_alloc->base; | ||||
| 
 | ||||
| 	wl->renderer = wlr_renderer_autocreate(EGL_PLATFORM_GBM_KHR, | ||||
| 		gbm_alloc->gbm_device); | ||||
| 	wl->renderer = wlr_renderer_autocreate(&wl->backend); | ||||
| 	if (wl->renderer == NULL) { | ||||
| 		wlr_log(WLR_ERROR, "Failed to create renderer"); | ||||
| 		goto error_allocator; | ||||
|  |  | |||
|  | @ -547,8 +547,7 @@ struct wlr_backend *wlr_x11_backend_create(struct wl_display *display, | |||
| 	} | ||||
| 	x11->allocator = &gbm_alloc->base; | ||||
| 
 | ||||
| 	x11->renderer = wlr_renderer_autocreate(EGL_PLATFORM_GBM_KHR, | ||||
| 		gbm_alloc->gbm_device); | ||||
| 	x11->renderer = wlr_renderer_autocreate(&x11->backend); | ||||
| 	if (x11->renderer == NULL) { | ||||
| 		wlr_log(WLR_ERROR, "Failed to create renderer"); | ||||
| 		goto error_event; | ||||
|  |  | |||
|  | @ -41,6 +41,7 @@ struct wlr_egl { | |||
| 	EGLConfig config; // may be EGL_NO_CONFIG
 | ||||
| 	EGLContext context; | ||||
| 	EGLDeviceEXT device; // may be EGL_NO_DEVICE_EXT
 | ||||
| 	struct gbm_device *gbm_device; | ||||
| 
 | ||||
| 	struct { | ||||
| 		// Display extensions
 | ||||
|  |  | |||
|  | @ -11,6 +11,7 @@ | |||
| 
 | ||||
| #include <stdint.h> | ||||
| #include <wayland-server-protocol.h> | ||||
| #include <wlr/backend.h> | ||||
| #include <wlr/render/egl.h> | ||||
| #include <wlr/render/wlr_texture.h> | ||||
| #include <wlr/types/wlr_box.h> | ||||
|  | @ -33,8 +34,7 @@ struct wlr_renderer { | |||
| 	} events; | ||||
| }; | ||||
| 
 | ||||
| struct wlr_renderer *wlr_renderer_autocreate(EGLenum platform, | ||||
| 	void *remote_display); | ||||
| struct wlr_renderer *wlr_renderer_autocreate(struct wlr_backend *backend); | ||||
| 
 | ||||
| void wlr_renderer_begin(struct wlr_renderer *r, uint32_t width, uint32_t height); | ||||
| void wlr_renderer_end(struct wlr_renderer *r); | ||||
|  |  | |||
|  | @ -5,6 +5,7 @@ | |||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <unistd.h> | ||||
| #include <gbm.h> | ||||
| #include <wlr/render/egl.h> | ||||
| #include <wlr/util/log.h> | ||||
| #include <wlr/util/region.h> | ||||
|  | @ -362,6 +363,10 @@ void wlr_egl_destroy(struct wlr_egl *egl) { | |||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	if (egl->gbm_device) { | ||||
| 		gbm_device_destroy(egl->gbm_device); | ||||
| 	} | ||||
| 
 | ||||
| 	wlr_drm_format_set_finish(&egl->dmabuf_render_formats); | ||||
| 	wlr_drm_format_set_finish(&egl->dmabuf_texture_formats); | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,6 +1,8 @@ | |||
| #include <assert.h> | ||||
| #include <stdbool.h> | ||||
| #include <stdlib.h> | ||||
| #include <gbm.h> | ||||
| #include <wlr/render/egl.h> | ||||
| #include <wlr/render/gles2.h> | ||||
| #include <wlr/render/interface.h> | ||||
| #include <wlr/render/wlr_renderer.h> | ||||
|  | @ -8,6 +10,7 @@ | |||
| #include <wlr/util/log.h> | ||||
| #include "util/signal.h" | ||||
| #include "render/wlr_renderer.h" | ||||
| #include "backend/backend.h" | ||||
| 
 | ||||
| void wlr_renderer_init(struct wlr_renderer *renderer, | ||||
| 		const struct wlr_renderer_impl *impl) { | ||||
|  | @ -247,14 +250,29 @@ bool wlr_renderer_init_wl_display(struct wlr_renderer *r, | |||
| 	return true; | ||||
| } | ||||
| 
 | ||||
| struct wlr_renderer *wlr_renderer_autocreate(EGLenum platform, | ||||
| 		void *remote_display) { | ||||
| 	struct wlr_egl *egl = wlr_egl_create(platform, remote_display, NULL); | ||||
| 	if (egl == NULL) { | ||||
| 		wlr_log(WLR_ERROR, "Could not initialize EGL"); | ||||
| struct wlr_renderer *wlr_renderer_autocreate(struct wlr_backend *backend) { | ||||
| 	int fd = backend_get_drm_fd(backend); | ||||
| 	if (fd < 0) { | ||||
| 		wlr_log(WLR_ERROR, "Failed to get DRM FD from backend"); | ||||
| 		return NULL; | ||||
| 	} | ||||
| 
 | ||||
| 	struct gbm_device *gbm_device = gbm_create_device(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, | ||||
| 			NULL); | ||||
| 	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"); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue