X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibsystemd-terminal%2Fgrdev-internal.h;h=ee182695ce1bc9f915cc644949cc5073e5e43c6f;hp=7e69c49b635365e030dea1da5569f6cc59e005a3;hb=f2a15d86ccd0729e1442f40679cd393417e1e177;hpb=650c5444273993f969b9cd7df9add6ab2df0414e;ds=sidebyside diff --git a/src/libsystemd-terminal/grdev-internal.h b/src/libsystemd-terminal/grdev-internal.h index 7e69c49b6..ee182695c 100644 --- a/src/libsystemd-terminal/grdev-internal.h +++ b/src/libsystemd-terminal/grdev-internal.h @@ -22,6 +22,7 @@ #pragma once #include +#include #include #include #include @@ -39,6 +40,15 @@ typedef struct grdev_pipe grdev_pipe; typedef struct grdev_card_vtable grdev_card_vtable; typedef struct grdev_card grdev_card; +/* + * DRM cards + */ + +bool grdev_is_drm_card(grdev_card *card); +grdev_card *grdev_find_drm_card(grdev_session *session, dev_t devnum); +int grdev_drm_card_new(grdev_card **out, grdev_session *session, struct udev_device *ud); +void grdev_drm_card_hotplug(grdev_card *card, struct udev_device *ud); + /* * Displays */ @@ -84,6 +94,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(grdev_tile*, grdev_tile_free); struct grdev_display { grdev_session *session; char *name; + void *userdata; size_t n_leafs; grdev_tile *tile; @@ -132,9 +143,11 @@ struct grdev_pipe { grdev_tile *tile; grdev_display_cache *cache; + sd_event_source *vsync_src; uint32_t width; uint32_t height; + uint32_t vrefresh; size_t max_fbs; grdev_fb *front; @@ -161,6 +174,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(grdev_pipe*, grdev_pipe_free); void grdev_pipe_ready(grdev_pipe *pipe, bool running); void grdev_pipe_frame(grdev_pipe *pipe); +void grdev_pipe_schedule(grdev_pipe *pipe, uint64_t frames); /* * Cards