From 009c3747a8771bcd441dc9cf95823fe40895f1e0 Mon Sep 17 00:00:00 2001 From: Scott Anderson Date: Sun, 1 Oct 2017 19:22:47 +1300 Subject: Multi-GPU DRM --- include/backend/drm/drm.h | 2 ++ include/backend/drm/renderer.h | 11 +++++++++++ 2 files changed, 13 insertions(+) (limited to 'include/backend/drm') diff --git a/include/backend/drm/drm.h b/include/backend/drm/drm.h index a3a724bc..6106a85a 100644 --- a/include/backend/drm/drm.h +++ b/include/backend/drm/drm.h @@ -26,6 +26,7 @@ struct wlr_drm_plane { uint32_t possible_crtcs; struct wlr_drm_surface surf; + struct wlr_drm_surface mgpu_surf; // Only used by cursor float matrix[16]; @@ -58,6 +59,7 @@ struct wlr_drm_crtc { struct wlr_drm_backend { struct wlr_backend backend; + struct wlr_drm_backend *parent; const struct wlr_drm_interface *iface; int fd; diff --git a/include/backend/drm/renderer.h b/include/backend/drm/renderer.h index 9982c25f..8fcf566d 100644 --- a/include/backend/drm/renderer.h +++ b/include/backend/drm/renderer.h @@ -7,10 +7,16 @@ #include #include +#include + +struct wlr_drm_plane; + struct wlr_drm_renderer { int fd; struct gbm_device *gbm; struct wlr_egl egl; + + struct wlr_renderer *wlr_rend; }; struct wlr_drm_surface { @@ -33,9 +39,14 @@ bool wlr_drm_surface_init(struct wlr_drm_surface *surf, struct wlr_drm_renderer *renderer, uint32_t width, uint32_t height, uint32_t format, uint32_t flags); +bool wlr_drm_plane_surfaces_init(struct wlr_drm_plane *plane, struct wlr_drm_backend *drm, + int32_t width, uint32_t height, uint32_t format); + void wlr_drm_surface_finish(struct wlr_drm_surface *surf); void wlr_drm_surface_make_current(struct wlr_drm_surface *surf); struct gbm_bo *wlr_drm_surface_swap_buffers(struct wlr_drm_surface *surf); struct gbm_bo *wlr_drm_surface_get_front(struct wlr_drm_surface *surf); +void wlr_drm_surface_post(struct wlr_drm_surface *surf); +struct gbm_bo *wlr_drm_surface_mgpu_copy(struct wlr_drm_surface *dest, struct gbm_bo *src); #endif -- cgit v1.2.3