Compare commits
	
		
			3 Commits
		
	
	
		
			citadel-48
			...
			wip/nielsd
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 4233ecd539 | ||
|   | 355d486502 | ||
|   | 84415f936c | 
| @@ -22,6 +22,30 @@ | ||||
|  *     Jasper St. Pierre <jstpierre@mecheye.net> | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * SECTION:meta-wayland-buffer | ||||
|  * @title: MetaWaylandBuffer | ||||
|  * @short_description: A wrapper for wayland buffers | ||||
|  * | ||||
|  * #MetaWaylandBuffer is a general wrapper around wl_buffer, the basic way of | ||||
|  * passing rendered data from Wayland clients to the compositor. Note there are | ||||
|  * multiple ways of passing a buffer to the compositor, as specified by | ||||
|  * #MetaWaylandBufferType. | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * MetaWaylandBufferType: | ||||
|  * @META_WAYLAND_BUFFER_TYPE_UNKNOWN: Unknown type. | ||||
|  * @META_WAYLAND_BUFFER_TYPE_SHM: wl_buffer backed by shared memory | ||||
|  * @META_WAYLAND_BUFFER_TYPE_EGL_IMAGE: wl_buffer backed by an EGLImage | ||||
|  * @META_WAYLAND_BUFFER_TYPE_EGL_STREAM: wl_buffer backed by an EGLStream (NVIDIA-specific) | ||||
|  * @META_WAYLAND_BUFFER_TYPE_DMA_BUF: wl_buffer backed by a dma_buf | ||||
|  * | ||||
|  * Specifies the backing memory for a #MetaWaylandBuffer. Depending on the type | ||||
|  * of buffer, this will lead to different handling for the compositor.  For | ||||
|  * example, a shared-memory buffer will still need to be uploaded to the GPU. | ||||
|  */ | ||||
|  | ||||
| #include "config.h" | ||||
|  | ||||
| #include "wayland/meta-wayland-buffer.h" | ||||
| @@ -449,6 +473,15 @@ meta_wayland_buffer_attach (MetaWaylandBuffer  *buffer, | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_wayland_buffer_create_snippet: | ||||
|  * @buffer: A #MetaWaylandBuffer object | ||||
|  * | ||||
|  * If needed, this method creates a #CoglSnippet to make sure the buffer can be | ||||
|  * dealt with appropriately in a #CoglPipeline that renders it. | ||||
|  * | ||||
|  * Returns: (transfer full) (nullable): A new #CoglSnippet, or %NULL. | ||||
|  */ | ||||
| CoglSnippet * | ||||
| meta_wayland_buffer_create_snippet (MetaWaylandBuffer *buffer) | ||||
| { | ||||
| @@ -582,6 +615,11 @@ meta_wayland_buffer_class_init (MetaWaylandBufferClass *klass) | ||||
|  | ||||
|   object_class->finalize = meta_wayland_buffer_finalize; | ||||
|  | ||||
|   /** | ||||
|    * MetaWaylandBuffer::resource-destroyed: | ||||
|    * | ||||
|    * Called when the underlying wl_resource was destroyed. | ||||
|    */ | ||||
|   signals[RESOURCE_DESTROYED] = g_signal_new ("resource-destroyed", | ||||
|                                               G_TYPE_FROM_CLASS (object_class), | ||||
|                                               G_SIGNAL_RUN_LAST, | ||||
|   | ||||
| @@ -25,6 +25,16 @@ | ||||
|  *     Daniel Stone <daniels@collabora.com> | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * SECTION:meta-wayland-dma-buf | ||||
|  * @title: MetaWaylandDmaBuf | ||||
|  * @short_description: Handles passing dma_bufs in Wayland | ||||
|  * | ||||
|  * The MetaWaylandDmaBuf namespace contains several objects and functions to | ||||
|  * handle dma_buf buffers that are passed through from clients in Wayland (e.g. | ||||
|  * using the linux_dmabuf_unstable_v1 protocol). | ||||
|  */ | ||||
|  | ||||
| #include "config.h" | ||||
|  | ||||
| #include "wayland/meta-wayland-dma-buf.h" | ||||
| @@ -260,6 +270,17 @@ static const struct wl_buffer_interface dma_buf_buffer_impl = | ||||
|   buffer_destroy, | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * meta_wayland_dma_buf_from_buffer: | ||||
|  * @buffer: A #MetaWaylandBuffer object | ||||
|  * | ||||
|  * Fetches the associated #MetaWaylandDmaBufBuffer from the wayland buffer. | ||||
|  * This does not *create* a new object, as this happens in the create_params | ||||
|  * request of linux_dmabuf_unstable_v1. | ||||
|  * | ||||
|  * Returns: (transfer none): The corresponding #MetaWaylandDmaBufBuffer (or | ||||
|  * %NULL if it wasn't a dma_buf-based wayland buffer) | ||||
|  */ | ||||
| MetaWaylandDmaBufBuffer * | ||||
| meta_wayland_dma_buf_from_buffer (MetaWaylandBuffer *buffer) | ||||
| { | ||||
| @@ -513,6 +534,18 @@ dma_buf_bind (struct wl_client *client, | ||||
|   send_modifiers (resource, DRM_FORMAT_RGB565); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_wayland_dma_buf_init: | ||||
|  * @compositor: The #MetaWaylandCompositor | ||||
|  * | ||||
|  * Creates the global Wayland object that exposes the linux_dmabuf_unstable_v1 | ||||
|  * protocol. When a client binds to the resource, Mutter will make sure to | ||||
|  * also send the supported DRM format modifiers. | ||||
|  * | ||||
|  * Returns: Whether the initialization was succesfull. If this is %FALSE, | ||||
|  * clients won't be able to use the linux_dmabuf_unstable_v1 protocol to pass | ||||
|  * buffers. | ||||
|  */ | ||||
| gboolean | ||||
| meta_wayland_dma_buf_init (MetaWaylandCompositor *compositor) | ||||
| { | ||||
|   | ||||
| @@ -1478,6 +1478,13 @@ meta_wayland_surface_begin_grab_op (MetaWaylandSurface *surface, | ||||
|                                      x, y); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_wayland_shell_init: | ||||
|  * @compositor: The #MetaWaylandCompositor object | ||||
|  * | ||||
|  * Initializes the Wayland interfaces providing features that deal with | ||||
|  * desktop-specific conundrums, like XDG shell, wl_shell (deprecated), etc. | ||||
|  */ | ||||
| void | ||||
| meta_wayland_shell_init (MetaWaylandCompositor *compositor) | ||||
| { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user