backend/drm: add explicit sync support to multi-GPU blits

This commit is contained in:
Simon Ser 2024-08-05 19:12:53 +02:00
parent 3187479c07
commit d7223eae02
5 changed files with 60 additions and 10 deletions

View file

@ -141,6 +141,9 @@ struct wlr_drm_connector_state {
struct wlr_drm_fb *primary_fb;
struct wlr_drm_fb *cursor_fb;
struct wlr_drm_syncobj_timeline *wait_timeline;
uint64_t wait_point;
// used by atomic
uint32_t mode_id;
uint32_t gamma_lut;

View file

@ -20,6 +20,9 @@ struct wlr_drm_renderer {
struct wlr_drm_surface {
struct wlr_drm_renderer *renderer;
struct wlr_swapchain *swapchain;
struct wlr_drm_syncobj_timeline *timeline;
uint64_t point;
};
bool init_drm_renderer(struct wlr_drm_backend *drm,
@ -32,7 +35,8 @@ bool init_drm_surface(struct wlr_drm_surface *surf,
void finish_drm_surface(struct wlr_drm_surface *surf);
struct wlr_buffer *drm_surface_blit(struct wlr_drm_surface *surf,
struct wlr_buffer *buffer);
struct wlr_buffer *buffer,
struct wlr_drm_syncobj_timeline *wait_timeline, uint64_t wait_point);
bool drm_plane_pick_render_format(struct wlr_drm_plane *plane,
struct wlr_drm_format *fmt, struct wlr_drm_renderer *renderer);