From: José Fonseca Date: Mon, 10 Dec 2012 17:11:36 +0000 (+0000) Subject: glretrace: Remove the gpu/cpu time syncing code. X-Git-Url: https://git.cworth.org/git?p=apitrace;a=commitdiff_plain;h=4cc4c483e889a239c784f26ee461dad58db732a1 glretrace: Remove the gpu/cpu time syncing code. No longer necessary now that we use the same clock (GL_TIMESTAMP) for both GPU and CPU time measurements. --- diff --git a/retrace/glretrace_main.cpp b/retrace/glretrace_main.cpp index b8ef262..d0298fc 100755 --- a/retrace/glretrace_main.cpp +++ b/retrace/glretrace_main.cpp @@ -137,31 +137,6 @@ getTimeFrequency(void) { } } -static void -getCurrentTimes(int64_t& cpuTime, int64_t& gpuTime) { - GLuint query = 0; - - if (retrace::profilingGpuTimes && supportsTimestamp) { - glGenQueries(1, &query); - glQueryCounter(query, GL_TIMESTAMP); - GLint64 timestamp = 0; - glGetQueryObjecti64vEXT(query, GL_QUERY_RESULT, ×tamp); - gpuTime = timestamp; - } else { - gpuTime = 0; - } - - if (retrace::profilingCpuTimes) { - cpuTime = getCurrentTime(); - } else { - cpuTime = 0; - } - - if (retrace::profilingGpuTimes && supportsTimestamp) { - glDeleteQueries(1, &query); - } -} - static void completeCallQuery(CallQuery& query) { /* Get call start and duration */ @@ -307,11 +282,9 @@ initContext() { /* Sync the gpu and cpu start times */ if (retrace::profilingCpuTimes || retrace::profilingGpuTimes) { if (!retrace::profiler.hasBaseTimes()) { - GLint64 gpuTime, cpuTime; - - getCurrentTimes(cpuTime, gpuTime); - retrace::profiler.setBaseCpuTime(cpuTime); - retrace::profiler.setBaseGpuTime(gpuTime); + GLint64 currentTime = getCurrentTime(); + retrace::profiler.setBaseCpuTime(currentTime); + retrace::profiler.setBaseGpuTime(currentTime); } } } @@ -322,26 +295,6 @@ frame_complete(trace::Call &call) { /* Complete any remaining queries */ flushQueries(); - /* GPU time drifts due to being relative times, not absolute and can be - * affected by the gpu switch between processes. - * - * To attempt to compensate we resynchronise on frame end however there is - * still noticeable drift within a single frame which we do not account for. - */ - if (retrace::profilingCpuTimes || retrace::profilingGpuTimes) { - int64_t cpuTime, gpuTime, error; - - getCurrentTimes(cpuTime, gpuTime); - cpuTime = cpuTime - retrace::profiler.getBaseCpuTime(); - gpuTime = gpuTime - retrace::profiler.getBaseGpuTime(); - error = gpuTime - cpuTime * (1.0E9 / getTimeFrequency()); - std::cerr << "error = " << error << "\n"; - - if (0) { - retrace::profiler.setBaseGpuTime(retrace::profiler.getBaseGpuTime() + error); - } - } - /* Indicate end of current frame */ retrace::profiler.addFrameEnd(); }