Chromium Code Reviews| Index: tools/timer/GpuTimer.cpp |
| diff --git a/bench/BenchGpuTimer_gl.cpp b/tools/timer/GpuTimer.cpp |
| similarity index 59% |
| rename from bench/BenchGpuTimer_gl.cpp |
| rename to tools/timer/GpuTimer.cpp |
| index 349fc1529de6ac32754950f20c1ab5bd6037ecb2..aac10a3b0796b82b93e23ff2c80fc4c49d5de749 100644 |
| --- a/bench/BenchGpuTimer_gl.cpp |
| +++ b/tools/timer/GpuTimer.cpp |
| @@ -5,34 +5,37 @@ |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| -#include "BenchGpuTimer_gl.h" |
| +#include "GpuTimer.h" |
| #include "gl/SkGLContextHelper.h" |
| #include "gl/GrGLUtil.h" |
| -BenchGpuTimer::BenchGpuTimer(const SkGLContextHelper* glctx) { |
| - fContext = glctx; |
| - glctx->ref(); |
| - glctx->makeCurrent(); |
| - fStarted = false; |
| - fSupported = GrGLGetVersion(glctx->gl()) > GR_GL_VER(3,3) || |
| - glctx->hasExtension("GL_ARB_timer_query") || |
| - glctx->hasExtension("GL_EXT_timer_query"); |
| +GpuTimer::GpuTimer(const SkGLContextHelper* glctx) : fContext(glctx) { |
| + if (fContext) { |
|
tfarina
2014/06/20 18:05:58
if glctx is NULL, aren't we going to leaving fStar
tfarina
2014/06/20 18:06:40
s/leaving/leave
mtklein
2014/06/20 18:08:18
Yes. If fContext is NULL, we'll never touch any o
|
| + fContext->ref(); |
| + fContext->makeCurrent(); |
| + fStarted = false; |
| + fSupported = GrGLGetVersion(fContext->gl()) > GR_GL_VER(3,3) || |
| + fContext->hasExtension("GL_ARB_timer_query") || |
| + fContext->hasExtension("GL_EXT_timer_query"); |
| - if (fSupported) { |
| - SK_GL(*glctx, GenQueries(1, &fQuery)); |
| + if (fSupported) { |
| + SK_GL(*fContext, GenQueries(1, &fQuery)); |
| + } |
| } |
| } |
| -BenchGpuTimer::~BenchGpuTimer() { |
| - if (fSupported) { |
| - fContext->makeCurrent(); |
| - SK_GL(*fContext, DeleteQueries(1, &fQuery)); |
| +GpuTimer::~GpuTimer() { |
| + if (fContext) { |
| + if (fSupported) { |
| + fContext->makeCurrent(); |
| + SK_GL(*fContext, DeleteQueries(1, &fQuery)); |
| + } |
| + fContext->unref(); |
| } |
| - fContext->unref(); |
| } |
| -void BenchGpuTimer::startGpu() { |
| - if (fSupported) { |
| +void GpuTimer::start() { |
| + if (fContext && fSupported) { |
| fContext->makeCurrent(); |
| fStarted = true; |
| SK_GL(*fContext, BeginQuery(GR_GL_TIME_ELAPSED, fQuery)); |
| @@ -43,8 +46,8 @@ void BenchGpuTimer::startGpu() { |
| * It is important to stop the cpu clocks first, |
| * as this will cpu wait for the gpu to finish. |
| */ |
| -double BenchGpuTimer::endGpu() { |
| - if (fSupported) { |
| +double GpuTimer::end() { |
| + if (fContext && fSupported) { |
| fStarted = false; |
| fContext->makeCurrent(); |
| SK_GL(*fContext, EndQuery(GR_GL_TIME_ELAPSED)); |
| @@ -52,8 +55,8 @@ double BenchGpuTimer::endGpu() { |
| GrGLint available = 0; |
| while (!available) { |
| SK_GL_NOERRCHECK(*fContext, GetQueryObjectiv(fQuery, |
| - GR_GL_QUERY_RESULT_AVAILABLE, |
| - &available)); |
| + GR_GL_QUERY_RESULT_AVAILABLE, |
| + &available)); |
| // If GetQueryObjectiv is erroring out we need some alternative |
| // means of breaking out of this loop |
| GrGLenum error; |