diff --git a/include/GL/eglew.h b/include/GL/eglew.h index e9e5a0b..9a00be9 100644 --- a/include/GL/eglew.h +++ b/include/GL/eglew.h @@ -2277,6 +2277,30 @@ typedef EGLBoolean ( * PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface su #endif /* EGL_NV_robustness_video_memory_purge */ +/* -------------------- EGL_NV_stream_consumer_eglimage -------------------- */ + +#ifndef EGL_NV_stream_consumer_eglimage +#define EGL_NV_stream_consumer_eglimage 1 + +#define EGL_STREAM_CONSUMER_IMAGE_NV 0x3373 +#define EGL_STREAM_IMAGE_ADD_NV 0x3374 +#define EGL_STREAM_IMAGE_REMOVE_NV 0x3375 +#define EGL_STREAM_IMAGE_AVAILABLE_NV 0x3376 + +typedef EGLint ( * PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum* event, EGLAttrib* aux); +typedef EGLBoolean ( * PFNEGLSTREAMACQUIREIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage* pImage, EGLSync sync); +typedef EGLBoolean ( * PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, EGLuint64KHR* modifiers, EGLAttrib* attrib_list); +typedef EGLBoolean ( * PFNEGLSTREAMRELEASEIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync); + +#define eglQueryStreamConsumerEventNV EGLEW_GET_FUN(__eglewQueryStreamConsumerEventNV) +#define eglStreamAcquireImageNV EGLEW_GET_FUN(__eglewStreamAcquireImageNV) +#define eglStreamImageConsumerConnectNV EGLEW_GET_FUN(__eglewStreamImageConsumerConnectNV) +#define eglStreamReleaseImageNV EGLEW_GET_FUN(__eglewStreamReleaseImageNV) + +#define EGLEW_NV_stream_consumer_eglimage EGLEW_GET_VAR(__EGLEW_NV_stream_consumer_eglimage) + +#endif /* EGL_NV_stream_consumer_eglimage */ + /* ------------------ EGL_NV_stream_consumer_gltexture_yuv ----------------- */ #ifndef EGL_NV_stream_consumer_gltexture_yuv @@ -2852,6 +2876,11 @@ EGLEW_FUN_EXPORT PFNEGLQUERYNATIVEWINDOWNVPROC __eglewQueryNativeWindowNV; EGLEW_FUN_EXPORT PFNEGLPOSTSUBBUFFERNVPROC __eglewPostSubBufferNV; +EGLEW_FUN_EXPORT PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC __eglewQueryStreamConsumerEventNV; +EGLEW_FUN_EXPORT PFNEGLSTREAMACQUIREIMAGENVPROC __eglewStreamAcquireImageNV; +EGLEW_FUN_EXPORT PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC __eglewStreamImageConsumerConnectNV; +EGLEW_FUN_EXPORT PFNEGLSTREAMRELEASEIMAGENVPROC __eglewStreamReleaseImageNV; + EGLEW_FUN_EXPORT PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC __eglewStreamConsumerGLTextureExternalAttribsNV; EGLEW_FUN_EXPORT PFNEGLSTREAMFLUSHNVPROC __eglewStreamFlushNV; @@ -3008,6 +3037,7 @@ EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_post_convert_rounding; EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_post_sub_buffer; EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_quadruple_buffer; EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_robustness_video_memory_purge; +EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_consumer_eglimage; EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_consumer_gltexture_yuv; EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_cross_display; EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_cross_object; diff --git a/src/glew.c b/src/glew.c index 98c2028..d3255c2 100644 --- a/src/glew.c +++ b/src/glew.c @@ -19547,6 +19547,11 @@ PFNEGLQUERYNATIVEWINDOWNVPROC __eglewQueryNativeWindowNV = NULL; PFNEGLPOSTSUBBUFFERNVPROC __eglewPostSubBufferNV = NULL; +PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC __eglewQueryStreamConsumerEventNV = NULL; +PFNEGLSTREAMACQUIREIMAGENVPROC __eglewStreamAcquireImageNV = NULL; +PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC __eglewStreamImageConsumerConnectNV = NULL; +PFNEGLSTREAMRELEASEIMAGENVPROC __eglewStreamReleaseImageNV = NULL; + PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC __eglewStreamConsumerGLTextureExternalAttribsNV = NULL; PFNEGLSTREAMFLUSHNVPROC __eglewStreamFlushNV = NULL; @@ -19703,6 +19708,7 @@ GLboolean __EGLEW_NV_post_convert_rounding = GL_FALSE; GLboolean __EGLEW_NV_post_sub_buffer = GL_FALSE; GLboolean __EGLEW_NV_quadruple_buffer = GL_FALSE; GLboolean __EGLEW_NV_robustness_video_memory_purge = GL_FALSE; +GLboolean __EGLEW_NV_stream_consumer_eglimage = GL_FALSE; GLboolean __EGLEW_NV_stream_consumer_gltexture_yuv = GL_FALSE; GLboolean __EGLEW_NV_stream_cross_display = GL_FALSE; GLboolean __EGLEW_NV_stream_cross_object = GL_FALSE; @@ -20411,6 +20417,22 @@ static GLboolean _glewInit_EGL_NV_post_sub_buffer () #endif /* EGL_NV_post_sub_buffer */ +#ifdef EGL_NV_stream_consumer_eglimage + +static GLboolean _glewInit_EGL_NV_stream_consumer_eglimage () +{ + GLboolean r = GL_FALSE; + + r = ((eglQueryStreamConsumerEventNV = (PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC)glewGetProcAddress((const GLubyte*)"eglQueryStreamConsumerEventNV")) == NULL) || r; + r = ((eglStreamAcquireImageNV = (PFNEGLSTREAMACQUIREIMAGENVPROC)glewGetProcAddress((const GLubyte*)"eglStreamAcquireImageNV")) == NULL) || r; + r = ((eglStreamImageConsumerConnectNV = (PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC)glewGetProcAddress((const GLubyte*)"eglStreamImageConsumerConnectNV")) == NULL) || r; + r = ((eglStreamReleaseImageNV = (PFNEGLSTREAMRELEASEIMAGENVPROC)glewGetProcAddress((const GLubyte*)"eglStreamReleaseImageNV")) == NULL) || r; + + return r; +} + +#endif /* EGL_NV_stream_consumer_eglimage */ + #ifdef EGL_NV_stream_consumer_gltexture_yuv static GLboolean _glewInit_EGL_NV_stream_consumer_gltexture_yuv () @@ -21008,6 +21030,10 @@ GLenum eglewInit (EGLDisplay display) #ifdef EGL_NV_robustness_video_memory_purge EGLEW_NV_robustness_video_memory_purge = _glewSearchExtension("EGL_NV_robustness_video_memory_purge", extStart, extEnd); #endif /* EGL_NV_robustness_video_memory_purge */ +#ifdef EGL_NV_stream_consumer_eglimage + EGLEW_NV_stream_consumer_eglimage = _glewSearchExtension("EGL_NV_stream_consumer_eglimage", extStart, extEnd); + if (glewExperimental || EGLEW_NV_stream_consumer_eglimage) EGLEW_NV_stream_consumer_eglimage = !_glewInit_EGL_NV_stream_consumer_eglimage(); +#endif /* EGL_NV_stream_consumer_eglimage */ #ifdef EGL_NV_stream_consumer_gltexture_yuv EGLEW_NV_stream_consumer_gltexture_yuv = _glewSearchExtension("EGL_NV_stream_consumer_gltexture_yuv", extStart, extEnd); if (glewExperimental || EGLEW_NV_stream_consumer_gltexture_yuv) EGLEW_NV_stream_consumer_gltexture_yuv = !_glewInit_EGL_NV_stream_consumer_gltexture_yuv(); @@ -31849,6 +31875,13 @@ GLboolean eglewIsSupported (const char* name) continue; } #endif +#ifdef EGL_NV_stream_consumer_eglimage + if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_consumer_eglimage", 24)) + { + ret = EGLEW_NV_stream_consumer_eglimage; + continue; + } +#endif #ifdef EGL_NV_stream_consumer_gltexture_yuv if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_consumer_gltexture_yuv", 29)) { diff --git a/src/glewinfo.c b/src/glewinfo.c index aee47c9..b0f9349 100644 --- a/src/glewinfo.c +++ b/src/glewinfo.c @@ -13035,6 +13035,20 @@ static void _glewInfo_EGL_NV_robustness_video_memory_purge (void) #endif /* EGL_NV_robustness_video_memory_purge */ +#ifdef EGL_NV_stream_consumer_eglimage + +static void _glewInfo_EGL_NV_stream_consumer_eglimage (void) +{ + GLboolean fi = glewPrintExt("EGL_NV_stream_consumer_eglimage", EGLEW_NV_stream_consumer_eglimage, eglewIsSupported("EGL_NV_stream_consumer_eglimage"), eglewGetExtension("EGL_NV_stream_consumer_eglimage")); + + glewInfoFunc(fi, "eglQueryStreamConsumerEventNV", eglQueryStreamConsumerEventNV == NULL); + glewInfoFunc(fi, "eglStreamAcquireImageNV", eglStreamAcquireImageNV == NULL); + glewInfoFunc(fi, "eglStreamImageConsumerConnectNV", eglStreamImageConsumerConnectNV == NULL); + glewInfoFunc(fi, "eglStreamReleaseImageNV", eglStreamReleaseImageNV == NULL); +} + +#endif /* EGL_NV_stream_consumer_eglimage */ + #ifdef EGL_NV_stream_consumer_gltexture_yuv static void _glewInfo_EGL_NV_stream_consumer_gltexture_yuv (void) @@ -18396,6 +18410,9 @@ static void eglewInfo () #ifdef EGL_NV_robustness_video_memory_purge _glewInfo_EGL_NV_robustness_video_memory_purge(); #endif /* EGL_NV_robustness_video_memory_purge */ +#ifdef EGL_NV_stream_consumer_eglimage + _glewInfo_EGL_NV_stream_consumer_eglimage(); +#endif /* EGL_NV_stream_consumer_eglimage */ #ifdef EGL_NV_stream_consumer_gltexture_yuv _glewInfo_EGL_NV_stream_consumer_gltexture_yuv(); #endif /* EGL_NV_stream_consumer_gltexture_yuv */