Compare commits
	
		
			3 Commits
		
	
	
		
			wip/cally-
			...
			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