mirror of
https://github.com/izzy2lost/dolphin.git
synced 2026-06-19 01:16:48 -07:00
[GLExtensions] KHR_debug on OpenGL ES 3 has a KHR suffix on their function pointers. In Desktop OpenGL there is no suffix. So handle this correctly. Make the GrabFunction macro slightly less evil, so update the init_* to reflect it. Thanks Bh44L for the suggestion.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -4,70 +4,72 @@
|
||||
|
||||
#include "gl_common.h"
|
||||
|
||||
typedef void (GLAPIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void
|
||||
*userParam);
|
||||
#define GL_SAMPLER 0x82E6
|
||||
#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242
|
||||
#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243
|
||||
#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244
|
||||
#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245
|
||||
#define GL_DEBUG_SOURCE_API_KHR 0x8246
|
||||
#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247
|
||||
#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248
|
||||
#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249
|
||||
#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A
|
||||
#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B
|
||||
#define GL_DEBUG_TYPE_ERROR_KHR 0x824C
|
||||
#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D
|
||||
#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E
|
||||
#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F
|
||||
#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250
|
||||
#define GL_DEBUG_TYPE_OTHER_KHR 0x8251
|
||||
#define GL_DEBUG_TYPE_MARKER_KHR 0x8268
|
||||
#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269
|
||||
#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A
|
||||
#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B
|
||||
#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C
|
||||
#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D
|
||||
#define GL_BUFFER_KHR 0x82E0
|
||||
#define GL_SHADER_KHR 0x82E1
|
||||
#define GL_PROGRAM_KHR 0x82E2
|
||||
#define GL_VERTEX_ARRAY_KHR 0x8074
|
||||
#define GL_QUERY_KHR 0x82E3
|
||||
#define GL_SAMPLER_KHR 0x82E6
|
||||
#define GL_MAX_LABEL_LENGTH_KHR 0x82E8
|
||||
#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143
|
||||
#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144
|
||||
#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145
|
||||
#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146
|
||||
#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147
|
||||
#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148
|
||||
#define GL_DEBUG_OUTPUT_KHR 0x92E0
|
||||
#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002
|
||||
#define GL_STACK_OVERFLOW_KHR 0x0503
|
||||
#define GL_STACK_UNDERFLOW_KHR 0x0504
|
||||
#ifndef GL_VERSION_4_3
|
||||
|
||||
typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
|
||||
typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
|
||||
typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam);
|
||||
typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
|
||||
typedef void (GLAPIENTRY * PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message);
|
||||
typedef void (GLAPIENTRY * PFNGLPOPDEBUGGROUPKHRPROC) (void);
|
||||
typedef void (GLAPIENTRY * PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
|
||||
typedef void (GLAPIENTRY * PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
|
||||
typedef void (GLAPIENTRY * PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label);
|
||||
typedef void (GLAPIENTRY * PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
|
||||
typedef void (GLAPIENTRY * PFNGLGETPOINTERVKHRPROC) (GLenum pname, void **params);
|
||||
#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002
|
||||
#define GL_STACK_OVERFLOW 0x0503
|
||||
#define GL_STACK_UNDERFLOW 0x0504
|
||||
#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
|
||||
#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
|
||||
#define GL_DEBUG_CALLBACK_FUNCTION 0x8244
|
||||
#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245
|
||||
#define GL_DEBUG_SOURCE_API 0x8246
|
||||
#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247
|
||||
#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248
|
||||
#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249
|
||||
#define GL_DEBUG_SOURCE_APPLICATION 0x824A
|
||||
#define GL_DEBUG_SOURCE_OTHER 0x824B
|
||||
#define GL_DEBUG_TYPE_ERROR 0x824C
|
||||
#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
|
||||
#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
|
||||
#define GL_DEBUG_TYPE_PORTABILITY 0x824F
|
||||
#define GL_DEBUG_TYPE_PERFORMANCE 0x8250
|
||||
#define GL_DEBUG_TYPE_OTHER 0x8251
|
||||
#define GL_DEBUG_TYPE_MARKER 0x8268
|
||||
#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269
|
||||
#define GL_DEBUG_TYPE_POP_GROUP 0x826A
|
||||
#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B
|
||||
#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C
|
||||
#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D
|
||||
#define GL_BUFFER 0x82E0
|
||||
#define GL_SHADER 0x82E1
|
||||
#define GL_PROGRAM 0x82E2
|
||||
#define GL_QUERY 0x82E3
|
||||
#define GL_PROGRAM_PIPELINE 0x82E4
|
||||
#define GL_SAMPLER 0x82E6
|
||||
#define GL_DISPLAY_LIST 0x82E7
|
||||
#define GL_MAX_LABEL_LENGTH 0x82E8
|
||||
#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143
|
||||
#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144
|
||||
#define GL_DEBUG_LOGGED_MESSAGES 0x9145
|
||||
#define GL_DEBUG_SEVERITY_HIGH 0x9146
|
||||
#define GL_DEBUG_SEVERITY_MEDIUM 0x9147
|
||||
#define GL_DEBUG_SEVERITY_LOW 0x9148
|
||||
#define GL_DEBUG_OUTPUT 0x92E0
|
||||
|
||||
extern PFNGLDEBUGMESSAGECONTROLKHRPROC glDebugMessageControlKHR;
|
||||
extern PFNGLDEBUGMESSAGEINSERTKHRPROC glDebugMessageInsertKHR;
|
||||
extern PFNGLDEBUGMESSAGECALLBACKKHRPROC glDebugMessageCallbackKHR;
|
||||
extern PFNGLGETDEBUGMESSAGELOGKHRPROC glGetDebugMessageLogKHR;
|
||||
extern PFNGLPUSHDEBUGGROUPKHRPROC glPushDebugGroupKHR;
|
||||
extern PFNGLPOPDEBUGGROUPKHRPROC glPopDebugGroupKHR;
|
||||
extern PFNGLOBJECTLABELKHRPROC glObjectLabelKHR;
|
||||
extern PFNGLGETOBJECTLABELKHRPROC glGetObjectLabelKHR;
|
||||
extern PFNGLOBJECTPTRLABELKHRPROC glObjectPtrLabelKHR;
|
||||
extern PFNGLGETOBJECTPTRLABELKHRPROC glGetObjectPtrLabelKHR;
|
||||
extern PFNGLGETPOINTERVKHRPROC glGetPointervKHR;
|
||||
typedef void (APIENTRY *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam);
|
||||
|
||||
typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const GLvoid *userParam);
|
||||
typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled);
|
||||
typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf);
|
||||
typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog);
|
||||
typedef void (GLAPIENTRY * PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar *label);
|
||||
typedef void (GLAPIENTRY * PFNGLGETOBJECTPTRLABELPROC) (void* ptr, GLsizei bufSize, GLsizei* length, GLchar *label);
|
||||
typedef void (GLAPIENTRY * PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar* label);
|
||||
typedef void (GLAPIENTRY * PFNGLOBJECTPTRLABELPROC) (void* ptr, GLsizei length, const GLchar* label);
|
||||
typedef void (GLAPIENTRY * PFNGLPOPDEBUGGROUPPROC) (void);
|
||||
typedef void (GLAPIENTRY * PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar * message);
|
||||
|
||||
#endif
|
||||
|
||||
extern PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback;
|
||||
extern PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl;
|
||||
extern PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert;
|
||||
extern PFNGLGETDEBUGMESSAGELOGPROC glGetDebugMessageLog;
|
||||
extern PFNGLGETOBJECTLABELPROC glGetObjectLabel;
|
||||
extern PFNGLGETOBJECTPTRLABELPROC glGetObjectPtrLabel;
|
||||
extern PFNGLOBJECTLABELPROC glObjectLabel;
|
||||
extern PFNGLOBJECTPTRLABELPROC glObjectPtrLabel;
|
||||
extern PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
|
||||
extern PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup;
|
||||
|
||||
|
||||
@@ -486,9 +486,9 @@ Renderer::Renderer()
|
||||
#if defined(_DEBUG) || defined(DEBUGFAST)
|
||||
if (GLExtensions::Supports("GL_KHR_debug"))
|
||||
{
|
||||
glDebugMessageControlKHR(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, NULL, true);
|
||||
glDebugMessageCallbackKHR( ErrorCallback, NULL );
|
||||
glEnable( GL_DEBUG_OUTPUT_KHR );
|
||||
glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, NULL, true);
|
||||
glDebugMessageCallback( ErrorCallback, NULL );
|
||||
glEnable( GL_DEBUG_OUTPUT );
|
||||
}
|
||||
else if (GLExtensions::Supports("GL_ARB_debug_output"))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user