summaryrefslogtreecommitdiff
path: root/src/backends/native/meta-drm-buffer.c
diff options
context:
space:
mode:
authorFlorian Müllner <fmuellner@gnome.org>2021-07-19 00:01:24 +0200
committerFlorian Müllner <fmuellner@gnome.org>2021-07-19 00:03:33 +0200
commit952865a86ebb08f97263cfdbfe38b7adc20e4560 (patch)
tree1f9347628656210b03ceee4fae83beb21491d1eb /src/backends/native/meta-drm-buffer.c
parent7862f143937e43dca0513af3a24dabfb4d0db4fc (diff)
downloadmutter-master.tar.gz
Replace contents with redirect messagemaster
The default development branch is now `main`. This commit only exists on `master` to point people towards that. See https://gitlab.gnome.org/GNOME/glib/-/issues/2348 for details.
Diffstat (limited to 'src/backends/native/meta-drm-buffer.c')
-rw-r--r--src/backends/native/meta-drm-buffer.c296
1 files changed, 0 insertions, 296 deletions
diff --git a/src/backends/native/meta-drm-buffer.c b/src/backends/native/meta-drm-buffer.c
deleted file mode 100644
index 1da622037..000000000
--- a/src/backends/native/meta-drm-buffer.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * Copyright (C) 2011 Intel Corporation.
- * Copyright (C) 2016-2020 Red Hat
- * Copyright (C) 2018 DisplayLink (UK) Ltd.
- * Copyright (C) 2018 Canonical Ltd.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
- *
- * Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
- */
-
-#include "config.h"
-
-#include "backends/native/meta-drm-buffer-private.h"
-
-#include <drm_fourcc.h>
-
-#include "backends/native/meta-device-pool.h"
-#include "backends/native/meta-kms-utils.h"
-
-#define INVALID_FB_ID 0U
-
-enum
-{
- PROP_0,
-
- PROP_DEVICE_FILE,
-
- N_PROPS
-};
-
-static GParamSpec *obj_props[N_PROPS];
-
-typedef struct _MetaDrmBufferPrivate
-{
- MetaDeviceFile *device_file;
- uint32_t fb_id;
-} MetaDrmBufferPrivate;
-
-G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (MetaDrmBuffer, meta_drm_buffer,
- G_TYPE_OBJECT)
-
-MetaDeviceFile *
-meta_drm_buffer_get_device_file (MetaDrmBuffer *buffer)
-{
- MetaDrmBufferPrivate *priv = meta_drm_buffer_get_instance_private (buffer);
-
- return priv->device_file;
-}
-
-gboolean
-meta_drm_buffer_ensure_fb_id (MetaDrmBuffer *buffer,
- gboolean use_modifiers,
- const MetaDrmFbArgs *fb_args,
- GError **error)
-{
- MetaDrmBufferPrivate *priv = meta_drm_buffer_get_instance_private (buffer);
- int fd;
- MetaDrmFormatBuf tmp;
- uint32_t fb_id;
-
- fd = meta_device_file_get_fd (priv->device_file);
-
- if (use_modifiers && fb_args->modifiers[0] != DRM_FORMAT_MOD_INVALID)
- {
- if (drmModeAddFB2WithModifiers (fd,
- fb_args->width,
- fb_args->height,
- fb_args->format,
- fb_args->handles,
- fb_args->strides,
- fb_args->offsets,
- fb_args->modifiers,
- &fb_id,
- DRM_MODE_FB_MODIFIERS))
- {
- g_set_error (error,
- G_IO_ERROR,
- g_io_error_from_errno (errno),
- "drmModeAddFB2WithModifiers failed: %s",
- g_strerror (errno));
- return FALSE;
- }
- }
- else if (drmModeAddFB2 (fd,
- fb_args->width,
- fb_args->height,
- fb_args->format,
- fb_args->handles,
- fb_args->strides,
- fb_args->offsets,
- &fb_id,
- 0))
- {
- if (fb_args->format != DRM_FORMAT_XRGB8888)
- {
- g_set_error (error,
- G_IO_ERROR,
- G_IO_ERROR_FAILED,
- "drmModeAddFB does not support format '%s' (0x%x)",
- meta_drm_format_to_string (&tmp, fb_args->format),
- fb_args->format);
- return FALSE;
- }
-
- if (drmModeAddFB (fd,
- fb_args->width,
- fb_args->height,
- 24,
- 32,
- fb_args->strides[0],
- fb_args->handles[0],
- &fb_id))
- {
- g_set_error (error,
- G_IO_ERROR,
- g_io_error_from_errno (errno),
- "drmModeAddFB failed: %s",
- g_strerror (errno));
- return FALSE;
- }
- }
-
- priv->fb_id = fb_id;
- return TRUE;
-}
-
-static void
-meta_drm_buffer_release_fb_id (MetaDrmBuffer *buffer)
-{
- MetaDrmBufferPrivate *priv = meta_drm_buffer_get_instance_private (buffer);
- int fd;
- int ret;
-
- fd = meta_device_file_get_fd (priv->device_file);
- ret = drmModeRmFB (fd, priv->fb_id);
- if (ret != 0)
- g_warning ("drmModeRmFB: %s", g_strerror (-ret));
-
- priv->fb_id = 0;
-}
-
-uint32_t
-meta_drm_buffer_get_fb_id (MetaDrmBuffer *buffer)
-{
- MetaDrmBufferPrivate *priv = meta_drm_buffer_get_instance_private (buffer);
-
- return priv->fb_id;
-}
-
-int
-meta_drm_buffer_get_width (MetaDrmBuffer *buffer)
-{
- return META_DRM_BUFFER_GET_CLASS (buffer)->get_width (buffer);
-}
-
-int
-meta_drm_buffer_get_height (MetaDrmBuffer *buffer)
-{
- return META_DRM_BUFFER_GET_CLASS (buffer)->get_height (buffer);
-}
-
-int
-meta_drm_buffer_get_stride (MetaDrmBuffer *buffer)
-{
- return META_DRM_BUFFER_GET_CLASS (buffer)->get_stride (buffer);
-}
-
-uint32_t
-meta_drm_buffer_get_format (MetaDrmBuffer *buffer)
-{
- return META_DRM_BUFFER_GET_CLASS (buffer)->get_format (buffer);
-}
-
-gboolean
-meta_drm_buffer_supports_fill_timings (MetaDrmBuffer *buffer)
-{
- return META_DRM_BUFFER_GET_CLASS (buffer)->fill_timings != NULL;
-}
-
-gboolean
-meta_drm_buffer_fill_timings (MetaDrmBuffer *buffer,
- CoglFrameInfo *info,
- GError **error)
-{
- if (!meta_drm_buffer_supports_fill_timings (buffer))
- {
- g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
- "Buffer doesn't support filling timing info");
- return FALSE;
- }
-
- return META_DRM_BUFFER_GET_CLASS (buffer)->fill_timings (buffer, info, error);
-}
-
-static void
-meta_drm_buffer_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- MetaDrmBuffer *buffer = META_DRM_BUFFER (object);
- MetaDrmBufferPrivate *priv = meta_drm_buffer_get_instance_private (buffer);
-
- switch (prop_id)
- {
- case PROP_DEVICE_FILE:
- g_value_set_pointer (value, priv->device_file);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-meta_drm_buffer_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- MetaDrmBuffer *buffer = META_DRM_BUFFER (object);
- MetaDrmBufferPrivate *priv = meta_drm_buffer_get_instance_private (buffer);
-
- switch (prop_id)
- {
- case PROP_DEVICE_FILE:
- priv->device_file = g_value_get_pointer (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-meta_drm_buffer_finalize (GObject *object)
-{
- MetaDrmBuffer *buffer = META_DRM_BUFFER (object);
- MetaDrmBufferPrivate *priv = meta_drm_buffer_get_instance_private (buffer);
-
- if (priv->fb_id != INVALID_FB_ID)
- meta_drm_buffer_release_fb_id (buffer);
- meta_device_file_release (priv->device_file);
-
- G_OBJECT_CLASS (meta_drm_buffer_parent_class)->finalize (object);
-}
-
-static void
-meta_drm_buffer_constructed (GObject *object)
-{
- MetaDrmBuffer *buffer = META_DRM_BUFFER (object);
- MetaDrmBufferPrivate *priv = meta_drm_buffer_get_instance_private (buffer);
-
- meta_device_file_acquire (priv->device_file);
-
- G_OBJECT_CLASS (meta_drm_buffer_parent_class)->constructed (object);
-}
-
-static void
-meta_drm_buffer_init (MetaDrmBuffer *buffer)
-{
-}
-
-static void
-meta_drm_buffer_class_init (MetaDrmBufferClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->get_property = meta_drm_buffer_get_property;
- object_class->set_property = meta_drm_buffer_set_property;
- object_class->constructed = meta_drm_buffer_constructed;
- object_class->finalize = meta_drm_buffer_finalize;
-
- obj_props[PROP_DEVICE_FILE] =
- g_param_spec_pointer ("device-file",
- "device file",
- "MetaDeviceFile",
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT_ONLY |
- G_PARAM_STATIC_STRINGS);
- g_object_class_install_properties (object_class, N_PROPS, obj_props);
-}