Pass context profile mask and context flags to init functions.

They will be needed to decide if GL functions are deprecated or removed.
This commit is contained in:
Matthias Bentrup 2015-02-05 09:32:21 +01:00
parent a862219acb
commit bb55cb4b31
5 changed files with 24 additions and 10 deletions

View File

@ -46,6 +46,7 @@ if (@ARGV)
print "#ifdef $extname\n\n"; print "#ifdef $extname\n\n";
print "static GLboolean _glewInit_$extname (" . $type . print "static GLboolean _glewInit_$extname (" . $type .
"EW_CONTEXT_ARG_DEF_INIT)\n{\n GLboolean r = GL_FALSE;\n"; "EW_CONTEXT_ARG_DEF_INIT)\n{\n GLboolean r = GL_FALSE;\n";
print "#ifdef GLEW_MX\n (void)ctx;\n#endif\n (void)context_profile;\n (void)context_flags;\n";
output_decls($functions, \&make_pfn_def_init); output_decls($functions, \&make_pfn_def_init);
print "\n return r;\n}\n\n"; print "\n return r;\n}\n\n";
print "#endif /* $extname */\n\n"; print "#endif /* $extname */\n\n";

View File

@ -15,26 +15,26 @@ extern int memcmp(const void *, const void *, size_t);
#ifdef GLEW_MX #ifdef GLEW_MX
# define glewGetContext() ctx # define glewGetContext() ctx
# ifdef _WIN32 # ifdef _WIN32
# define GLEW_CONTEXT_ARG_DEF_INIT GLEWContext* ctx # define GLEW_CONTEXT_ARG_DEF_INIT GLEWContext* ctx, GLint context_profile, GLint context_flags
# define GLEW_CONTEXT_ARG_VAR_INIT ctx # define GLEW_CONTEXT_ARG_VAR_INIT ctx, context_profile, context_flags
# define wglewGetContext() ctx # define wglewGetContext() ctx
# define WGLEW_CONTEXT_ARG_DEF_INIT WGLEWContext* ctx # define WGLEW_CONTEXT_ARG_DEF_INIT WGLEWContext* ctx, GLint context_profile, GLint context_flags
# define WGLEW_CONTEXT_ARG_DEF_LIST WGLEWContext* ctx # define WGLEW_CONTEXT_ARG_DEF_LIST WGLEWContext* ctx
# else /* _WIN32 */ # else /* _WIN32 */
# define GLEW_CONTEXT_ARG_DEF_INIT void # define GLEW_CONTEXT_ARG_DEF_INIT GLEWContext *ctx, GLint context_profile, GLint context_flags
# define GLEW_CONTEXT_ARG_VAR_INIT # define GLEW_CONTEXT_ARG_VAR_INIT ctx, context_profile, context_flags
# define glxewGetContext() ctx # define glxewGetContext() ctx
# define GLXEW_CONTEXT_ARG_DEF_INIT void # define GLXEW_CONTEXT_ARG_DEF_INIT GLXEWContext* ctx, GLint context_profile, GLint context_flags
# define GLXEW_CONTEXT_ARG_DEF_LIST GLXEWContext* ctx # define GLXEW_CONTEXT_ARG_DEF_LIST GLXEWContext* ctx
# endif /* _WIN32 */ # endif /* _WIN32 */
# define GLEW_CONTEXT_ARG_DEF_LIST GLEWContext* ctx # define GLEW_CONTEXT_ARG_DEF_LIST GLEWContext* ctx
#else /* GLEW_MX */ #else /* GLEW_MX */
# define GLEW_CONTEXT_ARG_DEF_INIT void # define GLEW_CONTEXT_ARG_DEF_INIT GLint context_profile, GLint context_flags
# define GLEW_CONTEXT_ARG_VAR_INIT # define GLEW_CONTEXT_ARG_VAR_INIT context_profile, context_flags
# define GLEW_CONTEXT_ARG_DEF_LIST void # define GLEW_CONTEXT_ARG_DEF_LIST void
# define WGLEW_CONTEXT_ARG_DEF_INIT void # define WGLEW_CONTEXT_ARG_DEF_INIT GLint context_profile, GLint context_flags
# define WGLEW_CONTEXT_ARG_DEF_LIST void # define WGLEW_CONTEXT_ARG_DEF_LIST void
# define GLXEW_CONTEXT_ARG_DEF_INIT void # define GLXEW_CONTEXT_ARG_DEF_INIT GLint context_profile, GLint context_flags
# define GLXEW_CONTEXT_ARG_DEF_LIST void # define GLXEW_CONTEXT_ARG_DEF_LIST void
#endif /* GLEW_MX */ #endif /* GLEW_MX */

View File

@ -65,6 +65,8 @@ GLenum GLEWAPIENTRY glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
const GLubyte* extStart; const GLubyte* extStart;
const GLubyte* extEnd; const GLubyte* extEnd;
GLint numExts, ext; GLint numExts, ext;
GLint context_flags = 0;
GLint context_profile = GL_CONTEXT_COMPATIBILITY_PROFILE_BIT;
/* query opengl version */ /* query opengl version */
if (!glewGetVersion(&major, &minor)) if (!glewGetVersion(&major, &minor))
@ -96,4 +98,11 @@ GLenum GLEWAPIENTRY glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
GLEW_VERSION_1_1 = GLEW_VERSION_1_2 == GL_TRUE || ( major == 1 && minor >= 1 ) ? GL_TRUE : GL_FALSE; GLEW_VERSION_1_1 = GLEW_VERSION_1_2 == GL_TRUE || ( major == 1 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
} }
if( GLEW_VERSION_3_0 )
glGetIntegerv(GL_CONTEXT_FLAGS, &context_flags);
if( GLEW_VERSION_3_2 )
glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &context_profile);
else if( GLEW_VERSION_3_1 && !glewGetExtension("GL_ARB_compatibility"))
context_profile = GL_CONTEXT_CORE_PROFILE_BIT;
/* initialize core functions */ /* initialize core functions */

View File

@ -21,6 +21,8 @@ GLenum glxewInit (GLXEW_CONTEXT_ARG_DEF_LIST)
int major, minor; int major, minor;
const GLubyte* extStart; const GLubyte* extStart;
const GLubyte* extEnd; const GLubyte* extEnd;
GLint context_profile = 0, context_flags = 0;
/* initialize core GLX 1.2 */ /* initialize core GLX 1.2 */
if (_glewInit_GLX_VERSION_1_2(GLEW_CONTEXT_ARG_VAR_INIT)) return GLEW_ERROR_GLX_VERSION_11_ONLY; if (_glewInit_GLX_VERSION_1_2(GLEW_CONTEXT_ARG_VAR_INIT)) return GLEW_ERROR_GLX_VERSION_11_ONLY;
/* initialize flags */ /* initialize flags */

View File

@ -29,6 +29,8 @@ GLenum GLEWAPIENTRY wglewInit (WGLEW_CONTEXT_ARG_DEF_LIST)
GLboolean crippled; GLboolean crippled;
const GLubyte* extStart; const GLubyte* extStart;
const GLubyte* extEnd; const GLubyte* extEnd;
GLint context_profile = 0, context_flags = 0;
/* find wgl extension string query functions */ /* find wgl extension string query functions */
_wglewGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringARB"); _wglewGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringARB");
_wglewGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringEXT"); _wglewGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringEXT");