From ea7627351898b9ae270d3113399b4eb9c4e51bbd Mon Sep 17 00:00:00 2001 From: James Benton Date: Mon, 6 Aug 2012 16:05:58 +0100 Subject: [PATCH] Check GL_QUERY_COUNTER_BITS before profiling. --- retrace/glretrace_main.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/retrace/glretrace_main.cpp b/retrace/glretrace_main.cpp index 3199763..cbfc67f 100644 --- a/retrace/glretrace_main.cpp +++ b/retrace/glretrace_main.cpp @@ -181,14 +181,24 @@ beginProfile(trace::Call &call) { if (firstFrame) { /* Check for extension support */ const char* extensions = (const char*)glGetString(GL_EXTENSIONS); + GLint bits; supportsTimestamp = glws::checkExtension("GL_ARB_timer_query", extensions); supportsElapsed = glws::checkExtension("GL_EXT_timer_query", extensions) || supportsTimestamp; supportsOcclusion = glws::checkExtension("GL_ARB_occlusion_query", extensions); - if (retrace::profilingGpuTimes && !supportsTimestamp && !supportsElapsed) { - std::cout << "Error: Cannot run profile, GL_EXT_timer_query extension is not supported." << std::endl; - exit(-1); + if (retrace::profilingGpuTimes) { + if (!supportsTimestamp && !supportsElapsed) { + std::cout << "Error: Cannot run profile, GL_EXT_timer_query extension is not supported." << std::endl; + exit(-1); + } + + glGetQueryiv(GL_TIME_ELAPSED, GL_QUERY_COUNTER_BITS, &bits); + + if (!bits) { + std::cout << "Error: Cannot run profile, GL_QUERY_COUNTER_BITS == 0." << std::endl; + exit(-1); + } } if (retrace::profilingPixelsDrawn && !supportsOcclusion) { -- 2.43.0