2019-11-25 03:12:06 +00:00
|
|
|
// DRM output stuff
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <xf86drm.h>
|
|
|
|
#include <xf86drmMode.h>
|
|
|
|
|
2019-12-03 07:19:13 +00:00
|
|
|
#include <wlr/render/dmabuf.h>
|
|
|
|
|
2019-12-03 07:04:09 +00:00
|
|
|
struct plane {
|
|
|
|
drmModePlane *plane;
|
|
|
|
drmModeObjectProperties *props;
|
|
|
|
drmModePropertyRes **props_info;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct crtc {
|
|
|
|
drmModeCrtc *crtc;
|
|
|
|
drmModeObjectProperties *props;
|
|
|
|
drmModePropertyRes **props_info;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct connector {
|
|
|
|
drmModeConnector *connector;
|
|
|
|
drmModeObjectProperties *props;
|
|
|
|
drmModePropertyRes **props_info;
|
|
|
|
};
|
|
|
|
|
2019-11-25 03:12:06 +00:00
|
|
|
struct drm_t {
|
|
|
|
int fd;
|
|
|
|
|
|
|
|
/* only used for atomic: */
|
|
|
|
struct plane *plane;
|
|
|
|
struct crtc *crtc;
|
|
|
|
struct connector *connector;
|
|
|
|
int crtc_index;
|
|
|
|
int kms_in_fence_fd;
|
|
|
|
int kms_out_fence_fd;
|
|
|
|
|
|
|
|
drmModeModeInfo *mode;
|
|
|
|
uint32_t crtc_id;
|
|
|
|
uint32_t connector_id;
|
2019-12-03 07:04:09 +00:00
|
|
|
|
|
|
|
uint32_t plane_id;
|
2019-11-25 03:12:06 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#ifndef C_SIDE
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
extern struct drm_t g_DRM;
|
|
|
|
|
|
|
|
int init_drm(struct drm_t *drm, const char *device, const char *mode_str, unsigned int vrefresh);
|
2019-12-03 07:04:09 +00:00
|
|
|
int drm_atomic_commit(struct drm_t *drm, uint32_t fb_id, uint32_t flags);
|
2019-12-03 07:19:13 +00:00
|
|
|
uint32_t drm_fbid_from_dmabuf( struct drm_t *drm, struct wlr_dmabuf_attributes *dma_buf );
|
2019-11-25 03:12:06 +00:00
|
|
|
|
|
|
|
#ifndef C_SIDE
|
|
|
|
}
|
|
|
|
#endif
|