- // create glx context\r
- context = glXCreateNewContext((Display*)CurrentContext.OpenGLLinux.X11Display, (GLXFBConfig)glxFBConfig, GLX_RGBA_TYPE, NULL, True);\r
+#if defined(GLX_ARB_create_context)\r
+\r
+#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
+ PFNGLXCREATECONTEXTATTRIBSARBPROC glxCreateContextAttribsARB=(PFNGLXCREATECONTEXTATTRIBSARBPROC)glXGetProcAddress(reinterpret_cast<const GLubyte*>("glXCreateContextAttribsARB"));\r
+#else\r
+ PFNGLXCREATECONTEXTATTRIBSARBPROC glxCreateContextAttribsARB=glXCreateContextAttribsARB;\r
+#endif\r
+\r
+ if (glxCreateContextAttribsARB)\r
+ {\r
+ os::Printer::log("GLX with GLX_ARB_create_context", ELL_DEBUG);\r
+ int contextAttrBuffer[] = {\r
+ GLX_CONTEXT_MAJOR_VERSION_ARB, 3,\r
+ GLX_CONTEXT_MINOR_VERSION_ARB, 0,\r
+ // GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB,\r
+ None\r
+ };\r
+ XErrorHandler old = XSetErrorHandler(IrrIgnoreError);\r
+ context = glxCreateContextAttribsARB((Display*)CurrentContext.OpenGLLinux.X11Display, (GLXFBConfig)glxFBConfig, NULL, True, contextAttrBuffer);\r
+ XSetErrorHandler(old);\r
+ // transparently fall back to legacy call\r
+ }\r