13 #ifndef EGLPLUS_CONTEXT_1305291005_HPP
14 #define EGLPLUS_CONTEXT_1305291005_HPP
17 #include <eglplus/error/basic.hpp>
30 struct ContextValueTypeToContextAttrib
32 #ifdef EGL_CONTEXT_FLAGS
34 ValueType(std::integral_constant<int, 0>);
41 #ifdef EGL_CONTEXT_OPENGL_PROFILE_MASK
43 ValueType(std::integral_constant<int, 1>);
50 #ifdef EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY
52 ValueType(std::integral_constant<int, 2>);
59 static std::integral_constant<int, 2> MaxValueType(
void);
64 typedef AttributeList<
66 ContextValueTypeToContextAttrib,
71 typedef FinishedAttributeList<
77 ::EGLContext GetEGLHandle(
const Context&);
86 friend ::EGLContext GetEGLHandle(
const Context&);
97 static ::EGLContext _init(
100 ::EGLContext share_context,
101 const EGLint* attribs
104 ::EGLContext result = EGLPLUS_EGLFUNC(CreateContext)(
105 GetEGLHandle(display),
106 GetEGLHandle(config),
110 EGLPLUS_VERIFY_SIMPLE(CreateContext);
116 : _display(tmp._display)
117 , _handle(tmp._handle)
119 tmp._handle = EGL_NO_CONTEXT;
131 , _handle(_init(display, config, EGL_NO_CONTEXT, nullptr))
144 , _handle(_init(display, config, shared_context._handle, nullptr))
157 , _handle(_init(display, config, EGL_NO_CONTEXT, attribs.Get()))
171 , _handle(_init(display, config, shared_context._handle, attribs.Get()))
181 if(_handle != EGL_NO_CONTEXT)
183 EGLPLUS_EGLFUNC(DestroyContext)(
184 GetEGLHandle(_display),
187 EGLPLUS_VERIFY_SIMPLE(DestroyContext);
202 GetEGLHandle(_display),
203 GetEGLHandle(draw_surface),
204 GetEGLHandle(read_surface),
208 return result == EGL_TRUE;
219 GetEGLHandle(_display),
220 GetEGLHandle(surface),
221 GetEGLHandle(surface),
225 return result == EGL_TRUE;
239 GetEGLHandle(_display),
245 return result == EGL_TRUE;
256 GetEGLHandle(_display),
262 return result == EGL_TRUE;
272 EGLBoolean result = EGLPLUS_EGLFUNC(QueryContext)(
273 GetEGLHandle(_display),
275 EGLint(EGLenum(attrib)),
278 EGLPLUS_CHECK_SIMPLE(QueryContext);
279 return result == EGL_TRUE;
290 EGLPLUS_EGLFUNC(QueryContext)(
291 GetEGLHandle(_display),
293 EGLint(EGL_CONFIG_ID),
296 EGLPLUS_CHECK_SIMPLE(QueryContext);
307 EGLBoolean result = EGLPLUS_EGLFUNC(
WaitClient)();
309 return result == EGL_TRUE;
319 EGLBoolean result = EGLPLUS_EGLFUNC(
WaitGL)();
320 EGLPLUS_VERIFY_SIMPLE(
WaitGL);
321 return result == EGL_TRUE;
331 EGLBoolean result = EGLPLUS_EGLFUNC(
WaitNative)(engine);
333 return result == EGL_TRUE;
337 inline ::EGLContext GetEGLHandle(
const Context& context)
339 return context._handle;
344 #endif // include guard
~Context(void)
Destroys the wrapped context.
Definition: context.hpp:179
bool MakeCurrent(const Surface &surface)
Makes the context current.
Definition: context.hpp:216
bool Query(ContextAttrib attrib, EGLint &value) const
Queries a context attribute.
Definition: context.hpp:270
FinishedAttributeList< ContextAttrib, AttributeListTraits > FinishedContextAttribs
Finished list of context attribute values.
Definition: context.hpp:74
bool WaitGL(void) const
Wait for GL API commands to complete.
Definition: context.hpp:317
bool WaitNative(EGLint engine) const
Wait for native API commands to complete.
Definition: context.hpp:329
EGL OpenGL profile mask bits enumeration.
EGLint ConfigId(void) const
Returns the context framebuffer config id.
Definition: context.hpp:287
Context(Context &&tmp)
Contexts are move constructible.
Definition: context.hpp:115
Helper macro expanding into EGL function name.
Template for EGL surface and configuration attribute list.
EGL context attribute type enumeration.
CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY.
OpenGLProfileBit
EGL OpenGL profile mask bits enumeration.
Definition: opengl_profile_bit.hpp:25
Wrapper around EGLContext.
Definition: context.hpp:80
Declares and implements wrapper for EGLContext.
ContextFlag
EGL context flags enumeration.
Definition: context_flag.hpp:25
EGL OpenGL reset notification strategy enumeration.
Context(const Display &display, const Config &config, const Context &shared_context, const FinishedContextAttribs &attribs)
Construct a sharing context without any attributes.
Definition: context.hpp:165
Wrapper around EGLDisplay.
Definition: display.hpp:27
Context(const Display &display, const Config &config, const Context &shared_context)
Construct a sharing context without any attributes.
Definition: context.hpp:139
bool MakeCurrent(void)
Makes the context current without surfaces.
Definition: context.hpp:236
Declares and implements wrapper for EGLDisplay.
CONTEXT_OPENGL_PROFILE_MASK.
Context(const Display &display, const Config &config)
Construct a non-sharing context without any attributes.
Definition: context.hpp:127
bool MakeCurrent(const Surface &draw_surface, const Surface &read_surface)
Makes the context current.
Definition: context.hpp:196
bool Release(void)
Releases the current context without assigning a new one.
Definition: context.hpp:253
Context(const Display &display, const Config &config, const FinishedContextAttribs &attribs)
Construct a non-sharing context with attributes.
Definition: context.hpp:152
EGL context flags type enumeration.
AttributeList< ContextAttrib, ContextValueTypeToContextAttrib, AttributeListTraits > ContextAttribs
Attribute list for context attributes.
Definition: context.hpp:68
A wrapper for EGL configuration.
Definition: configs.hpp:34
Wrapper for EGLSurfaces.
Definition: surface.hpp:116
bool WaitClient(void) const
Wait for client API commands to complete.
Definition: context.hpp:305
ContextAttrib
EGL context attribute enumeration.
Definition: context_attrib.hpp:24