OGL32CTX: Request a 3.0 backward compatible context in linux.
This allows to enable ARB_DEBUG_OUTPUT extension. git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@14924 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
d44c28ca9e
commit
8a33f14da5
@ -724,8 +724,23 @@ bool CIrrDeviceLinux::createWindow()
|
||||
glxWin=glXCreateWindow(display,glxFBConfig,window,NULL);
|
||||
if (glxWin)
|
||||
{
|
||||
int context_attribs[] =
|
||||
{
|
||||
GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
|
||||
GLX_CONTEXT_MINOR_VERSION_ARB, 0,
|
||||
// Uncomment to discard deprecated features
|
||||
//GLX_CONTEXT_FLAGS_ARB , GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB,
|
||||
#if DEBUG
|
||||
GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_DEBUG_BIT_ARB,
|
||||
#endif
|
||||
None
|
||||
};
|
||||
|
||||
PFNGLXCREATECONTEXTATTRIBSARBPROC glXCreateContextAttribsARB = 0;
|
||||
glXCreateContextAttribsARB = (PFNGLXCREATECONTEXTATTRIBSARBPROC)
|
||||
glXGetProcAddressARB( (const GLubyte *) "glXCreateContextAttribsARB" );
|
||||
// create glx context
|
||||
Context = glXCreateNewContext(display, glxFBConfig, GLX_RGBA_TYPE, NULL, True);
|
||||
Context = glXCreateContextAttribsARB(display, glxFBConfig, 0, True, context_attribs);
|
||||
if (Context)
|
||||
{
|
||||
if (!glXMakeContextCurrent(display, glxWin, glxWin, Context))
|
||||
|
@ -22,6 +22,7 @@
|
||||
#define GLX_GLXEXT_LEGACY 1
|
||||
#include <GL/glx.h>
|
||||
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
|
||||
#define GLX_GLXEXT_PROTOTYPES
|
||||
#include "glxext.h"
|
||||
#endif
|
||||
#endif
|
||||
|
@ -49,6 +49,69 @@ PFNGLDELETEBUFFERSPROC glDeleteBuffers;
|
||||
static GLuint quad_buffer;
|
||||
static bool is_gl_init = false;
|
||||
|
||||
static
|
||||
void debugCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length,
|
||||
const GLchar* msg, const void *userparam)
|
||||
{
|
||||
switch(source)
|
||||
{
|
||||
case GL_DEBUG_SOURCE_API_ARB:
|
||||
printf("[API]");
|
||||
break;
|
||||
case GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB:
|
||||
printf("[WINDOW_SYSTEM]");
|
||||
break;
|
||||
case GL_DEBUG_SOURCE_SHADER_COMPILER_ARB:
|
||||
printf("[SHADER_COMPILER]");
|
||||
break;
|
||||
case GL_DEBUG_SOURCE_THIRD_PARTY_ARB:
|
||||
printf("[THIRD_PARTY]");
|
||||
break;
|
||||
case GL_DEBUG_SOURCE_APPLICATION_ARB:
|
||||
printf("[APPLICATION]");
|
||||
break;
|
||||
case GL_DEBUG_SOURCE_OTHER_ARB:
|
||||
printf("[OTHER]");
|
||||
break;
|
||||
}
|
||||
|
||||
switch(type)
|
||||
{
|
||||
case GL_DEBUG_TYPE_ERROR_ARB:
|
||||
printf("[ERROR]");
|
||||
break;
|
||||
case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB:
|
||||
printf("[DEPRECATED_BEHAVIOR]");
|
||||
break;
|
||||
case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB:
|
||||
printf("[UNDEFINED_BEHAVIOR]");
|
||||
break;
|
||||
case GL_DEBUG_TYPE_PORTABILITY_ARB:
|
||||
printf("[PORTABILITY]");
|
||||
break;
|
||||
case GL_DEBUG_TYPE_PERFORMANCE_ARB:
|
||||
printf("[PERFORMANCE]");
|
||||
break;
|
||||
case GL_DEBUG_TYPE_OTHER_ARB:
|
||||
printf("[OTHER]");
|
||||
break;
|
||||
}
|
||||
|
||||
switch(severity)
|
||||
{
|
||||
case GL_DEBUG_SEVERITY_HIGH_ARB:
|
||||
printf("[HIGH]");
|
||||
break;
|
||||
case GL_DEBUG_SEVERITY_MEDIUM_ARB:
|
||||
printf("[MEDIUM]");
|
||||
break;
|
||||
case GL_DEBUG_SEVERITY_LOW_ARB:
|
||||
printf("[LOW]");
|
||||
break;
|
||||
}
|
||||
printf("%s\n", msg);
|
||||
}
|
||||
|
||||
void initGL()
|
||||
{
|
||||
if (is_gl_init)
|
||||
@ -94,6 +157,9 @@ void initGL()
|
||||
glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)IRR_OGL_LOAD_EXTENSION("glVertexAttribDivisor");
|
||||
glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)IRR_OGL_LOAD_EXTENSION("glDrawArraysInstanced");
|
||||
glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)IRR_OGL_LOAD_EXTENSION("glDeleteBuffers");
|
||||
#endif
|
||||
#if DEBUG
|
||||
glDebugMessageCallbackARB(debugCallback, NULL);
|
||||
#endif
|
||||
const float quad_vertex[] = {
|
||||
-1., -1., -1., 1., // UpperLeft
|
||||
|
Loading…
x
Reference in New Issue
Block a user