diff options
author | Scott Anderson <ascent12@hotmail.com> | 2017-09-30 19:11:41 +1300 |
---|---|---|
committer | Scott Anderson <ascent12@hotmail.com> | 2017-09-30 19:11:41 +1300 |
commit | d0708b1a3a3fb9fd3a073d6c5406b26e8bf617e9 (patch) | |
tree | be19c29026e04846db7521183f073328e319c558 | |
parent | 610b0493ac4a3bbde44378adf855c7202b1e59c4 (diff) |
Split DRM internal interface to its own header
-rw-r--r-- | backend/drm/drm.c | 4 | ||||
-rw-r--r-- | backend/drm/iface_atomic.c | 1 | ||||
-rw-r--r-- | backend/drm/iface_legacy.c | 1 | ||||
-rw-r--r-- | include/backend/drm/drm.h | 18 | ||||
-rw-r--r-- | include/backend/drm/iface.h | 35 |
5 files changed, 39 insertions, 20 deletions
diff --git a/backend/drm/drm.c b/backend/drm/drm.c index cba41023..40a6f37b 100644 --- a/backend/drm/drm.c +++ b/backend/drm/drm.c @@ -21,12 +21,10 @@ #include <wlr/render/gles2.h> #include <wlr/render.h> #include "backend/drm/drm.h" +#include "backend/drm/iface.h" #include "backend/drm/util.h" bool wlr_drm_check_features(struct wlr_drm_backend *backend) { - extern const struct wlr_drm_interface iface_legacy; - extern const struct wlr_drm_interface iface_atomic; - if (drmSetClientCap(backend->fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1)) { wlr_log(L_ERROR, "DRM universal planes unsupported"); return false; diff --git a/backend/drm/iface_atomic.c b/backend/drm/iface_atomic.c index 5bb2da9b..75a3c33a 100644 --- a/backend/drm/iface_atomic.c +++ b/backend/drm/iface_atomic.c @@ -3,6 +3,7 @@ #include <xf86drmMode.h> #include <wlr/util/log.h> #include "backend/drm/drm.h" +#include "backend/drm/iface.h" #include "backend/drm/util.h" struct atomic { diff --git a/backend/drm/iface_legacy.c b/backend/drm/iface_legacy.c index 856e9060..110b38b5 100644 --- a/backend/drm/iface_legacy.c +++ b/backend/drm/iface_legacy.c @@ -3,6 +3,7 @@ #include <xf86drmMode.h> #include <wlr/util/log.h> #include "backend/drm/drm.h" +#include "backend/drm/iface.h" #include "backend/drm/util.h" static bool legacy_crtc_pageflip(struct wlr_drm_backend *backend, diff --git a/include/backend/drm/drm.h b/include/backend/drm/drm.h index 43838495..c57493f3 100644 --- a/include/backend/drm/drm.h +++ b/include/backend/drm/drm.h @@ -15,6 +15,7 @@ #include <wlr/egl.h> #include <wlr/util/list.h> +#include "iface.h" #include "properties.h" struct wlr_drm_plane { @@ -156,23 +157,6 @@ struct wlr_drm_output { struct wl_event_source *retry_pageflip; }; -// Used to provide atomic or legacy DRM functions -struct wlr_drm_interface { - // Enable or disable DPMS for output - void (*conn_enable)(struct wlr_drm_backend *backend, - struct wlr_drm_output *output, bool enable); - // Pageflip on crtc. If mode is non-NULL perform a full modeset using it. - bool (*crtc_pageflip)(struct wlr_drm_backend *backend, - struct wlr_drm_output *output, struct wlr_drm_crtc *crtc, - uint32_t fb_id, drmModeModeInfo *mode); - // Enable the cursor buffer on crtc. Set bo to NULL to disable - bool (*crtc_set_cursor)(struct wlr_drm_backend *backend, - struct wlr_drm_crtc *crtc, struct gbm_bo *bo); - // Move the cursor on crtc - bool (*crtc_move_cursor)(struct wlr_drm_backend *backend, - struct wlr_drm_crtc *crtc, int x, int y); -}; - bool wlr_drm_check_features(struct wlr_drm_backend *drm); bool wlr_drm_resources_init(struct wlr_drm_backend *drm); void wlr_drm_resources_free(struct wlr_drm_backend *drm); diff --git a/include/backend/drm/iface.h b/include/backend/drm/iface.h new file mode 100644 index 00000000..cf77f4d4 --- /dev/null +++ b/include/backend/drm/iface.h @@ -0,0 +1,35 @@ +#ifndef BACKEND_DRM_IFACE_H +#define BACKEND_DRM_IFACE_H + +#include <stdbool.h> +#include <stdint.h> + +#include <gbm.h> +#include <xf86drm.h> +#include <xf86drmMode.h> + +struct wlr_drm_backend; +struct wlr_drm_output; +struct wlr_drm_crtc; + +// Used to provide atomic or legacy DRM functions +struct wlr_drm_interface { + // Enable or disable DPMS for output + void (*conn_enable)(struct wlr_drm_backend *backend, + struct wlr_drm_output *output, bool enable); + // Pageflip on crtc. If mode is non-NULL perform a full modeset using it. + bool (*crtc_pageflip)(struct wlr_drm_backend *backend, + struct wlr_drm_output *output, struct wlr_drm_crtc *crtc, + uint32_t fb_id, drmModeModeInfo *mode); + // Enable the cursor buffer on crtc. Set bo to NULL to disable + bool (*crtc_set_cursor)(struct wlr_drm_backend *backend, + struct wlr_drm_crtc *crtc, struct gbm_bo *bo); + // Move the cursor on crtc + bool (*crtc_move_cursor)(struct wlr_drm_backend *backend, + struct wlr_drm_crtc *crtc, int x, int y); +}; + +extern const struct wlr_drm_interface iface_atomic; +extern const struct wlr_drm_interface iface_legacy; + +#endif |