20 #ifndef __EGL_DEVICE_H__ 21 #define __EGL_DEVICE_H__ 1 37 # error "This file needs EGL, which is part of OpenGL-ES" 69 bool initDevice(
int argc,
char *argv[]);
76 const char *getErrorString(
int error);
79 return getDepth() * getWidth();
85 return getWidth(_eglSurface);
94 eglGetConfigAttrib(_eglDisplay, _eglConfig, EGL_DEPTH_SIZE, &value);
100 if (_eglConfig && _eglDisplay) {
101 eglGetConfigAttrib(_eglDisplay, _eglConfig, EGL_RED_SIZE, &value);
103 return static_cast<int>(value);
107 if (_eglConfig && _eglDisplay) {
108 eglGetConfigAttrib(_eglDisplay, _eglConfig, EGL_GREEN_SIZE, &value);
110 return static_cast<int>(value);
114 if (_eglConfig && _eglDisplay) {
115 eglGetConfigAttrib(_eglDisplay, _eglConfig, EGL_BLUE_SIZE, &value);
117 return static_cast<int>(value);
122 if (_eglSurface && _eglDisplay) {
123 eglQuerySurface(_eglDisplay, _eglSurface, EGL_RENDER_BUFFER, &value);
125 if (value == EGL_SINGLE_BUFFER) {
131 return isBufferDestroyed(_eglSurface);
135 return static_cast<int>(getSurfaceID());
142 eglGetConfigAttrib(_eglDisplay, _eglConfig, EGL_NATIVE_RENDERABLE, &value);
152 if (surface && _eglDisplay) {
153 eglQuerySurface(_eglDisplay, surface, EGL_WIDTH, &value);
155 return static_cast<size_t>(value);
159 if (surface && _eglDisplay) {
160 eglQuerySurface(_eglDisplay, surface, EGL_HEIGHT, &value);
162 return static_cast<size_t>(value);
166 eglQuerySurface(_eglDisplay, surface, EGL_SWAP_BEHAVIOR, &value);
167 if (value == EGL_BUFFER_DESTROYED) {
172 #ifdef BUILD_X11_DEVICE 173 EGLint getNativeVisual();
177 bool checkEGLConfig(EGLConfig
config);
181 int queryEGLConfig(EGLDisplay display);
185 void printEGLConfig(EGLConfig config);
187 void printEGLContext(EGLContext context);
189 void printEGLSurface(EGLSurface surface);
190 void printEGLAttribs(
const EGLint *attrib);
194 EGLSurface createPbuffer(
int width,
int height, EGLClientBuffer buf, EGLenum
type);
195 EGLSurface createPixmap(
int width,
int height, NativePixmapType buf);
197 EGLSurface &
operator[](
int index) {
if (!_pbuffers.empty()) {
return _pbuffers[index]; }; };
206 if (!isSingleBuffered()) {
207 return eglSwapBuffers(_eglDisplay, _eglSurface);
213 if (x < _pbuffers.size()) {
214 NativePixmapType
pix;
215 if (!eglCopyBuffers(_eglDisplay, _pbuffers[x], pix)) {
216 log_error(
"eglCopyBuffers() failed (error 0x%x)", eglGetError());
225 if ((_eglDisplay != EGL_NO_DISPLAY) && (_eglSurface != EGL_NO_SURFACE)) {
226 if (!eglMakeCurrent(_eglDisplay, _eglSurface, _eglSurface, _eglContext)) {
227 log_error(
"eglMakeCurrent() failed (error 0x%x)", eglGetError());
235 if (x < _pbuffers.size()) {
236 if ((_eglDisplay != EGL_NO_DISPLAY) && (_eglContext != EGL_NO_CONTEXT)) {
237 if (!eglMakeCurrent(_eglDisplay, _pbuffers[x], _pbuffers[x], _eglContext)) {
238 log_error(
"eglMakeCurrent() failed (error 0x%x)", eglGetError());
249 if ((_eglDisplay != EGL_NO_DISPLAY) && (_eglSurface != EGL_NO_SURFACE)) {
250 eglQuerySurface(_eglDisplay, _eglSurface, EGL_VERTICAL_RESOLUTION, &value);
252 return static_cast<size_t>(value);
256 if ((_eglDisplay != EGL_NO_DISPLAY) && (_eglSurface != EGL_NO_SURFACE)) {
257 eglQuerySurface(_eglDisplay, _eglSurface, EGL_HORIZONTAL_RESOLUTION, &value);
259 return static_cast<size_t>(value);
263 if ((_eglDisplay != EGL_NO_DISPLAY) && (_eglSurface != EGL_NO_SURFACE)) {
264 eglQuerySurface(_eglDisplay, _eglSurface, EGL_RENDER_BUFFER, &value);
265 if (value == EGL_BACK_BUFFER) {
275 if ((_eglDisplay != EGL_NO_DISPLAY) && (_eglSurface != EGL_NO_SURFACE)) {
276 eglQuerySurface(_eglDisplay, _eglSurface, EGL_MULTISAMPLE_RESOLVE, &value);
277 if (value == EGL_MULTISAMPLE_RESOLVE_BOX) {
287 if ((_eglDisplay != EGL_NO_DISPLAY) && (_eglSurface != EGL_NO_SURFACE)) {
288 eglQuerySurface(_eglDisplay, _eglSurface, EGL_CONFIG_ID, &value);
296 if ((_eglDisplay != EGL_NO_DISPLAY) && (_eglContext != EGL_NO_CONTEXT)) {
297 eglQueryContext(_eglDisplay, _eglContext, EGL_CONFIG_ID, &value);
303 if ((_eglDisplay != EGL_NO_DISPLAY) && (_eglContext != EGL_NO_CONTEXT)) {
304 eglQueryContext(_eglDisplay, _eglContext, EGL_RENDER_BUFFER, &value);
305 if (value == EGL_SINGLE_BUFFER) {
314 if ((_eglDisplay != EGL_NO_DISPLAY) && (_eglContext != EGL_NO_CONTEXT)) {
315 eglQueryContext(_eglDisplay, _eglContext, EGL_RENDER_BUFFER, &value);
316 if (value == EGL_BACK_BUFFER) {
327 if ((_eglDisplay != EGL_NO_DISPLAY) && (_eglConfig != 0)) {
328 eglGetConfigAttrib(_eglDisplay, _eglConfig, EGL_SAMPLES, &value);
334 if ((_eglDisplay != EGL_NO_DISPLAY) && (_eglConfig != 0)) {
335 eglGetConfigAttrib(_eglDisplay, _eglConfig, EGL_SAMPLE_BUFFERS, &value);
341 if ((_eglDisplay != EGL_NO_DISPLAY) && (_eglConfig != 0)) {
342 eglGetConfigAttrib(_eglDisplay, _eglConfig, EGL_MAX_SWAP_INTERVAL, &value);
348 if ((_eglDisplay != EGL_NO_DISPLAY) && (_eglConfig != 0)) {
349 eglGetConfigAttrib(_eglDisplay, _eglConfig, EGL_MIN_SWAP_INTERVAL, &value);
354 void setAttrib(
int bpp);
355 static EGLint getRenderableTypes();
369 #define DUMP_CURRENT_SURFACE printEGLSurface(eglGetCurrentSurface(EGL_DRAW)) 370 #define DUMP_CURRENT_CONTEXT printEGLContext(eglGetCurrentContext()) 375 #endif // end of __EGL_DEVICE_H__ bool isContextSingleBuffered()
Definition: eglDevice.h:301
dtype_t getType()
Definition: eglDevice.h:66
EGLint getSurfaceID()
Definition: eglDevice.h:285
void printEGLContext()
Definition: eglDevice.h:186
EGLint getDepth()
Get the depth of the device.
Definition: eglDevice.h:92
bool isContextBackBuffered()
Definition: eglDevice.h:312
bool copyPbuffers(size_t x)
Definition: eglDevice.h:211
EGLContext _eglContext
Definition: eglDevice.h:358
bool makePbufferCurrent(size_t x)
Definition: eglDevice.h:234
size_t totalPbuffers()
Definition: eglDevice.h:196
float _y
Definition: eglDevice.h:53
EGLNativePixmapType _nativePixmap
Definition: eglDevice.h:362
size_t getHeight(EGLSurface surface)
Definition: eglDevice.h:157
EGLint getSampleBuffers()
Definition: eglDevice.h:332
const EGLint * _attrib
Definition: eglDevice.h:364
long native_window_t
Definition: GnashDevice.h:43
bool swapBuffers()
Definition: eglDevice.h:204
bool makePbufferCurrent()
Definition: eglDevice.h:224
EGLSurface & operator[](int index)
Definition: eglDevice.h:197
Definition: GnashDevice.h:39
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:40
dtype_t
The list of supported device types.
Definition: GnashDevice.h:48
Definition: eglDevice.h:46
int getGreenSize()
Get the size of the Green pixel.
Definition: eglDevice.h:105
EGLConfig _eglConfig
Definition: eglDevice.h:357
type
Definition: GnashKey.h:329
bool isSingleBuffered()
Is this device single buffered.
Definition: eglDevice.h:120
void printEGLSurface()
Definition: eglDevice.h:188
Definition: klash_part.cpp:329
2D Point class
Definition: Point2d.h:38
size_t getWidth(EGLSurface surface)
Definition: eglDevice.h:150
eglVertex(const point &p)
Definition: eglDevice.h:50
size_t getStride()
Query the system for all supported configs.
Definition: eglDevice.h:78
bool isBufferDestroyed(EGLSurface surface)
Definition: eglDevice.h:164
int getRedSize()
Get the size of the Red pixel.
Definition: eglDevice.h:98
bool isNativeRender()
Is this renderering natively.
Definition: eglDevice.h:140
EGLint getContextID()
Definition: eglDevice.h:294
quality_e _quality
Definition: eglDevice.h:363
Definition: klash_part.cpp:329
bool isMultiSample()
Definition: eglDevice.h:273
struct lirc_config * config
Definition: lirc_ext.cpp:43
int getBlueSize()
Get the size of the Blue pixel.
Definition: eglDevice.h:112
size_t getHeight()
Get the Height of the device.
Definition: eglDevice.h:88
rtype_t
The list of supported renders that use devices.
Definition: GnashDevice.h:46
void log_error(StringType msg, Args... args)
Definition: log.h:283
bool isBackBuffered()
Definition: eglDevice.h:261
void printEGLConfig()
Definition: eglDevice.h:184
int queryEGLConfig()
Query the system for all supported configs.
Definition: eglDevice.h:180
EGLNativeWindowType _nativeWindow
Definition: eglDevice.h:361
std::vector< EGLSurface > _pbuffers
Definition: eglDevice.h:366
EGLint getMinSwapInterval()
Definition: eglDevice.h:346
std::int32_t x
Definition: BitmapData_as.cpp:434
BitmapData_as::iterator pix
Definition: BitmapData_as.cpp:568
EGLint getSamples()
Definition: eglDevice.h:325
Definition: eglDevice.h:56
eglVertex(float x, float y)
Definition: eglDevice.h:47
unsigned int _bpp
Definition: eglDevice.h:365
std::int32_t y
Definition: BitmapData_as.cpp:435
EGLDisplay _eglDisplay
Definition: eglDevice.h:360
Definition: GnashKey.h:162
#define GNASH_REPORT_FUNCTION
Definition: log.h:452
quality_e
Definition: eglDevice.h:59
bool isBufferDestroyed()
Are buffers destroyed ?
Definition: eglDevice.h:130
int getID()
Get the window ID handle.
Definition: eglDevice.h:134
size_t getVerticalRes()
Definition: eglDevice.h:247
as_value getHeight(DisplayObject &o)
Definition: DisplayObject.cpp:356
EGLSurface _eglSurface
Definition: eglDevice.h:359
EGLint getMaxSwapInterval()
Definition: eglDevice.h:339
size_t getHorzRes()
Definition: eglDevice.h:254
float _x
Definition: eglDevice.h:52
size_t getWidth()
Get the width of the device.
Definition: eglDevice.h:84