summaryrefslogtreecommitdiff
path: root/src/gbm/main
diff options
context:
space:
mode:
authorJames Jones <jajones@nvidia.com>2021-06-03 15:36:10 -0700
committerMarge Bot <eric+marge@anholt.net>2021-07-06 16:57:59 +0000
commit496ea1715e8a00ad4e6d4c6e94ca16efc1704bf6 (patch)
treebfc02ac153ec0289b450dd2345c10f2387efaa70 /src/gbm/main
parentf98bcd2f5b1501e51053e2abfbde4fce1a6e51a5 (diff)
gbm: Move majority of gbmint.h to gbm_backend_abi.h
The content of gbm_backend_abi.h are nearly an identical copy of the old gbmint.h. Only minimal modifications have been made to ease history tracking. Subsequent changes will further formalize the ABI structures in gbm_backend_abi.h Signed-off-by: James Jones <jajones@nvidia.com> Reviewed-by: Michel Dänzer <mdaenzer@redhat.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9902>
Diffstat (limited to 'src/gbm/main')
-rw-r--r--src/gbm/main/gbm_backend_abi.h135
-rw-r--r--src/gbm/main/gbmint.h101
2 files changed, 138 insertions, 98 deletions
diff --git a/src/gbm/main/gbm_backend_abi.h b/src/gbm/main/gbm_backend_abi.h
new file mode 100644
index 00000000000..6b802826306
--- /dev/null
+++ b/src/gbm/main/gbm_backend_abi.h
@@ -0,0 +1,135 @@
+/*
+ * Copyright © 2011 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ * Benjamin Franzke <benjaminfranzke@googlemail.com>
+ */
+
+#ifndef GBM_BACKEND_ABI_H_
+#define GBM_BACKEND_ABI_H_
+
+#include "gbm.h"
+
+/**
+ * \file gbm_backend_abi.h
+ * \brief ABI between the GBM loader and its backends
+ */
+
+struct gbm_backend_desc;
+
+/**
+ * The device used for the memory allocation.
+ *
+ * The members of this structure should be not accessed directly
+ */
+struct gbm_device {
+ /* Hack to make a gbm_device detectable by its first element. */
+ struct gbm_device *(*dummy)(int);
+
+ const struct gbm_backend_desc *backend_desc;
+
+ int fd;
+ const char *name;
+
+ void (*destroy)(struct gbm_device *gbm);
+ int (*is_format_supported)(struct gbm_device *gbm,
+ uint32_t format,
+ uint32_t usage);
+ int (*get_format_modifier_plane_count)(struct gbm_device *device,
+ uint32_t format,
+ uint64_t modifier);
+
+ struct gbm_bo *(*bo_create)(struct gbm_device *gbm,
+ uint32_t width, uint32_t height,
+ uint32_t format,
+ uint32_t usage,
+ const uint64_t *modifiers,
+ const unsigned int count);
+ struct gbm_bo *(*bo_import)(struct gbm_device *gbm, uint32_t type,
+ void *buffer, uint32_t usage);
+ void *(*bo_map)(struct gbm_bo *bo,
+ uint32_t x, uint32_t y,
+ uint32_t width, uint32_t height,
+ uint32_t flags, uint32_t *stride,
+ void **map_data);
+ void (*bo_unmap)(struct gbm_bo *bo, void *map_data);
+ int (*bo_write)(struct gbm_bo *bo, const void *buf, size_t data);
+ int (*bo_get_fd)(struct gbm_bo *bo);
+ int (*bo_get_planes)(struct gbm_bo *bo);
+ union gbm_bo_handle (*bo_get_handle)(struct gbm_bo *bo, int plane);
+ int (*bo_get_plane_fd)(struct gbm_bo *bo, int plane);
+ uint32_t (*bo_get_stride)(struct gbm_bo *bo, int plane);
+ uint32_t (*bo_get_offset)(struct gbm_bo *bo, int plane);
+ uint64_t (*bo_get_modifier)(struct gbm_bo *bo);
+ void (*bo_destroy)(struct gbm_bo *bo);
+
+ struct gbm_surface *(*surface_create)(struct gbm_device *gbm,
+ uint32_t width, uint32_t height,
+ uint32_t format, uint32_t flags,
+ const uint64_t *modifiers,
+ const unsigned count);
+ struct gbm_bo *(*surface_lock_front_buffer)(struct gbm_surface *surface);
+ void (*surface_release_buffer)(struct gbm_surface *surface,
+ struct gbm_bo *bo);
+ int (*surface_has_free_buffers)(struct gbm_surface *surface);
+ void (*surface_destroy)(struct gbm_surface *surface);
+};
+
+/**
+ * The allocated buffer object.
+ *
+ * The members in this structure should not be accessed directly.
+ */
+struct gbm_bo {
+ struct gbm_device *gbm;
+ uint32_t width;
+ uint32_t height;
+ uint32_t stride;
+ uint32_t format;
+ union gbm_bo_handle handle;
+ void *user_data;
+ void (*destroy_user_data)(struct gbm_bo *, void *);
+};
+
+struct gbm_surface {
+ struct gbm_device *gbm;
+ uint32_t width;
+ uint32_t height;
+ uint32_t format;
+ uint32_t flags;
+ struct {
+ uint64_t *modifiers;
+ unsigned count;
+ };
+};
+
+struct gbm_backend {
+ const char *backend_name;
+ struct gbm_device *(*create_device)(int fd);
+};
+
+struct gbm_core {
+ uint32_t (*format_canonicalize)(uint32_t gbm_format);
+};
+
+#endif
diff --git a/src/gbm/main/gbmint.h b/src/gbm/main/gbmint.h
index 81cdab59f9d..143b104e0c4 100644
--- a/src/gbm/main/gbmint.h
+++ b/src/gbm/main/gbmint.h
@@ -1,5 +1,6 @@
/*
* Copyright © 2011 Intel Corporation
+ * Copyright © 2021 NVIDIA Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -23,12 +24,13 @@
*
* Authors:
* Benjamin Franzke <benjaminfranzke@googlemail.com>
+ * James Jones <jajones@nvidia.com>
*/
#ifndef INTERNAL_H_
#define INTERNAL_H_
-#include "gbm.h"
+#include "gbm_backend_abi.h"
/* GCC visibility */
#if defined(__GNUC__)
@@ -42,103 +44,6 @@
* \brief Internal implementation details of gbm
*/
-struct gbm_backend_desc;
-
-/**
- * The device used for the memory allocation.
- *
- * The members of this structure should be not accessed directly
- */
-struct gbm_device {
- /* Hack to make a gbm_device detectable by its first element. */
- struct gbm_device *(*dummy)(int);
-
- const struct gbm_backend_desc *backend_desc;
-
- int fd;
- const char *name;
-
- void (*destroy)(struct gbm_device *gbm);
- int (*is_format_supported)(struct gbm_device *gbm,
- uint32_t format,
- uint32_t usage);
- int (*get_format_modifier_plane_count)(struct gbm_device *device,
- uint32_t format,
- uint64_t modifier);
-
- struct gbm_bo *(*bo_create)(struct gbm_device *gbm,
- uint32_t width, uint32_t height,
- uint32_t format,
- uint32_t usage,
- const uint64_t *modifiers,
- const unsigned int count);
- struct gbm_bo *(*bo_import)(struct gbm_device *gbm, uint32_t type,
- void *buffer, uint32_t usage);
- void *(*bo_map)(struct gbm_bo *bo,
- uint32_t x, uint32_t y,
- uint32_t width, uint32_t height,
- uint32_t flags, uint32_t *stride,
- void **map_data);
- void (*bo_unmap)(struct gbm_bo *bo, void *map_data);
- int (*bo_write)(struct gbm_bo *bo, const void *buf, size_t data);
- int (*bo_get_fd)(struct gbm_bo *bo);
- int (*bo_get_planes)(struct gbm_bo *bo);
- union gbm_bo_handle (*bo_get_handle)(struct gbm_bo *bo, int plane);
- int (*bo_get_plane_fd)(struct gbm_bo *bo, int plane);
- uint32_t (*bo_get_stride)(struct gbm_bo *bo, int plane);
- uint32_t (*bo_get_offset)(struct gbm_bo *bo, int plane);
- uint64_t (*bo_get_modifier)(struct gbm_bo *bo);
- void (*bo_destroy)(struct gbm_bo *bo);
-
- struct gbm_surface *(*surface_create)(struct gbm_device *gbm,
- uint32_t width, uint32_t height,
- uint32_t format, uint32_t flags,
- const uint64_t *modifiers,
- const unsigned count);
- struct gbm_bo *(*surface_lock_front_buffer)(struct gbm_surface *surface);
- void (*surface_release_buffer)(struct gbm_surface *surface,
- struct gbm_bo *bo);
- int (*surface_has_free_buffers)(struct gbm_surface *surface);
- void (*surface_destroy)(struct gbm_surface *surface);
-};
-
-/**
- * The allocated buffer object.
- *
- * The members in this structure should not be accessed directly.
- */
-struct gbm_bo {
- struct gbm_device *gbm;
- uint32_t width;
- uint32_t height;
- uint32_t stride;
- uint32_t format;
- union gbm_bo_handle handle;
- void *user_data;
- void (*destroy_user_data)(struct gbm_bo *, void *);
-};
-
-struct gbm_surface {
- struct gbm_device *gbm;
- uint32_t width;
- uint32_t height;
- uint32_t format;
- uint32_t flags;
- struct {
- uint64_t *modifiers;
- unsigned count;
- };
-};
-
-struct gbm_backend {
- const char *backend_name;
- struct gbm_device *(*create_device)(int fd);
-};
-
-struct gbm_core {
- uint32_t (*format_canonicalize)(uint32_t gbm_format);
-};
-
extern struct gbm_core gbm_core;
#endif