Guiliani  Version 2.5 revision 7293 (documentation build 13)
GfxEnvEGL.h
1/*
2* Copyright (C) TES Electronic Solutions GmbH,
3* All Rights Reserved.
4* Contact: info@guiliani.de
5*
6* This file is part of the Guiliani HMI framework
7* for the development of graphical user interfaces on embedded systems.
8*/
9
10#ifndef __GFXENV_EGL_H__
11#define __GFXENV_EGL_H__
12
13#include "GfxEnv.h"
14
15#include <EGL/egl.h>
16#include <EGL/eglext.h>
17#include "GUITrace.h"
18
19#ifdef USE_DRM_LAYER
20#include <gbm.h>
21
22#include <xf86drm.h>
23#include <xf86drmMode.h>
24#endif
25
31#ifdef GUILIANI_EGL13_COMPATIBILITY_WORKAROUND
32#undef EGL_DEFAULT_DISPLAY
33#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0)
34typedef EGLNativeWindowType NativeWindowType;
35typedef EGLNativeDisplayType NativeDisplayType;
36#endif
37
38#ifdef USE_DRM_LAYER
40struct drm_fb
41{
42 struct gbm_bo *bo;
43 uint32_t fb_id;
44};
45
47struct _gbm
48{
49 struct gbm_device *dev;
50 struct gbm_surface *surface;
51};
52
54struct _drm
55{
56 int fd;
57 drmModeModeInfo *mode;
58 uint32_t crtc_id;
59 uint32_t connector_id;
60};
61#endif
62
64
66class CGfxEnvEGL : public CGfxEnv
67{
68public:
77 static eC_Bool CreateInstance(
78 const eC_UInt& uiVersion,
79 const eC_UInt& uiWidth,
80 const eC_UInt& uiHeight,
81 const NativeWindowType& hWindowType = 0,
82 const NativeDisplayType& hDisplayType = EGL_DEFAULT_DISPLAY);
83
92 const eC_UInt& uiVersion,
93 const eC_UInt& uiWidth,
94 const eC_UInt& uiHeight,
95 const NativeWindowType& hWindowType,
96 const NativeDisplayType& hDisplayType);
97
99 virtual ~CGfxEnvEGL();
100
105 static eC_Bool CheckEGLError(const eC_String &kCallingMethod);
106
107 virtual eC_Bool SwapBuffers();
108
112 inline const EGLContext GetScreenContext() const {return m_pkEGLScreenContext;}
113
117 inline const EGLContext GetOffScreenContext() const {return m_pkEGLOffScreenContext;}
118
122 inline const EGLDisplay GetDisplay() const {return m_pkEGLDisplay;}
123
127 inline const EGLConfig GetScreenConfig() const {return m_pkScreenConfig;}
128
132 inline const EGLConfig GetOffScreenConfig() const {return m_pkOffScreenConfig;}
133
137 inline const EGLSurface GetWindowSurface() const {return m_pkEGLWindowSurface;}
138
139#ifdef USE_DRM_LAYER
140private:
141 struct _kms {
142 drmModeConnector *connector;
143 drmModeEncoder *encoder;
144 drmModeModeInfo mode;
145 uint32_t fb_id;
146 };
147
148 struct _kms kms;
149 struct gbm_bo *bo;
150 struct drm_fb *fb;
151
152 fd_set fds;
153
154 bool SetupKMS(struct _kms *kms);
155#endif
156
157private:
160 CGfxEnvEGL();
161
165 eC_Bool Init();
166
170 eC_Bool DeInit();
171
173 eC_Bool FindScreenConfig();
174
176 eC_Bool FindOffScreenConfig();
177
178private:
181 static EGLint ms_uiEGLScreenBufferSize;
182
185 static EGLint ms_uiEGLOffScreenBufferSize;
186
203 static EGLint* m_aiScreenConfig;
204
208 static EGLint* m_aiOffScreenConfig;
209
211 EGLDisplay m_pkEGLDisplay;
212
214 EGLSurface m_pkEGLWindowSurface;
215
217 EGLContext m_pkEGLScreenContext;
218
220 EGLContext m_pkEGLOffScreenContext;
221
223 EGLConfig m_pkScreenConfig;
224
226 EGLConfig m_pkOffScreenConfig;
227
229 EGLint m_iEGLMajorVersion;
230
232 EGLint m_iEGLMinorVersion;
233
235 eC_UInt m_uiVersion;
236
238 EGLint m_iRenderableType;
239
241 NativeDisplayType m_hDisplayType;
242
244 NativeWindowType m_hWindowType;
245};
246
247#endif
Wrapper class for the EGL interface.
Definition: GfxEnvEGL.h:67
const EGLConfig GetScreenConfig() const
Definition: GfxEnvEGL.h:127
const EGLSurface GetWindowSurface() const
Definition: GfxEnvEGL.h:137
virtual eC_Bool SwapBuffers()
const EGLContext GetOffScreenContext() const
Definition: GfxEnvEGL.h:117
const EGLDisplay GetDisplay() const
Definition: GfxEnvEGL.h:122
const EGLContext GetScreenContext() const
Definition: GfxEnvEGL.h:112
virtual ~CGfxEnvEGL()
CGfxEnvEGL(const eC_UInt &uiVersion, const eC_UInt &uiWidth, const eC_UInt &uiHeight, const NativeWindowType &hWindowType, const NativeDisplayType &hDisplayType)
static eC_Bool CheckEGLError(const eC_String &kCallingMethod)
const EGLConfig GetOffScreenConfig() const
Definition: GfxEnvEGL.h:132
static eC_Bool CreateInstance(const eC_UInt &uiVersion, const eC_UInt &uiWidth, const eC_UInt &uiHeight, const NativeWindowType &hWindowType=0, const NativeDisplayType &hDisplayType=EGL_DEFAULT_DISPLAY)
Definition: GfxEnv.h:53