render/allocator: make wlr_allocator part of the public API
This commit is contained in:
		
							parent
							
								
									ab16861e86
								
							
						
					
					
						commit
						02a1ae169e
					
				|  | @ -1,52 +1,7 @@ | |||
| #ifndef RENDER_ALLOCATOR_ALLOCATOR_H | ||||
| #define RENDER_ALLOCATOR_ALLOCATOR_H | ||||
| 
 | ||||
| #include <stdbool.h> | ||||
| #include <wayland-server-core.h> | ||||
| #include <wlr/render/drm_format_set.h> | ||||
| 
 | ||||
| struct wlr_allocator; | ||||
| struct wlr_backend; | ||||
| struct wlr_renderer; | ||||
| 
 | ||||
| struct wlr_allocator_interface { | ||||
| 	struct wlr_buffer *(*create_buffer)(struct wlr_allocator *alloc, | ||||
| 		int width, int height, const struct wlr_drm_format *format); | ||||
| 	void (*destroy)(struct wlr_allocator *alloc); | ||||
| }; | ||||
| 
 | ||||
| struct wlr_allocator { | ||||
| 	const struct wlr_allocator_interface *impl; | ||||
| 
 | ||||
| 	// Capabilities of the buffers created with this allocator
 | ||||
| 	uint32_t buffer_caps; | ||||
| 
 | ||||
| 	struct { | ||||
| 		struct wl_signal destroy; | ||||
| 	} events; | ||||
| }; | ||||
| 
 | ||||
| /**
 | ||||
|  * Creates the adequate wlr_allocator given a backend and a renderer | ||||
|  */ | ||||
| struct wlr_allocator *wlr_allocator_autocreate(struct wlr_backend *backend, | ||||
| 	struct wlr_renderer *renderer); | ||||
| /**
 | ||||
|  * Destroy the allocator. | ||||
|  */ | ||||
| void wlr_allocator_destroy(struct wlr_allocator *alloc); | ||||
| /**
 | ||||
|  * Allocate a new buffer. | ||||
|  * | ||||
|  * When the caller is done with it, they must unreference it by calling | ||||
|  * wlr_buffer_drop. | ||||
|  */ | ||||
| struct wlr_buffer *wlr_allocator_create_buffer(struct wlr_allocator *alloc, | ||||
| 	int width, int height, const struct wlr_drm_format *format); | ||||
| 
 | ||||
| // For wlr_allocator implementors
 | ||||
| void wlr_allocator_init(struct wlr_allocator *alloc, | ||||
| 	const struct wlr_allocator_interface *impl, uint32_t buffer_caps); | ||||
| #include <wlr/render/allocator.h> | ||||
| 
 | ||||
| struct wlr_allocator *allocator_autocreate_with_drm_fd( | ||||
| 	struct wlr_backend *backend, struct wlr_renderer *renderer, int drm_fd); | ||||
|  |  | |||
|  | @ -0,0 +1,58 @@ | |||
| /*
 | ||||
|  * This an unstable interface of wlroots. No guarantees are made regarding the | ||||
|  * future consistency of this API. | ||||
|  */ | ||||
| #ifndef WLR_USE_UNSTABLE | ||||
| #error "Add -DWLR_USE_UNSTABLE to enable unstable wlroots features" | ||||
| #endif | ||||
| 
 | ||||
| #ifndef WLR_ALLOCATOR_H | ||||
| #define WLR_ALLOCATOR_H | ||||
| 
 | ||||
| #include <wayland-server-core.h> | ||||
| 
 | ||||
| struct wlr_allocator; | ||||
| struct wlr_backend; | ||||
| struct wlr_drm_format; | ||||
| struct wlr_renderer; | ||||
| 
 | ||||
| struct wlr_allocator_interface { | ||||
| 	struct wlr_buffer *(*create_buffer)(struct wlr_allocator *alloc, | ||||
| 		int width, int height, const struct wlr_drm_format *format); | ||||
| 	void (*destroy)(struct wlr_allocator *alloc); | ||||
| }; | ||||
| 
 | ||||
| void wlr_allocator_init(struct wlr_allocator *alloc, | ||||
| 	const struct wlr_allocator_interface *impl, uint32_t buffer_caps); | ||||
| 
 | ||||
| struct wlr_allocator { | ||||
| 	const struct wlr_allocator_interface *impl; | ||||
| 
 | ||||
| 	// Capabilities of the buffers created with this allocator
 | ||||
| 	uint32_t buffer_caps; | ||||
| 
 | ||||
| 	struct { | ||||
| 		struct wl_signal destroy; | ||||
| 	} events; | ||||
| }; | ||||
| 
 | ||||
| /**
 | ||||
|  * Creates the adequate wlr_allocator given a backend and a renderer | ||||
|  */ | ||||
| struct wlr_allocator *wlr_allocator_autocreate(struct wlr_backend *backend, | ||||
| 	struct wlr_renderer *renderer); | ||||
| /**
 | ||||
|  * Destroy the allocator. | ||||
|  */ | ||||
| void wlr_allocator_destroy(struct wlr_allocator *alloc); | ||||
| 
 | ||||
| /**
 | ||||
|  * Allocate a new buffer. | ||||
|  * | ||||
|  * When the caller is done with it, they must unreference it by calling | ||||
|  * wlr_buffer_drop. | ||||
|  */ | ||||
| struct wlr_buffer *wlr_allocator_create_buffer(struct wlr_allocator *alloc, | ||||
| 	int width, int height, const struct wlr_drm_format *format); | ||||
| 
 | ||||
| #endif | ||||
|  | @ -3,6 +3,7 @@ | |||
| #include <fcntl.h> | ||||
| #include <stdlib.h> | ||||
| #include <unistd.h> | ||||
| #include <wlr/render/allocator.h> | ||||
| #include <wlr/util/log.h> | ||||
| #include <xf86drm.h> | ||||
| #include <xf86drmMode.h> | ||||
|  |  | |||
|  | @ -7,11 +7,13 @@ | |||
| #include <string.h> | ||||
| #include <sys/mman.h> | ||||
| #include <unistd.h> | ||||
| #include <wlr/backend.h> | ||||
| #include <wlr/backend/session.h> | ||||
| #include <wlr/render/allocator.h> | ||||
| #include <wlr/render/drm_format_set.h> | ||||
| #include <wlr/util/log.h> | ||||
| #include <xf86drm.h> | ||||
| #include <xf86drmMode.h> | ||||
| #include <wlr/backend.h> | ||||
| #include <wlr/backend/session.h> | ||||
| 
 | ||||
| #include "render/allocator/drm_dumb.h" | ||||
| #include "render/pixel_format.h" | ||||
|  |  | |||
|  | @ -4,8 +4,11 @@ | |||
| #include <fcntl.h> | ||||
| #include <stdlib.h> | ||||
| #include <unistd.h> | ||||
| #include <wlr/render/allocator.h> | ||||
| #include <wlr/render/drm_format_set.h> | ||||
| #include <wlr/util/log.h> | ||||
| #include <xf86drm.h> | ||||
| 
 | ||||
| #include "render/allocator/gbm.h" | ||||
| 
 | ||||
| static const struct wlr_buffer_impl buffer_impl; | ||||
|  |  | |||
|  | @ -3,7 +3,10 @@ | |||
| #include <stdlib.h> | ||||
| #include <sys/mman.h> | ||||
| #include <unistd.h> | ||||
| #include <wlr/render/allocator.h> | ||||
| #include <wlr/render/drm_format_set.h> | ||||
| #include <wlr/util/log.h> | ||||
| 
 | ||||
| #include "render/pixel_format.h" | ||||
| #include "render/allocator/shm.h" | ||||
| #include "util/shm.h" | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue