mirror of https://github.com/PCSX2/pcsx2.git
gsdx-ogl: use only core debug extension
There are 2 extensions GL_ARB_debug_output (promoted from amd extension) and GL_KHR_debug (the core extension, promoted from GL_ARB_debug_output) As we use the callback we could drop the manual query of errors. And save us the load of the GL_ARB_debug_output extension function pointer.
This commit is contained in:
parent
cd333c2c94
commit
8cd6f4375e
|
@ -202,7 +202,7 @@ typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEPROC) (GLuint texture, GLint level,
|
|||
// #define ENABLE_GL_ARB_bindless_texture 1
|
||||
// #define ENABLE_GL_ARB_cl_event 1
|
||||
// #define ENABLE_GL_ARB_compute_variable_group_size 1
|
||||
#define ENABLE_GL_ARB_debug_output 1
|
||||
// #define ENABLE_GL_ARB_debug_output 1
|
||||
// #define ENABLE_GL_ARB_draw_buffers_blend 1
|
||||
// #define ENABLE_GL_ARB_draw_instanced 1
|
||||
// #define ENABLE_GL_ARB_geometry_shader4 1
|
||||
|
|
|
@ -149,10 +149,6 @@ GSDeviceOGL::~GSDeviceOGL()
|
|||
// Must be done after the destruction of all shader/program objects
|
||||
delete m_shader;
|
||||
m_shader = NULL;
|
||||
|
||||
// Purge any pending message to reduce noise in Valgrind (potential memory leak
|
||||
// in Mesa driver that doesn't free internal buffer when the context is destroyed)
|
||||
CheckDebugLog();
|
||||
}
|
||||
|
||||
void GSDeviceOGL::GenerateProfilerData()
|
||||
|
@ -631,10 +627,6 @@ void GSDeviceOGL::SetVSync(int vsync)
|
|||
|
||||
void GSDeviceOGL::Flip()
|
||||
{
|
||||
#ifdef ENABLE_OGL_DEBUG
|
||||
CheckDebugLog();
|
||||
#endif
|
||||
|
||||
m_wnd->Flip();
|
||||
|
||||
if (GLLoader::in_replayer) {
|
||||
|
@ -1891,34 +1883,6 @@ void GSDeviceOGL::SetupOM(OMDepthStencilSelector dssel)
|
|||
OMSetDepthStencilState(m_om_dss[dssel]);
|
||||
}
|
||||
|
||||
void GSDeviceOGL::CheckDebugLog()
|
||||
{
|
||||
if (!m_debug_gl_call) return;
|
||||
|
||||
unsigned int count = 16; // max. num. of messages that will be read from the log
|
||||
int bufsize = 2048;
|
||||
unsigned int sources[16] = {};
|
||||
unsigned int types[16] = {};
|
||||
unsigned int ids[16] = {};
|
||||
unsigned int severities[16] = {};
|
||||
int lengths[16] = {};
|
||||
char* messageLog = new char[bufsize];
|
||||
|
||||
unsigned int retVal = glGetDebugMessageLogARB(count, bufsize, sources, types, ids, severities, lengths, messageLog);
|
||||
|
||||
if(retVal > 0)
|
||||
{
|
||||
unsigned int pos = 0;
|
||||
for(unsigned int i=0; i<retVal; i++)
|
||||
{
|
||||
DebugOutputToFile(sources[i], types[i], ids[i], severities[i], lengths[i], &messageLog[pos], NULL);
|
||||
pos += lengths[i];
|
||||
}
|
||||
}
|
||||
|
||||
delete[] messageLog;
|
||||
}
|
||||
|
||||
// Note: used as a callback of DebugMessageCallback. Don't change the signature
|
||||
void GSDeviceOGL::DebugOutputToFile(GLenum gl_source, GLenum gl_type, GLuint id, GLenum gl_severity, GLsizei gl_length, const GLchar *gl_message, const void* userParam)
|
||||
{
|
||||
|
|
|
@ -513,7 +513,6 @@ public:
|
|||
|
||||
void GenerateProfilerData();
|
||||
|
||||
static void CheckDebugLog();
|
||||
// Used by OpenGL, so the same calling convention is required.
|
||||
static void APIENTRY DebugOutputToFile(GLenum gl_source, GLenum gl_type, GLuint id, GLenum gl_severity, GLsizei gl_length, const GLchar *gl_message, const void* userParam);
|
||||
|
||||
|
|
Loading…
Reference in New Issue