mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-07-11 01:25:07 +02:00
OpenGL: Add timer query extension detection
Add detection for GL_EXT_disjoint_timer_query (OpenGL ES) and GL_ARB_timer_query (desktop GL) extensions. These extensions provide GPU timestamp queries for profiling render pass durations. Also adds function pointer declarations for glQueryCounter, glGetQueryObjecti64v, and glGetQueryObjectui64v. Signed-off-by: Chris Healy <cphealy@gmail.com>
This commit is contained in:
@@ -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__)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user