Go to the documentation of this file. 1 #ifndef EGLPLUS_EGL_API_API_HPP
9 #define EGLPLUS_EGL_API_API_HPP
30 #define EGLPAFP(FUNC) decltype(c_api::FUNC), &c_api::FUNC
36 template <
typename ApiTraits>
40 using api_traits = ApiTraits;
57 template <
typename... Args>
88 template <
typename W, W c_api::*F,
typename Signature =
typename W::signature>
91 template <
typename W, W
c_api::*F,
typename RVC,
typename... Params>
92 class func<W, F, RVC(Params...)>
93 :
public wrapped_c_api_function<c_api, api_traits, nothing_t, W, F> {
94 using base = wrapped_c_api_function<c_api, api_traits, nothing_t, W, F>;
97 template <
typename Res>
98 constexpr
auto _check(Res&& res)
const noexcept {
99 res.error_code(this->api().
GetError());
100 return std::forward<Res>(res);
104 template <
typename... Args>
105 constexpr
auto _chkcall(Args&&... args)
const noexcept {
106 return this->_check(this->_call(std::forward<Args>(args)...));
111 template <
typename... Args>
112 constexpr
auto _cnvchkcall(Args&&... args)
const noexcept {
113 return this->_chkcall(_conv(std::forward<Args>(args))...)
120 constexpr
auto operator()(Params... params)
const noexcept {
121 return this->_chkcall(_conv(params)...)
128 typename PreTypeList,
129 typename QueryClassList,
130 typename PostTypeList,
131 typename QueryResult,
137 typename... PreParams,
138 typename... QueryClasses,
139 typename... PostParams,
140 typename QueryResult,
150 using func<W, F>::func;
154 typename = std::enable_if_t<
155 (
true || ... || is_enum_class_value_v<QueryClasses, Query>)>,
156 typename = std::enable_if_t<!std::is_array_v<typename Query::tag_type>>>
157 constexpr
auto operator()(
158 PreParams... pre_params,
160 PostParams... post_params)
const noexcept {
161 using RV =
typename Query::tag_type;
162 QueryResult result{};
165 pre_params..., int_type(query), post_params..., &result)
166 .replaced_with(result)
172 typename = std::enable_if_t<
173 (
true || ... || is_enum_class_value_v<QueryClasses, Query>)>>
175 PreParams... pre_params,
177 PostParams... post_params,
178 span<QueryResult> dest)
const noexcept {
179 EAGINE_ASSERT(dest.size());
180 return this->_cnvchkcall(
181 pre_params..., int_type(query), post_params..., dest.data());
189 auto count()
const noexcept {
190 int_type ret_count{0};
191 return this->_cnvchkcall(0,
nullptr, &ret_count)
192 .transformed([&ret_count](
auto ok) {
193 return limit_cast<span_size_t>(
194 egl_types::bool_true(
ok) ? ret_count : 0);
198 auto operator()(span<device_type> dest)
const noexcept {
199 int_type ret_count{0};
202 limit_cast<int_type>(dest.size()), dest.data(), &ret_count)
203 .transformed([dest, &ret_count](
auto ok) {
206 limit_cast<span_size_t>(
207 egl_types::bool_true(
ok) ? ret_count : 0));
218 return this->_cnvchkcall(dev, query)
224 return (*
this)(device_type(dev), query);
227 constexpr
auto operator()()
const noexcept {
228 return this->_fake_empty_c_str().cast_to(
231 } query_device_string;
234 auto get_device_extensions(device_type dev)
const noexcept {
235 #ifdef EGL_EXTENSIONS
238 [](
auto src) {
return split_into_string_list(src,
' '); });
240 return this->_fake_empty_c_str();
244 auto get_device_extensions(
device_handle dev)
const noexcept {
245 return get_device_extensions(device_type(dev));
252 constexpr
auto operator()(
device_handle dev)
const noexcept {
253 #ifdef EGL_PLATFORM_DEVICE_EXT
254 return this->_cnvchkcall(EGL_PLATFORM_DEVICE_EXT, dev,
nullptr)
257 EAGINE_MAYBE_UNUSED(dev);
263 operator()(
platform pltf, void_ptr_type disp)
const noexcept {
264 return this->_cnvchkcall(pltf, disp,
nullptr)
268 constexpr
auto operator()(
271 span<const attrib_type> attribs)
const noexcept {
272 return this->_cnvchkcall(pltf, disp, attribs.data())
276 template <std::
size_t N>
277 constexpr
auto operator()(
281 return (*
this)(pltf, disp, attribs.
get());
283 } get_platform_display;
289 constexpr
auto operator()(native_display_type disp)
const noexcept {
290 return this->_cnvchkcall(disp).cast_to(
294 constexpr
auto operator()()
const noexcept {
295 #ifdef EGL_DEFAULT_DISPLAY
296 return this->_cnvchkcall(EGL_DEFAULT_DISPLAY)
309 return this->_cnvchkcall(disp).cast_to(
312 } get_display_driver_name;
318 using base::operator();
321 operator()(
display_handle disp,
int* maj,
int* min)
const noexcept {
322 return this->_cnvchkcall(disp, maj, min)
324 [&maj, &min](
auto) {
return std::make_tuple(maj, min); });
330 return (*
this)(disp, &maj, &min);
339 return this->_cnvchkcall(disp);
352 int_type ret_count{0};
353 return this->_cnvchkcall(disp,
nullptr, 0, &ret_count)
354 .transformed([&ret_count](
auto ok) {
355 return limit_cast<span_size_t>(
356 egl_types::bool_true(
ok) ? ret_count : 0);
361 operator()(
display_handle disp, span<config_type> dest)
const noexcept {
362 int_type ret_count{0};
365 disp, dest.data(), limit_cast<int_type>(dest.size()), &ret_count)
366 .transformed([dest, &ret_count](
auto ok) {
369 limit_cast<span_size_t>(
370 egl_types::bool_true(
ok) ? ret_count : 0));
381 int_type ret_count{0};
383 ->_cnvchkcall(disp, attribs.data(),
nullptr, 0, &ret_count)
384 .transformed([&ret_count](
auto ok) {
385 return limit_cast<span_size_t>(
386 egl_types::bool_true(
ok) ? ret_count : 0);
390 template <std::
size_t N>
393 return count(disp, attribs.
get());
403 span<const int_type> attribs,
404 span<config_type> dest)
const noexcept {
405 int_type ret_count{0};
411 limit_cast<int_type>(dest.size()),
413 .transformed([dest, &ret_count](
auto ok) {
416 limit_cast<span_size_t>(
417 egl_types::bool_true(
ok) ? ret_count : 0));
421 template <std::
size_t N>
425 span<config_type> dest)
const noexcept {
426 return (*
this)(disp, attribs.
get(), dest);
429 template <std::
size_t N>
434 return (*
this)(disp, attribs.
get(), cover_one(&result))
435 .replaced_with(result);
441 span<config_type> dest)
const noexcept {
465 constexpr
auto operator()(
468 native_window_type win)
const noexcept {
469 return this->_cnvchkcall(disp, conf, win,
nullptr)
473 constexpr
auto operator()(
476 native_window_type win,
477 span<const int_type> attribs)
const noexcept {
478 return this->_cnvchkcall(disp, conf, win, attribs.data())
482 template <std::
size_t N>
483 constexpr
auto operator()(
486 native_window_type win,
488 return (*
this)(disp, conf, win, attribs.
get());
490 } create_window_surface;
497 operator()(
display_handle disp, config_type conf)
const noexcept {
498 return this->_cnvchkcall(disp, conf,
nullptr)
502 constexpr
auto operator()(
505 span<const int_type> attribs)
const noexcept {
506 return this->_cnvchkcall(disp, conf, attribs.data())
510 template <std::
size_t N>
511 constexpr
auto operator()(
515 return (*
this)(disp, conf, attribs.
get());
517 } create_pbuffer_surface;
523 constexpr
auto operator()(
526 native_pixmap_type pmp)
const noexcept {
527 return this->_cnvchkcall(disp, conf, pmp,
nullptr)
531 constexpr
auto operator()(
534 native_pixmap_type pmp,
535 span<const int_type> attribs)
const noexcept {
536 return this->_cnvchkcall(disp, conf, pmp, attribs.data())
540 template <std::
size_t N>
541 constexpr
auto operator()(
544 native_pixmap_type pmp,
546 return (*
this)(disp, conf, pmp, attribs.
get());
548 } create_pixmap_surface;
556 return this->_cnvchkcall(disp, surf);
568 constexpr
auto operator()(
read_draw which)
const noexcept {
569 return this->_cnvchkcall(which);
571 } get_current_surface;
577 constexpr
auto operator()(
581 int_type value)
const noexcept {
582 return this->_cnvchkcall(disp, surf, attr, value);
600 return this->_cnvchkcall(disp,
nullptr)
604 constexpr
auto operator()(
606 span<const int_type> attribs)
const noexcept {
607 return this->_cnvchkcall(disp, attribs.data())
611 template <std::
size_t N>
612 constexpr
auto operator()(
615 return (*
this)(disp, attribs.
get());
625 return this->_cnvchkcall(disp, surf);
637 constexpr
auto operator()(
641 int_type value)
const noexcept {
642 return this->_cnvchkcall(disp, surf, attr, value);
661 return this->_cnvchkcall(disp, surf);
663 } stream_consumer_gl_texture_external;
671 return this->_cnvchkcall(disp, surf);
673 } stream_consumer_acquire;
681 return this->_cnvchkcall(disp, surf);
683 } stream_consumer_release;
690 int_type ret_count{0};
691 return this->_cnvchkcall(disp,
nullptr,
nullptr, 0, &ret_count)
692 .transformed([&ret_count](
auto ok) {
693 return limit_cast<span_size_t>(
694 egl_types::bool_true(
ok) ? ret_count : 0);
700 span<attrib_type> attr,
701 span<device_type> dest)
const noexcept {
702 int_type ret_count{0};
708 limit_cast<int_type>(dest.size()),
710 .transformed([dest, &ret_count](
auto ok) {
713 limit_cast<span_size_t>(
714 egl_types::bool_true(
ok) ? ret_count : 0));
718 template <std::
size_t N>
722 span<device_type> dest)
const noexcept {
723 return (*
this)(disp, attr.
get(), dest);
734 return this->_cnvchkcall(disp, outl, attr._key, attr._value);
736 } output_layer_attrib;
745 using RV = attrib_type;
746 attrib_type result{0};
747 return this->_cnvchkcall(disp, outl, attr, &result)
748 .replaced_with(result)
751 } query_output_layer_attrib;
760 return this->_cnvchkcall(disp, outl, qury)
763 } query_output_layer_string;
770 int_type ret_count{0};
771 return this->_cnvchkcall(disp,
nullptr,
nullptr, 0, &ret_count)
772 .transformed([&ret_count](
auto ok) {
773 return limit_cast<span_size_t>(
774 egl_types::bool_true(
ok) ? ret_count : 0);
780 span<attrib_type> attr,
781 span<device_type> dest)
const noexcept {
782 int_type ret_count{0};
788 limit_cast<int_type>(dest.size()),
790 .transformed([dest, &ret_count](
auto ok) {
793 limit_cast<span_size_t>(
794 egl_types::bool_true(
ok) ? ret_count : 0));
798 template <std::
size_t N>
802 span<device_type> dest)
const noexcept {
803 return (*
this)(disp, attr.
get(), dest);
814 return this->_cnvchkcall(disp, outp, attr._key, attr._value);
816 } output_port_attrib;
825 using RV = attrib_type;
826 attrib_type result{0};
827 return this->_cnvchkcall(disp, outp, attr, &result)
828 .replaced_with(result)
831 } query_output_port_attrib;
840 return this->_cnvchkcall(disp, outl, qury)
843 } query_output_port_string;
849 constexpr
auto operator()(
853 client_buffer_type buf,
854 span<const attrib_type> attribs)
const noexcept {
855 return this->_cnvchkcall(disp, ctxt, tgt, buf, attribs.data())
859 template <std::
size_t N>
860 constexpr
auto operator()(
864 client_buffer_type buf,
866 return (*
this)(disp, ctxt, tgt, buf, attribs.
get());
876 return this->_cnvchkcall(disp, imge);
885 struct : func<EGLPAFP(
BindAPI)> {
886 using func<EGLPAFP(
BindAPI)>::func;
888 constexpr
auto operator()(
client_api api)
const noexcept {
889 return this->_cnvchkcall(api);
895 using func<EGLPAFP(
QueryAPI)>::func;
897 constexpr
auto operator()()
const noexcept {
906 constexpr
auto operator()(
910 span<const int_type> attribs)
const noexcept {
911 return this->_cnvchkcall(disp, conf, share_ctxt, attribs.data())
915 template <std::
size_t N>
916 constexpr
auto operator()(
923 template <std::
size_t N>
924 constexpr
auto operator()(
929 return (*
this)(disp, conf, share_ctxt, attribs.
get());
939 return this->_cnvchkcall(disp, ctxt);
951 constexpr
auto operator()(
956 return this->_cnvchkcall(disp, draw, read, ctxt);
959 constexpr
auto operator()(
963 return this->_cnvchkcall(disp, surf, surf, ctxt);
975 constexpr
auto operator()()
const noexcept {
978 } get_current_context;
984 constexpr
auto operator()()
const noexcept {
985 return this->_chkcall();
993 constexpr
auto operator()()
const noexcept {
994 #ifdef EGL_CORE_NATIVE_ENGINEs
995 return this->_chkcall(EGL_CORE_NATIVE_ENGINE);
997 return this->_fake();
1006 constexpr
auto operator()(
1009 span<const attrib_type> attribs)
const noexcept {
1010 return this->_cnvchkcall(disp, type, attribs.data())
1014 template <std::
size_t N>
1015 constexpr
auto operator()(
1019 return (*
this)(disp, type, attribs.
get());
1027 template <
typename R,
typename P>
1028 constexpr
auto operator()(
1031 std::chrono::duration<R, P>
timeout)
const noexcept {
1032 return this->_cnvchkcall(
1033 disp, sync, 0, std::chrono::nanoseconds(
timeout).count());
1036 template <
typename R,
typename P>
1040 return this->_cnvchkcall(disp, sync, 0, EGL_FOREVER);
1042 return this->_fake({});
1049 using func<EGLPAFP(
WaitSync)>::func;
1053 return this->_cnvchkcall(disp, sync, 0);
1063 return this->_cnvchkcall(disp, sync);
1073 return this->_cnvchkcall(disp, query)
1077 constexpr
auto operator()()
const noexcept {
1078 return this->_fake_empty_c_str().cast_to(
1087 char separator) noexcept {
1088 return query_string(disp, query).transformed([separator](
auto src) {
1089 return split_into_string_list(src, separator);
1095 #ifdef EGL_CLIENT_APIS
1096 return query_string(disp,
string_query(EGL_CLIENT_APIS))
1098 return query_string()
1101 [](
auto src) {
return split_into_string_list(src,
' '); });
1105 enum_bitfield<client_api_bit> result{};
1107 if(
ok apis{get_client_apis(disp)}) {
1108 for(
auto api : apis) {
1109 #ifdef EGL_OPENGL_BIT
1114 #ifdef EGL_OPENGL_ES_BIT
1119 #ifdef EGL_OPENVG_BIT
1131 auto get_extensions()
const noexcept {
1132 #if defined(EGL_EXTENSIONS) && defined(EGL_NO_DISPLAY)
1133 return query_string(
1136 return query_string()
1139 [](
auto src) {
return split_into_string_list(src,
' '); });
1144 #ifdef EGL_EXTENSIONS
1145 return query_string(disp,
string_query(EGL_EXTENSIONS))
1147 return query_string()
1150 [](
auto src) {
return split_into_string_list(src,
' '); });
1154 auto has_extension(
string_view which)
const noexcept {
1155 if(
ok extensions{get_extensions()}) {
1156 for(
auto ext_name : extensions) {
1166 if(
ok extensions{get_device_extensions(dev)}) {
1167 for(
auto ext_name : extensions) {
1177 if(
ok extensions{get_extensions(disp)}) {
1178 for(
auto ext_name : extensions) {
1192 operator()(
display_handle disp, int_type interval)
const noexcept {
1193 return this->_cnvchkcall(disp, interval);
1203 return this->_cnvchkcall(disp, surf);
1211 constexpr
auto operator()(
1214 span<const int_type> rects)
const noexcept {
1215 EAGINE_ASSERT(rects.size() % 4 == 0);
1216 return this->_cnvchkcall(
1217 disp, surf, rects.data(), limit_cast<int_type>(rects.size()));
1219 } swap_buffers_with_damage;
1231 #endif // EGLPLUS_EGL_API_API_HPP
egl_api_function< bool_type(display_type, output_layer_type, int_type, attrib_type *), nullptr > QueryOutputLayerAttrib
Definition: c_api.hpp:338
egl_api_function< bool_type(display_type, stream_type), nullptr > StreamConsumerAcquire
Definition: c_api.hpp:307
Typed enumeration for EGL output layer string query constants.
Definition: enum_types.hpp:145
egl_api_function< bool_type(display_type, output_layer_type, int_type, attrib_type), nullptr > OutputLayerAttrib
Definition: c_api.hpp:331
egl_api_function< bool_type(display_type, sync_type), nullptr > DestroySync
Definition: c_api.hpp:479
basic_handle< display_tag, nothing_t > display_handle
Alias for EGL display handle wrapper.
Definition: objects.hpp:75
static constexpr auto ends_with(basic_span< T1, P1, S1 > spn, basic_span< T2, P2, S2 > with) -> bool
Indicates if span spn ends with the content of with.
Definition: span_algo.hpp:187
basic_string_span< const char > string_view
Alias for const string views.
Definition: string_span.hpp:116
egl_api_function< enum_type(), nullptr > QueryAPI
Definition: c_api.hpp:401
char char_type
String character type.
Definition: config.hpp:57
EGL-related code is placed in this namespace.
Definition: eglplus.hpp:11
Class wrapping the functions from the EGL API.
Definition: api.hpp:37
A single key/value pair for a key/value list.
Definition: key_val_list.hpp:27
egl_api_function< bool_type(display_type, stream_type, int_type, int_type *), nullptr > QueryStream
Definition: c_api.hpp:297
egl_api_function< bool_type(display_type, surface_type, int_type, int_type), nullptr > SurfaceAttrib
Definition: c_api.hpp:266
egl_api_function< int_type(), nullptr > GetError
Definition: c_api.hpp:127
egl_api_function< const char_type *(display_type, int_type), nullptr > QueryString
Definition: c_api.hpp:182
egl_api_function< bool_type(display_type, surface_type, const int_type *, int_type), nullptr > SwapBuffersWithDamage
Definition: c_api.hpp:526
egl_api_function< display_type(enum_type, void_ptr_type, const attrib_type *), nullptr > GetPlatformDisplay
Definition: c_api.hpp:151
egl_api_function< bool_type(display_type, int_type *, int_type *), nullptr > Initialize
Definition: c_api.hpp:170
Typed enumeration for EGL string query constants.
Definition: enum_types.hpp:50
static constexpr auto head(basic_span< T, P, S > s, L l) noexcept -> basic_span< T, P, S >
Returns the first l elements from the front of a span.
Definition: span_algo.hpp:99
egl_api_function< context_type(display_type, config_type, context_type, const int_type *), nullptr > CreateContext
Definition: c_api.hpp:408
EGLConfig config_type
Config handle type.
Definition: config.hpp:89
EGLNativePixmapType native_pixmap_type
Native pixmap handle type.
Definition: config.hpp:80
egl_api_function< bool_type(display_type, stream_type, int_type, int_type), nullptr > StreamAttrib
Definition: c_api.hpp:290
Typed enumeration for EGL image target constants.
Definition: enum_types.hpp:173
egl_api_function< bool_type(display_type, const attrib_type *, output_port_type *, int_type, int_type *), nullptr > GetOutputPorts
Definition: c_api.hpp:357
EGLNativeDisplayType native_display_type
Native display handle type.
Definition: config.hpp:74
egl_api_function< bool_type(display_type, context_type), nullptr > DestroyContext
Definition: c_api.hpp:415
egl_api_function< surface_type(display_type, config_type, native_window_type, const int_type *), nullptr > CreateWindowSurface
Definition: c_api.hpp:217
EGLNativeWindowType native_window_type
Native window handle type.
Definition: config.hpp:77
Non-owning wrapper for C-API opaque handle types.
Definition: handle.hpp:26
egl_api_function< bool_type(), nullptr > WaitClient
Definition: c_api.hpp:439
Typed enumeration for EGL read/draw specifier constants.
Definition: enum_types.hpp:206
egl_api_function< bool_type(display_type, surface_type), nullptr > SwapBuffers
Definition: c_api.hpp:519
egl_api_function< bool_type(display_type, const int_type *, config_type *, int_type, int_type *), nullptr > ChooseConfig
Definition: c_api.hpp:196
typename egl_types::sync_type sync_type
Alias for sync type.
Definition: c_api.hpp:48
egl_api_function< bool_type(display_type, stream_type), nullptr > StreamConsumerRelease
Definition: c_api.hpp:312
EGLenum enum_type
Enumeration type.
Definition: config.hpp:113
egl_api_function< bool_type(enum_type), nullptr > BindAPI
Definition: c_api.hpp:397
void * void_ptr_type
Untyped non-const pointer type.
Definition: config.hpp:54
egl_api_function< const char_type *(display_type, output_layer_type, int_type), nullptr > QueryOutputLayerString
Definition: c_api.hpp:345
Typed enumeration for EGL stream attribute constants.
Definition: enum_types.hpp:124
egl_api_function< bool_type(display_type, sync_type, int_type), nullptr > WaitSync
Definition: c_api.hpp:465
Value typically wrapping function call result and success indicator.
Definition: extract.hpp:128
Typed enumeration for EGL output layer attribute constants.
Definition: enum_types.hpp:138
static auto finally(Func func) -> func_on_scope_exit< Func >
Function constructing on-scope-exit actions.
Definition: scope_exit.hpp:144
Class wrapping the C-functions from the EGL API.
Definition: c_api.hpp:32
egl_api_function< surface_type(display_type, config_type, native_pixmap_type, const int_type *), nullptr > CreatePixmapSurface
Definition: c_api.hpp:238
egl_api_function< bool_type(display_type, surface_type, int_type, int_type *), nullptr > QuerySurface
Definition: c_api.hpp:273
Typed enumeration for EGL output port attribute constants.
Definition: enum_types.hpp:152
egl_api_function< bool_type(display_type, const attrib_type *, output_layer_type *, int_type, int_type *), nullptr > GetOutputLayers
Definition: c_api.hpp:324
auto get() const noexcept -> span< const value_type >
A const view of the internal element array.
Definition: key_val_list.hpp:154
egl_api_function< context_type(), nullptr > GetCurrentContext
Definition: c_api.hpp:427
Typed enumeration for EGL client API type constants.
Definition: enum_types.hpp:97
egl_api_function< bool_type(display_type, image_type), nullptr > DestroyImage
Definition: c_api.hpp:498
Typed enumeration for EGL client API bit constants.
Definition: enum_types.hpp:103
egl_api_function< const char_type *(device_type, int_type), nullptr > QueryDeviceString
Definition: c_api.hpp:144
Template for classes wrapping static key/value typically attribute lists.
Definition: key_val_list.hpp:21
egl_api_function< bool_type(display_type, surface_type), nullptr > DestroySurface
Definition: c_api.hpp:252
egl_api_function< bool_type(display_type, output_port_type, int_type, attrib_type), nullptr > OutputPortAttrib
Definition: c_api.hpp:364
void * device_type
Device handle type.
Definition: config.hpp:60
Typed enumeration for EGL device string query constants.
Definition: enum_types.hpp:56
egl_api_function< surface_type(display_type, const int_type *), nullptr > CreateStream
Definition: c_api.hpp:278
egl_api_function< sync_type(display_type, enum_type, const attrib_type *), nullptr > CreateSync
Definition: c_api.hpp:451
EGLClientBuffer client_buffer_type
Client buffer handle type.
Definition: config.hpp:83
egl_api_function< bool_type(display_type), nullptr > Terminate
Definition: c_api.hpp:175
egl_api_function< int_type(display_type, sync_type, int_type, time_type), nullptr > ClientWaitSync
Definition: c_api.hpp:458
Class representing a timeout since construction or reset.
Definition: timeout.hpp:47
egl_api_function< bool_type(int_type), nullptr > WaitNative
Definition: c_api.hpp:444
Typed enumeration for EGL surface attribute constants.
Definition: enum_types.hpp:76
egl_api_function< bool_type(display_type, config_type, int_type, int_type *), nullptr > GetConfigAttrib
Definition: c_api.hpp:203
egl_api_function< surface_type(int_type), nullptr > GetCurrentSurface
Definition: c_api.hpp:259
Compile-time type list template.
Definition: mp_list.hpp:20
egl_api_function< bool_type(display_type, int_type), nullptr > SwapInterval
Definition: c_api.hpp:512
Typed enumeration for EGL output port string query constants.
Definition: enum_types.hpp:159
egl_api_function< surface_type(display_type, stream_type), nullptr > DestroyStream
Definition: c_api.hpp:283
Template type used mostly for function type-tag dispatching.
Definition: type_identity.hpp:19
egl_api_function< surface_type(display_type, config_type, const int_type *), nullptr > CreatePbufferSurface
Definition: c_api.hpp:224
egl_api_function< bool_type(int_type, device_type, int_type *), nullptr > QueryDevices
Definition: c_api.hpp:139
EGLAttrib attrib_type
Config attribute handle type.
Definition: config.hpp:92
egl_api_function< bool_type(display_type, output_port_type, int_type, attrib_type *), nullptr > QueryOutputPortAttrib
Definition: c_api.hpp:371
egl_api_function< bool_type(), nullptr > ReleaseThread
Definition: c_api.hpp:531
egl_api_function< bool_type(display_type, surface_type, surface_type, context_type), nullptr > MakeCurrent
Definition: c_api.hpp:422
egl_api_function< const char_type *(display_type, output_port_type, int_type), nullptr > QueryOutputPortString
Definition: c_api.hpp:378
egl_api_function< const char_type *(display_type), nullptr > GetDisplayDriverName
Definition: c_api.hpp:163
EGLint int_type
Signed integer type.
Definition: config.hpp:116
egl_api_function< image_type(display_type, context_type, enum_type, client_buffer_type, const attrib_type *), nullptr > CreateImage
Definition: c_api.hpp:491
egl_api_function< bool_type(display_type, stream_type), nullptr > StreamConsumerGLTextureExternal
Definition: c_api.hpp:302
egl_api_function< display_type(native_display_type), nullptr > GetDisplay
Definition: c_api.hpp:158
egl_api_function< bool_type(display_type, config_type *, int_type, int_type *), nullptr > GetConfigs
Definition: c_api.hpp:189