0

gpu: Cleanup callback types (part 3).

Remove usage of deprecated base::Bind, base::Callback, base::Closure,
base::CancelableCallback and base::CancelableClosure types from gpu/*
services/ws/public/gpu/* and ui/gl/*. Where possible convert to the
corresponding once type. Otherwise replace with the repeating type which
is equivalent to the deprecated type.

Bug: 714018
Change-Id: If1bf4a30616d746e3c422fdb2644e48798896336
Reviewed-on: https://chromium-review.googlesource.com/c/1450537
Reviewed-by: Jonathan Backer <backer@chromium.org>
Commit-Queue: kylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#628856}
This commit is contained in:
kylechar
2019-02-04 20:20:17 +00:00
committed by Commit Bot
parent 17be2fb0a0
commit 43c97733ab
12 changed files with 74 additions and 69 deletions

@@ -53,7 +53,7 @@ class GPUTracerTester : public GPUTracer {
public: public:
explicit GPUTracerTester(GLES2Decoder* decoder) explicit GPUTracerTester(GLES2Decoder* decoder)
: GPUTracer(decoder), tracing_enabled_(0) { : GPUTracer(decoder), tracing_enabled_(0) {
gpu_timing_client_->SetCpuTimeForTesting(base::Bind(&FakeCpuTime)); gpu_timing_client_->SetCpuTimeForTesting(base::BindRepeating(&FakeCpuTime));
// Force tracing to be dependent on our mock variable here. // Force tracing to be dependent on our mock variable here.
gpu_trace_srv_category = &tracing_enabled_; gpu_trace_srv_category = &tracing_enabled_;
@@ -100,7 +100,7 @@ class BaseGpuTest : public GpuServiceTest {
gl_fake_queries_.ExpectNoDisjointCalls(*gl_); gl_fake_queries_.ExpectNoDisjointCalls(*gl_);
gpu_timing_client_ = GetGLContext()->CreateGPUTimingClient(); gpu_timing_client_ = GetGLContext()->CreateGPUTimingClient();
gpu_timing_client_->SetCpuTimeForTesting(base::Bind(&FakeCpuTime)); gpu_timing_client_->SetCpuTimeForTesting(base::BindRepeating(&FakeCpuTime));
gl_fake_queries_.Reset(); gl_fake_queries_.Reset();
} }

@@ -562,7 +562,7 @@ TEST_F(QueryManagerTest, TimeElapsedQuery) {
const base::subtle::Atomic32 kSubmitCount = 123; const base::subtle::Atomic32 kSubmitCount = 123;
gl::GPUTimingFake fake_timing_queries; gl::GPUTimingFake fake_timing_queries;
decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting( decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting(
base::Bind(&gl::GPUTimingFake::GetFakeCPUTime)); base::BindRepeating(&gl::GPUTimingFake::GetFakeCPUTime));
QueryManager::Query* query = CreateQuery( QueryManager::Query* query = CreateQuery(
kTarget, kClient1Id, shared_memory_id_, kSharedMemoryOffset, 0); kTarget, kClient1Id, shared_memory_id_, kSharedMemoryOffset, 0);
@@ -594,7 +594,7 @@ TEST_F(QueryManagerTest, TimeElapsedPauseResume) {
const base::subtle::Atomic32 kSubmitCount = 123; const base::subtle::Atomic32 kSubmitCount = 123;
gl::GPUTimingFake fake_timing_queries; gl::GPUTimingFake fake_timing_queries;
decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting( decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting(
base::Bind(&gl::GPUTimingFake::GetFakeCPUTime)); base::BindRepeating(&gl::GPUTimingFake::GetFakeCPUTime));
QueryManager::Query* query = CreateQuery( QueryManager::Query* query = CreateQuery(
kTarget, kClient1Id, shared_memory_id_, kSharedMemoryOffset, 0); kTarget, kClient1Id, shared_memory_id_, kSharedMemoryOffset, 0);
@@ -699,7 +699,7 @@ TEST_F(QueryManagerTest, TimeStampQuery) {
gl::GPUTimingFake fake_timing_queries; gl::GPUTimingFake fake_timing_queries;
decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting( decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting(
base::Bind(&gl::GPUTimingFake::GetFakeCPUTime)); base::BindRepeating(&gl::GPUTimingFake::GetFakeCPUTime));
QueryManager::Query* query = CreateQuery( QueryManager::Query* query = CreateQuery(
kTarget, kClient1Id, shared_memory_id_, kSharedMemoryOffset, 0); kTarget, kClient1Id, shared_memory_id_, kSharedMemoryOffset, 0);
@@ -726,7 +726,7 @@ TEST_F(QueryManagerTest, TimeStampQueryPending) {
gl::GPUTimingFake fake_timing_queries; gl::GPUTimingFake fake_timing_queries;
decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting( decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting(
base::Bind(&gl::GPUTimingFake::GetFakeCPUTime)); base::BindRepeating(&gl::GPUTimingFake::GetFakeCPUTime));
QueryManager::Query* query = CreateQuery( QueryManager::Query* query = CreateQuery(
kTarget, kClient1Id, shared_memory_id_, kSharedMemoryOffset, 0); kTarget, kClient1Id, shared_memory_id_, kSharedMemoryOffset, 0);

@@ -263,8 +263,8 @@ int ShaderDiskCacheEntry::WriteCallback(int rv) {
op_type_ = WRITE_DATA; op_type_ = WRITE_DATA;
auto io_buf = base::MakeRefCounted<net::StringIOBuffer>(shader_); auto io_buf = base::MakeRefCounted<net::StringIOBuffer>(shader_);
return entry_->WriteData(1, 0, io_buf.get(), shader_.length(), return entry_->WriteData(1, 0, io_buf.get(), shader_.length(),
base::Bind(&ShaderDiskCacheEntry::OnOpComplete, base::BindOnce(&ShaderDiskCacheEntry::OnOpComplete,
weak_ptr_factory_.GetWeakPtr()), weak_ptr_factory_.GetWeakPtr()),
false); false);
} }
@@ -357,8 +357,8 @@ int ShaderDiskReadHelper::OpenNextEntryComplete(int rv) {
op_type_ = READ_COMPLETE; op_type_ = READ_COMPLETE;
buf_ = base::MakeRefCounted<net::IOBufferWithSize>(entry_->GetDataSize(1)); buf_ = base::MakeRefCounted<net::IOBufferWithSize>(entry_->GetDataSize(1));
return entry_->ReadData(1, 0, buf_.get(), buf_->size(), return entry_->ReadData(1, 0, buf_.get(), buf_->size(),
base::Bind(&ShaderDiskReadHelper::OnOpComplete, base::BindOnce(&ShaderDiskReadHelper::OnOpComplete,
weak_ptr_factory_.GetWeakPtr())); weak_ptr_factory_.GetWeakPtr()));
} }
int ShaderDiskReadHelper::ReadComplete(int rv) { int ShaderDiskReadHelper::ReadComplete(int rv) {
@@ -416,14 +416,15 @@ void ShaderClearHelper::DoClearShaderCache(int rv) {
switch (op_type_) { switch (op_type_) {
case VERIFY_CACHE_SETUP: case VERIFY_CACHE_SETUP:
rv = cache_->SetAvailableCallback( rv = cache_->SetAvailableCallback(
base::Bind(&ShaderClearHelper::DoClearShaderCache, base::BindRepeating(&ShaderClearHelper::DoClearShaderCache,
weak_ptr_factory_.GetWeakPtr())); weak_ptr_factory_.GetWeakPtr()));
op_type_ = DELETE_CACHE; op_type_ = DELETE_CACHE;
break; break;
case DELETE_CACHE: case DELETE_CACHE:
rv = cache_->Clear(delete_begin_, delete_end_, rv = cache_->Clear(
base::Bind(&ShaderClearHelper::DoClearShaderCache, delete_begin_, delete_end_,
weak_ptr_factory_.GetWeakPtr())); base::BindRepeating(&ShaderClearHelper::DoClearShaderCache,
weak_ptr_factory_.GetWeakPtr()));
op_type_ = TERMINATE; op_type_ = TERMINATE;
break; break;
case TERMINATE: case TERMINATE:
@@ -575,7 +576,7 @@ void ShaderDiskCache::Init() {
int rv = disk_cache::CreateCacheBackend( int rv = disk_cache::CreateCacheBackend(
net::SHADER_CACHE, net::CACHE_BACKEND_DEFAULT, net::SHADER_CACHE, net::CACHE_BACKEND_DEFAULT,
cache_path_.Append(kGpuCachePath), CacheSizeBytes(), true, nullptr, cache_path_.Append(kGpuCachePath), CacheSizeBytes(), true, nullptr,
&backend_, base::Bind(&ShaderDiskCache::CacheCreatedCallback, this)); &backend_, base::BindOnce(&ShaderDiskCache::CacheCreatedCallback, this));
if (rv == net::OK) if (rv == net::OK)
cache_available_ = true; cache_available_ = true;

@@ -4,6 +4,8 @@
#include "services/ws/public/cpp/gpu/client_gpu_memory_buffer_manager.h" #include "services/ws/public/cpp/gpu/client_gpu_memory_buffer_manager.h"
#include <utility>
#include "base/bind.h" #include "base/bind.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/memory/shared_memory.h" #include "base/memory/shared_memory.h"
@@ -17,21 +19,15 @@
#include "services/ws/public/mojom/constants.mojom.h" #include "services/ws/public/mojom/constants.mojom.h"
#include "ui/gfx/buffer_format_util.h" #include "ui/gfx/buffer_format_util.h"
using DestructionCallback = base::Callback<void(const gpu::SyncToken& sync)>;
namespace gpu {
class GpuMemoryBufferSupport;
}
namespace ws { namespace ws {
namespace { namespace {
void NotifyDestructionOnCorrectThread( void NotifyDestructionOnCorrectThread(
scoped_refptr<base::SingleThreadTaskRunner> task_runner, scoped_refptr<base::SingleThreadTaskRunner> task_runner,
const DestructionCallback& callback, gpu::GpuMemoryBufferImpl::DestructionCallback callback,
const gpu::SyncToken& sync_token) { const gpu::SyncToken& sync_token) {
task_runner->PostTask(FROM_HERE, base::Bind(callback, sync_token)); task_runner->PostTask(FROM_HERE,
base::BindOnce(std::move(callback), sync_token));
} }
} // namespace } // namespace
@@ -46,15 +42,14 @@ ClientGpuMemoryBufferManager::ClientGpuMemoryBufferManager(
// The thread is owned by this object. Which means the task will not run if // The thread is owned by this object. Which means the task will not run if
// the object has been destroyed. So Unretained() is safe. // the object has been destroyed. So Unretained() is safe.
thread_.task_runner()->PostTask( thread_.task_runner()->PostTask(
FROM_HERE, FROM_HERE, base::BindOnce(&ClientGpuMemoryBufferManager::InitThread,
base::Bind(&ClientGpuMemoryBufferManager::InitThread, base::Unretained(this), gpu.PassInterface()));
base::Unretained(this), base::Passed(gpu.PassInterface())));
} }
ClientGpuMemoryBufferManager::~ClientGpuMemoryBufferManager() { ClientGpuMemoryBufferManager::~ClientGpuMemoryBufferManager() {
thread_.task_runner()->PostTask( thread_.task_runner()->PostTask(
FROM_HERE, base::Bind(&ClientGpuMemoryBufferManager::TearDownThread, FROM_HERE, base::BindOnce(&ClientGpuMemoryBufferManager::TearDownThread,
base::Unretained(this))); base::Unretained(this)));
thread_.Stop(); thread_.Stop();
} }
@@ -62,8 +57,8 @@ void ClientGpuMemoryBufferManager::InitThread(
mojom::GpuMemoryBufferFactoryPtrInfo gpu_info) { mojom::GpuMemoryBufferFactoryPtrInfo gpu_info) {
gpu_.Bind(std::move(gpu_info)); gpu_.Bind(std::move(gpu_info));
gpu_.set_connection_error_handler( gpu_.set_connection_error_handler(
base::Bind(&ClientGpuMemoryBufferManager::DisconnectGpuOnThread, base::BindOnce(&ClientGpuMemoryBufferManager::DisconnectGpuOnThread,
base::Unretained(this))); base::Unretained(this)));
weak_ptr_ = weak_ptr_factory_.GetWeakPtr(); weak_ptr_ = weak_ptr_factory_.GetWeakPtr();
} }
@@ -102,7 +97,7 @@ void ClientGpuMemoryBufferManager::AllocateGpuMemoryBufferOnThread(
pending_allocation_waiters_.insert(wait); pending_allocation_waiters_.insert(wait);
gpu_->CreateGpuMemoryBuffer( gpu_->CreateGpuMemoryBuffer(
gfx::GpuMemoryBufferId(++counter_), size, format, usage, gfx::GpuMemoryBufferId(++counter_), size, format, usage,
base::Bind( base::BindOnce(
&ClientGpuMemoryBufferManager::OnGpuMemoryBufferAllocatedOnThread, &ClientGpuMemoryBufferManager::OnGpuMemoryBufferAllocatedOnThread,
base::Unretained(this), handle, wait)); base::Unretained(this), handle, wait));
} }
@@ -125,8 +120,8 @@ void ClientGpuMemoryBufferManager::DeletedGpuMemoryBuffer(
if (!thread_.task_runner()->BelongsToCurrentThread()) { if (!thread_.task_runner()->BelongsToCurrentThread()) {
thread_.task_runner()->PostTask( thread_.task_runner()->PostTask(
FROM_HERE, FROM_HERE,
base::Bind(&ClientGpuMemoryBufferManager::DeletedGpuMemoryBuffer, base::BindOnce(&ClientGpuMemoryBufferManager::DeletedGpuMemoryBuffer,
base::Unretained(this), id, sync_token)); base::Unretained(this), id, sync_token));
return; return;
} }
@@ -149,22 +144,22 @@ ClientGpuMemoryBufferManager::CreateGpuMemoryBuffer(
base::WaitableEvent::InitialState::NOT_SIGNALED); base::WaitableEvent::InitialState::NOT_SIGNALED);
thread_.task_runner()->PostTask( thread_.task_runner()->PostTask(
FROM_HERE, FROM_HERE,
base::Bind(&ClientGpuMemoryBufferManager::AllocateGpuMemoryBufferOnThread, base::BindOnce(
base::Unretained(this), size, format, usage, &gmb_handle, &ClientGpuMemoryBufferManager::AllocateGpuMemoryBufferOnThread,
&wait)); base::Unretained(this), size, format, usage, &gmb_handle, &wait));
wait.Wait(); wait.Wait();
if (gmb_handle.is_null()) if (gmb_handle.is_null())
return nullptr; return nullptr;
auto gmb_handle_id = gmb_handle.id; auto gmb_handle_id = gmb_handle.id;
DestructionCallback callback = auto callback =
base::Bind(&ClientGpuMemoryBufferManager::DeletedGpuMemoryBuffer, base::BindOnce(&ClientGpuMemoryBufferManager::DeletedGpuMemoryBuffer,
weak_ptr_, gmb_handle_id); weak_ptr_, gmb_handle_id);
std::unique_ptr<gpu::GpuMemoryBufferImpl> buffer( std::unique_ptr<gpu::GpuMemoryBufferImpl> buffer =
gpu_memory_buffer_support_->CreateGpuMemoryBufferImplFromHandle( gpu_memory_buffer_support_->CreateGpuMemoryBufferImplFromHandle(
std::move(gmb_handle), size, format, usage, std::move(gmb_handle), size, format, usage,
base::Bind(&NotifyDestructionOnCorrectThread, thread_.task_runner(), base::BindOnce(&NotifyDestructionOnCorrectThread,
callback))); thread_.task_runner(), std::move(callback)));
if (!buffer) { if (!buffer) {
DeletedGpuMemoryBuffer(gmb_handle_id, gpu::SyncToken()); DeletedGpuMemoryBuffer(gmb_handle_id, gpu::SyncToken());
return nullptr; return nullptr;

@@ -5,6 +5,7 @@
#include "ui/gl/android/surface_texture.h" #include "ui/gl/android/surface_texture.h"
#include <android/native_window_jni.h> #include <android/native_window_jni.h>
#include <utility>
#include "base/android/jni_android.h" #include "base/android/jni_android.h"
#include "base/logging.h" #include "base/logging.h"
@@ -31,19 +32,22 @@ SurfaceTexture::~SurfaceTexture() {
Java_SurfaceTexturePlatformWrapper_destroy(env, j_surface_texture_); Java_SurfaceTexturePlatformWrapper_destroy(env, j_surface_texture_);
} }
void SurfaceTexture::SetFrameAvailableCallback(const base::Closure& callback) { void SurfaceTexture::SetFrameAvailableCallback(
base::RepeatingClosure callback) {
JNIEnv* env = base::android::AttachCurrentThread(); JNIEnv* env = base::android::AttachCurrentThread();
Java_SurfaceTexturePlatformWrapper_setFrameAvailableCallback( Java_SurfaceTexturePlatformWrapper_setFrameAvailableCallback(
env, j_surface_texture_, env, j_surface_texture_,
reinterpret_cast<intptr_t>(new SurfaceTextureListener(callback, false))); reinterpret_cast<intptr_t>(
new SurfaceTextureListener(std::move(callback), false)));
} }
void SurfaceTexture::SetFrameAvailableCallbackOnAnyThread( void SurfaceTexture::SetFrameAvailableCallbackOnAnyThread(
const base::Closure& callback) { base::RepeatingClosure callback) {
JNIEnv* env = base::android::AttachCurrentThread(); JNIEnv* env = base::android::AttachCurrentThread();
Java_SurfaceTexturePlatformWrapper_setFrameAvailableCallback( Java_SurfaceTexturePlatformWrapper_setFrameAvailableCallback(
env, j_surface_texture_, env, j_surface_texture_,
reinterpret_cast<intptr_t>(new SurfaceTextureListener(callback, true))); reinterpret_cast<intptr_t>(
new SurfaceTextureListener(std::move(callback), true)));
} }
void SurfaceTexture::UpdateTexImage() { void SurfaceTexture::UpdateTexImage() {

@@ -29,13 +29,13 @@ class GL_EXPORT SurfaceTexture
// Note: Since callbacks come in from Java objects that might outlive objects // Note: Since callbacks come in from Java objects that might outlive objects
// being referenced from the callback, the only robust way here is to create // being referenced from the callback, the only robust way here is to create
// the callback from a weak pointer to your object. // the callback from a weak pointer to your object.
void SetFrameAvailableCallback(const base::Closure& callback); void SetFrameAvailableCallback(base::RepeatingClosure callback);
// Set the listener callback, but allow it to be invoked on any thread. The // Set the listener callback, but allow it to be invoked on any thread. The
// same caveats apply as SetFrameAvailableCallback, plus whatever other issues // same caveats apply as SetFrameAvailableCallback, plus whatever other issues
// show up due to multithreading (e.g., don't bind the Closure to a method // show up due to multithreading (e.g., don't bind the Closure to a method
// via a weak ref). // via a weak ref).
void SetFrameAvailableCallbackOnAnyThread(const base::Closure& callback); void SetFrameAvailableCallbackOnAnyThread(base::RepeatingClosure callback);
// Update the texture image to the most recent frame from the image stream. // Update the texture image to the most recent frame from the image stream.
void UpdateTexImage(); void UpdateTexImage();

@@ -4,6 +4,8 @@
#include "ui/gl/android/surface_texture_listener.h" #include "ui/gl/android/surface_texture_listener.h"
#include <utility>
#include "base/location.h" #include "base/location.h"
#include "base/single_thread_task_runner.h" #include "base/single_thread_task_runner.h"
#include "base/threading/thread_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h"
@@ -13,9 +15,9 @@ using base::android::JavaParamRef;
namespace gl { namespace gl {
SurfaceTextureListener::SurfaceTextureListener(const base::Closure& callback, SurfaceTextureListener::SurfaceTextureListener(base::RepeatingClosure callback,
bool use_any_thread) bool use_any_thread)
: callback_(callback), : callback_(std::move(callback)),
browser_loop_(base::ThreadTaskRunnerHandle::Get()), browser_loop_(base::ThreadTaskRunnerHandle::Get()),
use_any_thread_(use_any_thread) {} use_any_thread_(use_any_thread) {}

@@ -38,12 +38,12 @@ class GL_EXPORT SurfaceTextureListener {
// If use_any_thread is true, then the FrameAvailable callback will happen // If use_any_thread is true, then the FrameAvailable callback will happen
// on whatever thread calls us. Otherwise, we will call it back on the same // on whatever thread calls us. Otherwise, we will call it back on the same
// thread that was used to construct us. // thread that was used to construct us.
SurfaceTextureListener(const base::Closure& callback, bool use_any_thread); SurfaceTextureListener(base::RepeatingClosure callback, bool use_any_thread);
~SurfaceTextureListener(); ~SurfaceTextureListener();
friend class SurfaceTexture; friend class SurfaceTexture;
base::Closure callback_; base::RepeatingClosure callback_;
scoped_refptr<base::SingleThreadTaskRunner> browser_loop_; scoped_refptr<base::SingleThreadTaskRunner> browser_loop_;

@@ -159,7 +159,8 @@ void GLContextCGL::Destroy() {
// Delay releasing the pixel format for 10 seconds to reduce the number of // Delay releasing the pixel format for 10 seconds to reduce the number of
// unnecessary GPU switches. // unnecessary GPU switches.
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
FROM_HERE, base::Bind(&CGLReleasePixelFormat, discrete_pixelformat_), FROM_HERE,
base::BindOnce(&CGLReleasePixelFormat, discrete_pixelformat_),
base::TimeDelta::FromSeconds(10)); base::TimeDelta::FromSeconds(10));
} else { } else {
CGLReleasePixelFormat(discrete_pixelformat_); CGLReleasePixelFormat(discrete_pixelformat_);

@@ -4,6 +4,8 @@
#include "ui/gl/gpu_timing.h" #include "ui/gl/gpu_timing.h"
#include <utility>
#include "base/containers/circular_deque.h" #include "base/containers/circular_deque.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/ptr_util.h" #include "base/memory/ptr_util.h"
@@ -30,7 +32,7 @@ int32_t QueryTimestampBits() {
class GPUTimingImpl : public GPUTiming { class GPUTimingImpl : public GPUTiming {
public: public:
GPUTimingImpl(GLContextReal* context); explicit GPUTimingImpl(GLContextReal* context);
~GPUTimingImpl() override; ~GPUTimingImpl() override;
void ForceTimeElapsedQuery() { force_time_elapsed_query_ = true; } void ForceTimeElapsedQuery() { force_time_elapsed_query_ = true; }
@@ -51,8 +53,8 @@ class GPUTimingImpl : public GPUTiming {
? (base::TimeTicks::Now() - base::TimeTicks()).InMicroseconds() ? (base::TimeTicks::Now() - base::TimeTicks()).InMicroseconds()
: cpu_time_for_testing_.Run(); : cpu_time_for_testing_.Run();
} }
void SetCpuTimeForTesting(const base::Callback<int64_t(void)>& cpu_time) { void SetCpuTimeForTesting(base::RepeatingCallback<int64_t(void)> cpu_time) {
cpu_time_for_testing_ = cpu_time; cpu_time_for_testing_ = std::move(cpu_time);
} }
void UpdateQueryResults(); void UpdateQueryResults();
@@ -75,7 +77,7 @@ class GPUTimingImpl : public GPUTiming {
private: private:
scoped_refptr<GPUTimingClient> CreateGPUTimingClient() override; scoped_refptr<GPUTimingClient> CreateGPUTimingClient() override;
base::Callback<int64_t(void)> cpu_time_for_testing_; base::RepeatingCallback<int64_t(void)> cpu_time_for_testing_;
GPUTiming::TimerType timer_type_ = GPUTiming::kTimerTypeInvalid; GPUTiming::TimerType timer_type_ = GPUTiming::kTimerTypeInvalid;
uint32_t disjoint_counter_ = 0; uint32_t disjoint_counter_ = 0;
int64_t offset_ = 0; // offset cache when timer_type_ == kTimerTypeARB int64_t offset_ = 0; // offset cache when timer_type_ == kTimerTypeARB
@@ -84,7 +86,7 @@ class GPUTimingImpl : public GPUTiming {
int32_t timestamp_bit_count_gl_ = -1; // gl implementation timestamp bits int32_t timestamp_bit_count_gl_ = -1; // gl implementation timestamp bits
uint32_t next_timer_query_id_ = 0; uint32_t next_timer_query_id_ = 0;
uint32_t next_good_timer_query_id_ = 0; // identify bad ids for disjoints. uint32_t next_good_timer_query_id_ = 0; // identify bad ids for disjoints.
uint32_t query_disjoint_count_ = 0; uint32_t query_disjoint_count_ = 0;
// Extra state tracking data for elapsed timer queries. // Extra state tracking data for elapsed timer queries.
@@ -122,7 +124,7 @@ class QueryResult : public base::RefCounted<QueryResult> {
class TimerQuery : public base::RefCounted<TimerQuery> { class TimerQuery : public base::RefCounted<TimerQuery> {
public: public:
TimerQuery(uint32_t next_id); explicit TimerQuery(uint32_t next_id);
virtual void Destroy() = 0; virtual void Destroy() = 0;
// Returns true when UpdateQueryResults() is ready to be called. // Returns true when UpdateQueryResults() is ready to be called.
@@ -135,7 +137,7 @@ class TimerQuery : public base::RefCounted<TimerQuery> {
virtual void PrepareNextUpdate(scoped_refptr<TimerQuery> prev) {} virtual void PrepareNextUpdate(scoped_refptr<TimerQuery> prev) {}
uint32_t timer_query_id_ = 0; uint32_t timer_query_id_ = 0;
int64_t time_stamp_ = 0; // Timestamp of the query, could be estimated. int64_t time_stamp_ = 0; // Timestamp of the query, could be estimated.
protected: protected:
friend class base::RefCounted<TimerQuery>; friend class base::RefCounted<TimerQuery>;
@@ -271,8 +273,7 @@ class TimeElapsedTimerQuery : public TimerQuery {
class TimeStampTimerQuery : public TimerQuery { class TimeStampTimerQuery : public TimerQuery {
public: public:
TimeStampTimerQuery(uint32_t next_id) explicit TimeStampTimerQuery(uint32_t next_id) : TimerQuery(next_id) {
: TimerQuery(next_id) {
glGenQueries(1, &gl_query_id_); glGenQueries(1, &gl_query_id_);
} }
@@ -649,9 +650,9 @@ int64_t GPUTimingClient::GetCurrentCPUTime() {
} }
void GPUTimingClient::SetCpuTimeForTesting( void GPUTimingClient::SetCpuTimeForTesting(
const base::Callback<int64_t(void)>& cpu_time) { base::RepeatingCallback<int64_t(void)> cpu_time) {
DCHECK(gpu_timing_); DCHECK(gpu_timing_);
gpu_timing_->SetCpuTimeForTesting(cpu_time); gpu_timing_->SetCpuTimeForTesting(std::move(cpu_time));
} }
bool GPUTimingClient::IsForceTimeElapsedQuery() { bool GPUTimingClient::IsForceTimeElapsedQuery() {

@@ -141,7 +141,7 @@ class GL_EXPORT GPUTimingClient
bool CheckAndResetTimerErrors(); bool CheckAndResetTimerErrors();
int64_t GetCurrentCPUTime(); int64_t GetCurrentCPUTime();
void SetCpuTimeForTesting(const base::Callback<int64_t(void)>& cpu_time); void SetCpuTimeForTesting(base::RepeatingCallback<int64_t(void)> cpu_time);
bool IsForceTimeElapsedQuery(); bool IsForceTimeElapsedQuery();
void ForceTimeElapsedQuery(); void ForceTimeElapsedQuery();

@@ -71,7 +71,8 @@ class GPUTimingTest : public testing::Test {
scoped_refptr<GPUTimingClient> client = context_->CreateGPUTimingClient(); scoped_refptr<GPUTimingClient> client = context_->CreateGPUTimingClient();
if (!cpu_time_bounded_) { if (!cpu_time_bounded_) {
client->SetCpuTimeForTesting(base::Bind(&GPUTimingFake::GetFakeCPUTime)); client->SetCpuTimeForTesting(
base::BindRepeating(&GPUTimingFake::GetFakeCPUTime));
cpu_time_bounded_ = true; cpu_time_bounded_ = true;
} }
return client; return client;
@@ -93,7 +94,7 @@ TEST_F(GPUTimingTest, FakeTimerTest) {
gpu_timing_fake_queries_.SetCurrentCPUTime(123); gpu_timing_fake_queries_.SetCurrentCPUTime(123);
EXPECT_EQ(123, gpu_timing_client->GetCurrentCPUTime()); EXPECT_EQ(123, gpu_timing_client->GetCurrentCPUTime());
base::Callback<int64_t(void)> empty; base::RepeatingCallback<int64_t(void)> empty;
gpu_timing_client->SetCpuTimeForTesting(empty); gpu_timing_client->SetCpuTimeForTesting(empty);
EXPECT_NE(123, gpu_timing_client->GetCurrentCPUTime()); EXPECT_NE(123, gpu_timing_client->GetCurrentCPUTime());
} }