render: remove wl_drm support from wlr_renderer
Everything needs to go through the unified wlr_buffer interface now. If necessary, there are two ways support for EGL_WL_bind_wayland_display could be restored by compositors: - Either by using GBM to convert back EGL Wayland buffers to DMA-BUFs, then wrap the DMA-BUF into a wlr_buffer. - Or by wrapping the EGL Wayland buffer into a special wlr_buffer that doesn't implement any wlr_buffer_impl hook, and special-case that buffer type in the renderer.
This commit is contained in:
		
							parent
							
								
									4e07d4cbf9
								
							
						
					
					
						commit
						e5b5592a95
					
				|  | @ -30,12 +30,8 @@ struct wlr_renderer_impl { | |||
| 		const float matrix[static 9], float alpha); | ||||
| 	void (*render_quad_with_matrix)(struct wlr_renderer *renderer, | ||||
| 		const float color[static 4], const float matrix[static 9]); | ||||
| 	const uint32_t *(*get_shm_texture_formats)(struct wlr_renderer *renderer, | ||||
| 		size_t *len); | ||||
| 	bool (*resource_is_wl_drm_buffer)(struct wlr_renderer *renderer, | ||||
| 		struct wl_resource *resource); | ||||
| 	void (*wl_drm_buffer_get_size)(struct wlr_renderer *renderer, | ||||
| 		struct wl_resource *buffer, int *width, int *height); | ||||
| 	const uint32_t *(*get_shm_texture_formats)( | ||||
| 		struct wlr_renderer *renderer, size_t *len); | ||||
| 	const struct wlr_drm_format_set *(*get_dmabuf_texture_formats)( | ||||
| 		struct wlr_renderer *renderer); | ||||
| 	const struct wlr_drm_format_set *(*get_render_formats)( | ||||
|  | @ -45,8 +41,6 @@ struct wlr_renderer_impl { | |||
| 		uint32_t *flags, uint32_t stride, uint32_t width, uint32_t height, | ||||
| 		uint32_t src_x, uint32_t src_y, uint32_t dst_x, uint32_t dst_y, | ||||
| 		void *data); | ||||
| 	struct wlr_texture *(*texture_from_wl_drm)(struct wlr_renderer *renderer, | ||||
| 		struct wl_resource *data); | ||||
| 	void (*destroy)(struct wlr_renderer *renderer); | ||||
| 	bool (*init_wl_display)(struct wlr_renderer *renderer, | ||||
| 		struct wl_display *wl_display); | ||||
|  |  | |||
|  | @ -80,16 +80,6 @@ void wlr_render_quad_with_matrix(struct wlr_renderer *r, | |||
|  */ | ||||
| const uint32_t *wlr_renderer_get_shm_texture_formats( | ||||
| 	struct wlr_renderer *r, size_t *len); | ||||
| /**
 | ||||
|  * Returns true if this wl_buffer is a wl_drm buffer. | ||||
|  */ | ||||
| bool wlr_renderer_resource_is_wl_drm_buffer(struct wlr_renderer *renderer, | ||||
| 	struct wl_resource *buffer); | ||||
| /**
 | ||||
|  * Gets the width and height of a wl_drm buffer. | ||||
|  */ | ||||
| void wlr_renderer_wl_drm_buffer_get_size(struct wlr_renderer *renderer, | ||||
| 	struct wl_resource *buffer, int *width, int *height); | ||||
| /**
 | ||||
|  * Get the DMA-BUF formats supporting sampling usage. Buffers allocated with | ||||
|  * a format from this list may be imported via wlr_texture_from_dmabuf. | ||||
|  |  | |||
|  | @ -159,22 +159,6 @@ const uint32_t *wlr_renderer_get_shm_texture_formats(struct wlr_renderer *r, | |||
| 	return r->impl->get_shm_texture_formats(r, len); | ||||
| } | ||||
| 
 | ||||
| bool wlr_renderer_resource_is_wl_drm_buffer(struct wlr_renderer *r, | ||||
| 		struct wl_resource *resource) { | ||||
| 	if (!r->impl->resource_is_wl_drm_buffer) { | ||||
| 		return false; | ||||
| 	} | ||||
| 	return r->impl->resource_is_wl_drm_buffer(r, resource); | ||||
| } | ||||
| 
 | ||||
| void wlr_renderer_wl_drm_buffer_get_size(struct wlr_renderer *r, | ||||
| 		struct wl_resource *buffer, int *width, int *height) { | ||||
| 	if (!r->impl->wl_drm_buffer_get_size) { | ||||
| 		return; | ||||
| 	} | ||||
| 	return r->impl->wl_drm_buffer_get_size(r, buffer, width, height); | ||||
| } | ||||
| 
 | ||||
| const struct wlr_drm_format_set *wlr_renderer_get_dmabuf_texture_formats( | ||||
| 		struct wlr_renderer *r) { | ||||
| 	if (!r->impl->get_dmabuf_texture_formats) { | ||||
|  |  | |||
|  | @ -45,14 +45,6 @@ struct wlr_texture *wlr_texture_from_pixels(struct wlr_renderer *renderer, | |||
| 	return texture; | ||||
| } | ||||
| 
 | ||||
| struct wlr_texture *wlr_texture_from_wl_drm(struct wlr_renderer *renderer, | ||||
| 		struct wl_resource *data) { | ||||
| 	if (!renderer->impl->texture_from_wl_drm) { | ||||
| 		return NULL; | ||||
| 	} | ||||
| 	return renderer->impl->texture_from_wl_drm(renderer, data); | ||||
| } | ||||
| 
 | ||||
| struct wlr_texture *wlr_texture_from_dmabuf(struct wlr_renderer *renderer, | ||||
| 		struct wlr_dmabuf_attributes *attribs) { | ||||
| 	struct wlr_dmabuf_buffer *buffer = dmabuf_buffer_create(attribs); | ||||
|  |  | |||
|  | @ -112,10 +112,6 @@ bool wlr_resource_get_buffer_size(struct wl_resource *resource, | |||
| 	if (shm_buf != NULL) { | ||||
| 		*width = wl_shm_buffer_get_width(shm_buf); | ||||
| 		*height = wl_shm_buffer_get_height(shm_buf); | ||||
| 	} else if (wlr_renderer_resource_is_wl_drm_buffer(renderer, | ||||
| 			resource)) { | ||||
| 		wlr_renderer_wl_drm_buffer_get_size(renderer, resource, | ||||
| 			width, height); | ||||
| 	} else if (wlr_dmabuf_v1_resource_is_buffer(resource)) { | ||||
| 		struct wlr_dmabuf_v1_buffer *dmabuf = | ||||
| 			wlr_dmabuf_v1_buffer_from_buffer_resource(resource); | ||||
|  | @ -240,8 +236,6 @@ struct wlr_client_buffer *wlr_client_buffer_import( | |||
| 		// The renderer is responsible for releasing the buffer when
 | ||||
| 		// appropriate
 | ||||
| 		resource_released = true; | ||||
| 	} else if (wlr_renderer_resource_is_wl_drm_buffer(renderer, resource)) { | ||||
| 		texture = wlr_texture_from_wl_drm(renderer, resource); | ||||
| 	} else if (wlr_dmabuf_v1_resource_is_buffer(resource)) { | ||||
| 		struct wlr_dmabuf_v1_buffer *dmabuf = | ||||
| 			wlr_dmabuf_v1_buffer_from_buffer_resource(resource); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue