9QEGLStreamConvenience::QEGLStreamConvenience()
11 has_egl_platform_device(
false),
12 has_egl_device_base(
false),
13 has_egl_stream(
false),
14 has_egl_stream_producer_eglsurface(
false),
15 has_egl_stream_consumer_egloutput(
false),
16 has_egl_output_drm(
false),
17 has_egl_output_base(
false),
18 has_egl_stream_cross_process_fd(
false),
19 has_egl_stream_consumer_gltexture(
false)
21 const char *extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
23 qWarning(
"Failed to query EGL extensions");
27 query_devices =
reinterpret_cast<PFNEGLQUERYDEVICESEXTPROC>(eglGetProcAddress(
"eglQueryDevicesEXT"));
28 query_device_string =
reinterpret_cast<PFNEGLQUERYDEVICESTRINGEXTPROC>(eglGetProcAddress(
"eglQueryDeviceStringEXT"));
29 get_platform_display =
reinterpret_cast<PFNEGLGETPLATFORMDISPLAYEXTPROC>(eglGetProcAddress(
"eglGetPlatformDisplayEXT"));
31 has_egl_device_base = strstr(extensions,
"EGL_EXT_device_base");
32 has_egl_platform_device = strstr(extensions,
"EGL_EXT_platform_device");
35void QEGLStreamConvenience::initialize(EGLDisplay dpy)
40 if (!eglBindAPI(EGL_OPENGL_ES_API)) {
41 qWarning(
"Failed to bind OpenGL ES API");
45 const char *extensions = eglQueryString(dpy, EGL_EXTENSIONS);
47 qWarning(
"Failed to query EGL extensions");
51 create_stream =
reinterpret_cast<PFNEGLCREATESTREAMKHRPROC>(eglGetProcAddress(
"eglCreateStreamKHR"));
52 destroy_stream =
reinterpret_cast<PFNEGLDESTROYSTREAMKHRPROC>(eglGetProcAddress(
"eglDestroyStreamKHR"));
53 stream_attrib =
reinterpret_cast<PFNEGLSTREAMATTRIBKHRPROC>(eglGetProcAddress(
"eglStreamAttribKHR"));
54 query_stream =
reinterpret_cast<PFNEGLQUERYSTREAMKHRPROC>(eglGetProcAddress(
"eglQueryStreamKHR"));
55 query_stream_u64 =
reinterpret_cast<PFNEGLQUERYSTREAMU64KHRPROC>(eglGetProcAddress(
"eglQueryStreamu64KHR"));
56 create_stream_producer_surface =
reinterpret_cast<PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC>(eglGetProcAddress(
"eglCreateStreamProducerSurfaceKHR"));
57 stream_consumer_output =
reinterpret_cast<PFNEGLSTREAMCONSUMEROUTPUTEXTPROC>(eglGetProcAddress(
"eglStreamConsumerOutputEXT"));
58 get_output_layers =
reinterpret_cast<PFNEGLGETOUTPUTLAYERSEXTPROC>(eglGetProcAddress(
"eglGetOutputLayersEXT"));
59 get_output_ports =
reinterpret_cast<PFNEGLGETOUTPUTPORTSEXTPROC>(eglGetProcAddress(
"eglGetOutputPortsEXT"));
60 output_layer_attrib =
reinterpret_cast<PFNEGLOUTPUTLAYERATTRIBEXTPROC>(eglGetProcAddress(
"eglOutputLayerAttribEXT"));
61 query_output_layer_attrib =
reinterpret_cast<PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC>(eglGetProcAddress(
"eglQueryOutputLayerAttribEXT"));
62 query_output_layer_string =
reinterpret_cast<PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC>(eglGetProcAddress(
"eglQueryOutputLayerStringEXT"));
63 query_output_port_attrib =
reinterpret_cast<PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC>(eglGetProcAddress(
"eglQueryOutputPortAttribEXT"));
64 query_output_port_string =
reinterpret_cast<PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC>(eglGetProcAddress(
"eglQueryOutputPortStringEXT"));
65 get_stream_file_descriptor =
reinterpret_cast<PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC>(eglGetProcAddress(
"eglGetStreamFileDescriptorKHR"));
66 create_stream_from_file_descriptor =
reinterpret_cast<PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC>(eglGetProcAddress(
"eglCreateStreamFromFileDescriptorKHR"));
67 stream_consumer_gltexture =
reinterpret_cast<PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC>(eglGetProcAddress(
"eglStreamConsumerGLTextureExternalKHR"));
68 stream_consumer_acquire =
reinterpret_cast<PFNEGLSTREAMCONSUMERACQUIREKHRPROC>(eglGetProcAddress(
"eglStreamConsumerAcquireKHR"));
69 stream_consumer_release =
reinterpret_cast<PFNEGLSTREAMCONSUMERRELEASEKHRPROC>(eglGetProcAddress(
"eglStreamConsumerReleaseKHR"));
70 create_stream_attrib_nv =
reinterpret_cast<PFNEGLCREATESTREAMATTRIBNVPROC>(eglGetProcAddress(
"eglCreateStreamAttribNV"));
71 set_stream_attrib_nv =
reinterpret_cast<PFNEGLSETSTREAMATTRIBNVPROC>(eglGetProcAddress(
"eglSetStreamAttribNV"));
72 query_stream_attrib_nv =
reinterpret_cast<PFNEGLQUERYSTREAMATTRIBNVPROC>(eglGetProcAddress(
"eglQueryStreamAttribNV"));
73 acquire_stream_attrib_nv =
reinterpret_cast<PFNEGLSTREAMCONSUMERACQUIREATTRIBNVPROC>(eglGetProcAddress(
"eglStreamConsumerAcquireAttribNV"));
74 release_stream_attrib_nv =
reinterpret_cast<PFNEGLSTREAMCONSUMERRELEASEATTRIBNVPROC>(eglGetProcAddress(
"eglStreamConsumerReleaseAttribNV"));
76 has_egl_stream = strstr(extensions,
"EGL_KHR_stream");
77 has_egl_stream_producer_eglsurface = strstr(extensions,
"EGL_KHR_stream_producer_eglsurface");
78 has_egl_stream_consumer_egloutput = strstr(extensions,
"EGL_EXT_stream_consumer_egloutput");
79 has_egl_output_drm = strstr(extensions,
"EGL_EXT_output_drm");
80 has_egl_output_base = strstr(extensions,
"EGL_EXT_output_base");
81 has_egl_stream_cross_process_fd = strstr(extensions,
"EGL_KHR_stream_cross_process_fd");
82 has_egl_stream_consumer_gltexture = strstr(extensions,
"EGL_KHR_stream_consumer_gltexture");