diff --git a/Common/GPU/OpenGL/GLFeatures.cpp b/Common/GPU/OpenGL/GLFeatures.cpp index bfaeef3631..0c4137cffe 100644 --- a/Common/GPU/OpenGL/GLFeatures.cpp +++ b/Common/GPU/OpenGL/GLFeatures.cpp @@ -384,6 +384,7 @@ bool CheckGLExtensions() { gl_extensions.ARB_explicit_attrib_location = g_set_gl_extensions.count("GL_ARB_explicit_attrib_location") != 0; gl_extensions.ARB_texture_non_power_of_two = g_set_gl_extensions.count("GL_ARB_texture_non_power_of_two") != 0; gl_extensions.ARB_shader_stencil_export = g_set_gl_extensions.count("GL_ARB_shader_stencil_export") != 0; + gl_extensions.ARB_timer_query = g_set_gl_extensions.count("GL_ARB_timer_query") != 0; gl_extensions.ARB_texture_compression_bptc = g_set_gl_extensions.count("GL_ARB_texture_compression_bptc") != 0; gl_extensions.ARB_texture_compression_rgtc = g_set_gl_extensions.count("GL_ARB_texture_compression_rgtc") != 0; gl_extensions.KHR_texture_compression_astc_ldr = g_set_gl_extensions.count("GL_KHR_texture_compression_astc_ldr") != 0; @@ -406,6 +407,7 @@ bool CheckGLExtensions() { gl_extensions.EXT_buffer_storage = g_set_gl_extensions.count("GL_EXT_buffer_storage") != 0; gl_extensions.EXT_clip_cull_distance = g_set_gl_extensions.count("GL_EXT_clip_cull_distance") != 0; gl_extensions.EXT_depth_clamp = g_set_gl_extensions.count("GL_EXT_depth_clamp") != 0; + gl_extensions.EXT_disjoint_timer_query = g_set_gl_extensions.count("GL_EXT_disjoint_timer_query") != 0; gl_extensions.APPLE_clip_distance = g_set_gl_extensions.count("GL_APPLE_clip_distance") != 0; #if defined(__ANDROID__) diff --git a/Common/GPU/OpenGL/GLFeatures.h b/Common/GPU/OpenGL/GLFeatures.h index acd6cd75bf..bdcfa4565a 100644 --- a/Common/GPU/OpenGL/GLFeatures.h +++ b/Common/GPU/OpenGL/GLFeatures.h @@ -86,6 +86,8 @@ struct GLExtensions { bool KHR_texture_compression_astc_ldr; // EXT + bool EXT_disjoint_timer_query; + bool ARB_timer_query; bool EXT_texture_compression_s3tc; bool EXT_swap_control_tear; bool EXT_discard_framebuffer; diff --git a/Common/GPU/OpenGL/gl3stub.c b/Common/GPU/OpenGL/gl3stub.c index 1caf54b685..9f47314c35 100644 --- a/Common/GPU/OpenGL/gl3stub.c +++ b/Common/GPU/OpenGL/gl3stub.c @@ -38,6 +38,10 @@ GLboolean gl3stubInit() { FIND_PROC(glEndQuery); FIND_PROC(glGetQueryiv); FIND_PROC(glGetQueryObjectuiv); + // GL_EXT_disjoint_timer_query - load EXT suffix versions into non-suffix pointers + glQueryCounter = (void*)eglGetProcAddress("glQueryCounterEXT"); + glGetQueryObjecti64v = (void*)eglGetProcAddress("glGetQueryObjecti64vEXT"); + glGetQueryObjectui64v = (void*)eglGetProcAddress("glGetQueryObjectui64vEXT"); FIND_PROC(glUnmapBuffer); FIND_PROC(glGetBufferPointerv); FIND_PROC(glDrawBuffers); @@ -271,6 +275,10 @@ GL_APICALL void (* GL_APIENTRY glBeginQuery) (GLenum target, GLuint id GL_APICALL void (* GL_APIENTRY glEndQuery) (GLenum target); GL_APICALL void (* GL_APIENTRY glGetQueryiv) (GLenum target, GLenum pname, GLint* params); GL_APICALL void (* GL_APIENTRY glGetQueryObjectuiv) (GLuint id, GLenum pname, GLuint* params); +// GL_EXT_disjoint_timer_query / GL_ARB_timer_query +GL_APICALL void (* GL_APIENTRY glQueryCounter) (GLuint id, GLenum target); +GL_APICALL void (* GL_APIENTRY glGetQueryObjecti64v) (GLuint id, GLenum pname, GLint64* params); +GL_APICALL void (* GL_APIENTRY glGetQueryObjectui64v) (GLuint id, GLenum pname, GLuint64* params); GL_APICALL GLboolean (* GL_APIENTRY glUnmapBuffer) (GLenum target); GL_APICALL void (* GL_APIENTRY glGetBufferPointerv) (GLenum target, GLenum pname, GLvoid** params); GL_APICALL void (* GL_APIENTRY glDrawBuffers) (GLsizei n, const GLenum* bufs); diff --git a/Common/GPU/OpenGL/gl3stub.h b/Common/GPU/OpenGL/gl3stub.h index ba99aec6b2..70f0217f77 100644 --- a/Common/GPU/OpenGL/gl3stub.h +++ b/Common/GPU/OpenGL/gl3stub.h @@ -409,6 +409,10 @@ extern GL_APICALL void (* GL_APIENTRY glBeginQuery) (GLenum target, GL extern GL_APICALL void (* GL_APIENTRY glEndQuery) (GLenum target); extern GL_APICALL void (* GL_APIENTRY glGetQueryiv) (GLenum target, GLenum pname, GLint* params); extern GL_APICALL void (* GL_APIENTRY glGetQueryObjectuiv) (GLuint id, GLenum pname, GLuint* params); +// GL_EXT_disjoint_timer_query / GL_ARB_timer_query +extern GL_APICALL void (* GL_APIENTRY glQueryCounter) (GLuint id, GLenum target); +extern GL_APICALL void (* GL_APIENTRY glGetQueryObjecti64v) (GLuint id, GLenum pname, GLint64* params); +extern GL_APICALL void (* GL_APIENTRY glGetQueryObjectui64v) (GLuint id, GLenum pname, GLuint64* params); extern GL_APICALL GLboolean (* GL_APIENTRY glUnmapBuffer) (GLenum target); extern GL_APICALL void (* GL_APIENTRY glGetBufferPointerv) (GLenum target, GLenum pname, GLvoid** params); extern GL_APICALL void (* GL_APIENTRY glDrawBuffers) (GLsizei n, const GLenum* bufs);