vdr-plugin-softhddevice-drm-gles 1.5.9-20e15de
drmdevice.h
Go to the documentation of this file.
1
21#ifndef __DRMDEVICE_H
22#define __DRMDEVICE_H
23
24#include <cstdint>
25
26#ifdef USE_GLES
27#include <EGL/egl.h>
28#endif
29
30#include <xf86drm.h>
31#include <xf86drmMode.h>
32
33#include "drmplane.h"
34
35#ifdef USE_GLES
36class cDrmBuffer;
37#endif
38
39class cVideoRender;
40
41/*****************************************************************************
42 * cDrmDevice class
43 ****************************************************************************/
44
46{
47public:
48 cDrmDevice(cVideoRender *, const char *);
49 ~cDrmDevice(void);
50
51 int Init(void);
52 int Fd(void) { return m_fdDrm; };
53 void Close(void);
54
55 // setters and getters
56 uint32_t ConnectorId(void) { return m_connectorId; };
57
58 uint64_t DisplayWidth(void) { return m_drmModeInfo.hdisplay; };
59 uint64_t DisplayHeight(void) { return m_drmModeInfo.vdisplay; };
60
61 uint32_t CrtcId(void) { return m_crtcId; };
62 int UseZpos(void) { return m_useZpos; };
63 uint64_t ZposOverlay(void) { return m_zposOverlay; };
64 uint64_t ZposPrimary(void) { return m_zposPrimary; };
65
66 cDrmPlane *OsdPlane(void) { return &m_osdPlane; };
67 cDrmPlane *VideoPlane(void) { return &m_videoPlane; };
68 cDrmPlane *PipPlane(void) { return &m_pipPlane; };
69 bool HasPipPlane(void) { return m_pipPlane.GetId(); };
70
71#ifdef USE_GLES
72 EGLSurface EglSurface(void) { return m_eglSurface; };
73 EGLDisplay EglDisplay(void) { return m_eglDisplay; };
74 EGLContext EglContext(void) { return m_eglContext; };
75 int GlInitiated(void) { return m_glInitiated; };
76 struct gbm_surface *GbmSurface(void) { return m_pGbmSurface; };
77
78 cDrmBuffer *GetBufFromBo(struct gbm_bo *);
79#endif
80 int SetPropertyRequest(drmModeAtomicReqPtr, uint32_t, uint32_t, const char *, uint64_t);
81 void SaveCrtc(void);
82 void RestoreCrtc(void);
83 int HandleEvent(void);
84 int CreatePropertyBlob(uint32_t *);
85 void InitEvent(void);
86
87private:
89
90 int m_fdDrm = -1;
91 uint32_t m_connectorId;
92 drmModeModeInfo m_drmModeInfo;
93 uint32_t m_crtcId;
94 uint32_t m_crtcIndex;
95 drmModeCrtc *m_drmModeCrtcSaved;
96 drmEventContext m_drmEventCtx;
97
101
102 bool m_useZpos = false;
103 uint64_t m_zposOverlay = 0;
104 uint64_t m_zposPrimary = 0;
107 uint64_t m_zposPip = 0;
109
110 int32_t FindCrtcForConnector(const drmModeRes *, const drmModeConnector *);
111#ifdef USE_GLES
112 struct gbm_device *m_pGbmDevice;
113 struct gbm_surface *m_pGbmSurface;
114
115 EGLSurface m_eglSurface;
116 EGLDisplay m_eglDisplay;
117 EGLContext m_eglContext;
118 bool m_glInitiated;
119
120 int InitEGL(void);
121 EGLConfig GetEGLConfig(void);
122 int InitGbm(int, int, uint32_t, uint64_t);
123#endif
124};
125
126#endif
uint32_t m_userReqDisplayRefreshRate
user requested display refresh rate
Definition drmdevice.h:100
int m_userReqDisplayHeight
user requested display height
Definition drmdevice.h:99
drmModeModeInfo m_drmModeInfo
mode info
Definition drmdevice.h:92
int CreatePropertyBlob(uint32_t *)
Creates a property blob.
int Fd(void)
Definition drmdevice.h:52
cDrmPlane m_videoPlane
the video drm plane
Definition drmdevice.h:105
bool HasPipPlane(void)
Definition drmdevice.h:69
int SetPropertyRequest(drmModeAtomicReqPtr, uint32_t, uint32_t, const char *, uint64_t)
Add a property to a request.
uint64_t DisplayHeight(void)
Definition drmdevice.h:59
int32_t FindCrtcForConnector(const drmModeRes *, const drmModeConnector *)
Finds the CRTC_ID for the given connector.
int HandleEvent(void)
Polls for a drm event.
int m_userReqDisplayWidth
user requested display width
Definition drmdevice.h:98
cDrmPlane m_pipPlane
the pip drm plane
Definition drmdevice.h:108
uint64_t DisplayWidth(void)
Definition drmdevice.h:58
uint64_t ZposPrimary(void)
Definition drmdevice.h:64
drmModeCrtc * m_drmModeCrtcSaved
saved CRTC infos
Definition drmdevice.h:95
int m_fdDrm
drm file descriptor
Definition drmdevice.h:90
uint64_t ZposOverlay(void)
Definition drmdevice.h:63
uint64_t m_zposPip
zpos of pip plane
Definition drmdevice.h:107
cDrmPlane * PipPlane(void)
Definition drmdevice.h:68
void SaveCrtc(void)
Saves information of a CRTC.
uint32_t CrtcId(void)
Definition drmdevice.h:61
~cDrmDevice(void)
cDrmDevice destructor
Definition drmdevice.cpp:69
uint32_t m_connectorId
connector id
Definition drmdevice.h:91
void RestoreCrtc(void)
Restore information of a CRTC.
void Close(void)
Close drm file handle.
cDrmPlane * OsdPlane(void)
Definition drmdevice.h:66
uint32_t m_crtcId
current crtc ID
Definition drmdevice.h:93
cDrmPlane * VideoPlane(void)
Definition drmdevice.h:67
uint32_t ConnectorId(void)
Definition drmdevice.h:56
uint32_t m_crtcIndex
current crtc index
Definition drmdevice.h:94
cVideoRender * m_pRender
pointer to cVideoRender object
Definition drmdevice.h:88
int Init(void)
Initiate the drm device.
uint64_t m_zposPrimary
zpos of primary plane
Definition drmdevice.h:104
drmEventContext m_drmEventCtx
drm event context
Definition drmdevice.h:96
bool m_useZpos
is set, if drm hardware can use zpos
Definition drmdevice.h:102
cDrmPlane m_osdPlane
the osd drm plane
Definition drmdevice.h:106
void InitEvent(void)
Init the event context.
uint64_t m_zposOverlay
zpos of overlay plane
Definition drmdevice.h:103
int UseZpos(void)
Definition drmdevice.h:62
cDrmPlane - DRM plane class
Definition drmplane.h:29
uint32_t GetId(void)
Definition drmplane.h:45
cVideoRender - Video render class
DRM plane class header.