diff options
author | dsinclair@chromium.org <dsinclair@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-16 23:26:11 +0000 |
---|---|---|
committer | dsinclair@chromium.org <dsinclair@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-16 23:26:11 +0000 |
commit | 9430771aa1f193f4e274fe541676ec61dfb83571 (patch) | |
tree | 302d0f155ec7c3662ee9046fef619a6da2cb5b9b /gpu | |
parent | 295f532b47ad90fe33a2dca06d8565914c82946a (diff) | |
download | chromium_src-9430771aa1f193f4e274fe541676ec61dfb83571.zip chromium_src-9430771aa1f193f4e274fe541676ec61dfb83571.tar.gz chromium_src-9430771aa1f193f4e274fe541676ec61dfb83571.tar.bz2 |
Add glTraceBeginCHROMIUM and glTraceEndCHROMIUM.
This is currently implemented as a no-op on the server side.
When implemented the glTraceBegin will issue a trace timestamp into
the GPU message stream. The glTraceEnd will issue another timestamp
into the GPU stream. Eventually, when the two timers have been
exeucted by the GPU, an event will be sent to about:tracing with the
relevant timeing information.
BUG=111509
Review URL: https://chromiumcodereview.appspot.com/11366113
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@168323 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
21 files changed, 308 insertions, 1 deletions
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py index 59f1ba2..927764b 100755 --- a/gpu/command_buffer/build_gles2_cmd_buffer.py +++ b/gpu/command_buffer/build_gles2_cmd_buffer.py @@ -2205,6 +2205,21 @@ _FUNCTION_INFO = { 'extension': True, 'chromium': True, }, + 'TraceBeginCHROMIUM': { + 'type': 'Custom', + 'impl_func': False, + 'immediate': False, + 'client_test': False, + 'cmd_args': 'GLuint bucket_id', + 'extension': True, + 'chromium': True, + }, + 'TraceEndCHROMIUM': { + 'decoder_func': 'DoTraceEndCHROMIUM', + 'unit_test': False, + 'extension': True, + 'chromium': True, + }, } diff --git a/gpu/command_buffer/client/gles2_c_lib_autogen.h b/gpu/command_buffer/client/gles2_c_lib_autogen.h index a0d3fa6..ef12643 100644 --- a/gpu/command_buffer/client/gles2_c_lib_autogen.h +++ b/gpu/command_buffer/client/gles2_c_lib_autogen.h @@ -685,6 +685,12 @@ void GLES2BindTexImage2DCHROMIUM(GLenum target, GLint imageId) { void GLES2ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) { gles2::GetGLContext()->ReleaseTexImage2DCHROMIUM(target, imageId); } +void GLES2TraceBeginCHROMIUM(const char* name) { + gles2::GetGLContext()->TraceBeginCHROMIUM(name); +} +void GLES2TraceEndCHROMIUM() { + gles2::GetGLContext()->TraceEndCHROMIUM(); +} #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_C_LIB_AUTOGEN_H_ diff --git a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h index 080cc8a..51a91e7 100644 --- a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h +++ b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h @@ -1918,5 +1918,19 @@ } } + void TraceBeginCHROMIUM(GLuint bucket_id) { + gles2::TraceBeginCHROMIUM* c = GetCmdSpace<gles2::TraceBeginCHROMIUM>(); + if (c) { + c->Init(bucket_id); + } + } + + void TraceEndCHROMIUM() { + gles2::TraceEndCHROMIUM* c = GetCmdSpace<gles2::TraceEndCHROMIUM>(); + if (c) { + c->Init(); + } + } + #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_CMD_HELPER_AUTOGEN_H_ diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc index 8f67194..140d612 100644 --- a/gpu/command_buffer/client/gles2_implementation.cc +++ b/gpu/command_buffer/client/gles2_implementation.cc @@ -3459,6 +3459,16 @@ void GLES2Implementation::PopGroupMarkerEXT() { debug_marker_manager_.PopGroup(); } +void GLES2Implementation::TraceBeginCHROMIUM(const char* name) { + GPU_CLIENT_SINGLE_THREAD_CHECK(); + GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTraceBeginCHROMIUM(" + << name << ")"); + + SetBucketAsCString(kResultBucketId, name); + helper_->TraceBeginCHROMIUM(kResultBucketId); + helper_->SetBucketSize(kResultBucketId, 0); +} + // Include the auto-generated part of this file. We split this because it means // we can easily edit the non-auto generated parts right here in this file // instead of having to edit some template or the code generator. diff --git a/gpu/command_buffer/client/gles2_implementation_autogen.h b/gpu/command_buffer/client/gles2_implementation_autogen.h index b8d743c..0034ba3 100644 --- a/gpu/command_buffer/client/gles2_implementation_autogen.h +++ b/gpu/command_buffer/client/gles2_implementation_autogen.h @@ -502,5 +502,9 @@ virtual void BindTexImage2DCHROMIUM(GLenum target, GLint imageId) OVERRIDE; virtual void ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) OVERRIDE; +virtual void TraceBeginCHROMIUM(const char* name) OVERRIDE; + +virtual void TraceEndCHROMIUM() OVERRIDE; + #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_AUTOGEN_H_ diff --git a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h index a2b9227..4ce044e 100644 --- a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h +++ b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h @@ -1513,5 +1513,11 @@ void GLES2Implementation::ReleaseTexImage2DCHROMIUM( helper_->ReleaseTexImage2DCHROMIUM(target, imageId); } +void GLES2Implementation::TraceEndCHROMIUM() { + GPU_CLIENT_SINGLE_THREAD_CHECK(); + GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTraceEndCHROMIUM(" << ")"); + helper_->TraceEndCHROMIUM(); +} + #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_IMPL_AUTOGEN_H_ diff --git a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h index 304b357..027d6e17 100644 --- a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h +++ b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h @@ -1786,5 +1786,16 @@ TEST_F(GLES2ImplementationTest, ReleaseTexImage2DCHROMIUM) { gl_->ReleaseTexImage2DCHROMIUM(GL_TEXTURE_2D, 2); EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); } + +TEST_F(GLES2ImplementationTest, TraceEndCHROMIUM) { + struct Cmds { + TraceEndCHROMIUM cmd; + }; + Cmds expected; + expected.cmd.Init(); + + gl_->TraceEndCHROMIUM(); + EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); +} #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_UNITTEST_AUTOGEN_H_ diff --git a/gpu/command_buffer/client/gles2_interface_autogen.h b/gpu/command_buffer/client/gles2_interface_autogen.h index 67837da..3879fe11 100644 --- a/gpu/command_buffer/client/gles2_interface_autogen.h +++ b/gpu/command_buffer/client/gles2_interface_autogen.h @@ -288,5 +288,7 @@ virtual void BindUniformLocationCHROMIUM( GLuint program, GLint location, const char* name) = 0; virtual void BindTexImage2DCHROMIUM(GLenum target, GLint imageId) = 0; virtual void ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) = 0; +virtual void TraceBeginCHROMIUM(const char* name) = 0; +virtual void TraceEndCHROMIUM() = 0; #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_INTERFACE_AUTOGEN_H_ diff --git a/gpu/command_buffer/client/gles2_interface_stub_autogen.h b/gpu/command_buffer/client/gles2_interface_stub_autogen.h index cabf287..5ea0131 100644 --- a/gpu/command_buffer/client/gles2_interface_stub_autogen.h +++ b/gpu/command_buffer/client/gles2_interface_stub_autogen.h @@ -320,5 +320,7 @@ virtual void BindUniformLocationCHROMIUM( GLuint program, GLint location, const char* name) OVERRIDE; virtual void BindTexImage2DCHROMIUM(GLenum target, GLint imageId) OVERRIDE; virtual void ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) OVERRIDE; +virtual void TraceBeginCHROMIUM(const char* name) OVERRIDE; +virtual void TraceEndCHROMIUM() OVERRIDE; #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_INTERFACE_STUB_AUTOGEN_H_ diff --git a/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h b/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h index fdb92c9..735ac0a 100644 --- a/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h +++ b/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h @@ -602,5 +602,9 @@ void GLES2InterfaceStub::BindTexImage2DCHROMIUM( void GLES2InterfaceStub::ReleaseTexImage2DCHROMIUM( GLenum /* target */, GLint /* imageId */) { } +void GLES2InterfaceStub::TraceBeginCHROMIUM(const char* /* name */) { +} +void GLES2InterfaceStub::TraceEndCHROMIUM() { +} #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_INTERFACE_STUB_IMPL_AUTOGEN_H_ diff --git a/gpu/command_buffer/cmd_buffer_functions.txt b/gpu/command_buffer/cmd_buffer_functions.txt index f9914a9..a759cd0 100644 --- a/gpu/command_buffer/cmd_buffer_functions.txt +++ b/gpu/command_buffer/cmd_buffer_functions.txt @@ -198,3 +198,5 @@ GL_APICALL void GL_APIENTRY glConsumeTextureCHROMIUM (GLenumTextureTarge GL_APICALL void GL_APIENTRY glBindUniformLocationCHROMIUM (GLidProgram program, GLint location, const char* name); GL_APICALL void GL_APIENTRY glBindTexImage2DCHROMIUM (GLenumTextureBindTarget target, GLint imageId); GL_APICALL void GL_APIENTRY glReleaseTexImage2DCHROMIUM (GLenumTextureBindTarget target, GLint imageId); +GL_APICALL void GL_APIENTRY glTraceBeginCHROMIUM (const char* name); +GL_APICALL void GL_APIENTRY glTraceEndCHROMIUM (void); diff --git a/gpu/command_buffer/common/gles2_cmd_format_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_autogen.h index 4a0e20e..fd27f5b 100644 --- a/gpu/command_buffer/common/gles2_cmd_format_autogen.h +++ b/gpu/command_buffer/common/gles2_cmd_format_autogen.h @@ -10508,6 +10508,70 @@ COMPILE_ASSERT(offsetof(ReleaseTexImage2DCHROMIUM, target) == 4, COMPILE_ASSERT(offsetof(ReleaseTexImage2DCHROMIUM, imageId) == 8, OffsetOf_ReleaseTexImage2DCHROMIUM_imageId_not_8); +struct TraceBeginCHROMIUM { + typedef TraceBeginCHROMIUM ValueType; + static const CommandId kCmdId = kTraceBeginCHROMIUM; + static const cmd::ArgFlags kArgFlags = cmd::kFixed; + + static uint32 ComputeSize() { + return static_cast<uint32>(sizeof(ValueType)); // NOLINT + } + + void SetHeader() { + header.SetCmd<ValueType>(); + } + + void Init(GLuint _bucket_id) { + SetHeader(); + bucket_id = _bucket_id; + } + + void* Set(void* cmd, GLuint _bucket_id) { + static_cast<ValueType*>(cmd)->Init(_bucket_id); + return NextCmdAddress<ValueType>(cmd); + } + + gpu::CommandHeader header; + uint32 bucket_id; +}; + +COMPILE_ASSERT(sizeof(TraceBeginCHROMIUM) == 8, + Sizeof_TraceBeginCHROMIUM_is_not_8); +COMPILE_ASSERT(offsetof(TraceBeginCHROMIUM, header) == 0, + OffsetOf_TraceBeginCHROMIUM_header_not_0); +COMPILE_ASSERT(offsetof(TraceBeginCHROMIUM, bucket_id) == 4, + OffsetOf_TraceBeginCHROMIUM_bucket_id_not_4); + +struct TraceEndCHROMIUM { + typedef TraceEndCHROMIUM ValueType; + static const CommandId kCmdId = kTraceEndCHROMIUM; + static const cmd::ArgFlags kArgFlags = cmd::kFixed; + + static uint32 ComputeSize() { + return static_cast<uint32>(sizeof(ValueType)); // NOLINT + } + + void SetHeader() { + header.SetCmd<ValueType>(); + } + + void Init() { + SetHeader(); + } + + void* Set(void* cmd) { + static_cast<ValueType*>(cmd)->Init(); + return NextCmdAddress<ValueType>(cmd); + } + + gpu::CommandHeader header; +}; + +COMPILE_ASSERT(sizeof(TraceEndCHROMIUM) == 4, + Sizeof_TraceEndCHROMIUM_is_not_4); +COMPILE_ASSERT(offsetof(TraceEndCHROMIUM, header) == 0, + OffsetOf_TraceEndCHROMIUM_header_not_0); + #endif // GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_AUTOGEN_H_ diff --git a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h index a7b1e85..0c11756 100644 --- a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h +++ b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h @@ -4232,5 +4232,29 @@ TEST_F(GLES2FormatTest, ReleaseTexImage2DCHROMIUM) { next_cmd, sizeof(cmd)); } +TEST_F(GLES2FormatTest, TraceBeginCHROMIUM) { + TraceBeginCHROMIUM& cmd = *GetBufferAs<TraceBeginCHROMIUM>(); + void* next_cmd = cmd.Set( + &cmd, + static_cast<GLuint>(11)); + EXPECT_EQ(static_cast<uint32>(TraceBeginCHROMIUM::kCmdId), + cmd.header.command); + EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); + EXPECT_EQ(static_cast<GLuint>(11), cmd.bucket_id); + CheckBytesWrittenMatchesExpectedSize( + next_cmd, sizeof(cmd)); +} + +TEST_F(GLES2FormatTest, TraceEndCHROMIUM) { + TraceEndCHROMIUM& cmd = *GetBufferAs<TraceEndCHROMIUM>(); + void* next_cmd = cmd.Set( + &cmd); + EXPECT_EQ(static_cast<uint32>(TraceEndCHROMIUM::kCmdId), + cmd.header.command); + EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); + CheckBytesWrittenMatchesExpectedSize( + next_cmd, sizeof(cmd)); +} + #endif // GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_TEST_AUTOGEN_H_ diff --git a/gpu/command_buffer/common/gles2_cmd_ids_autogen.h b/gpu/command_buffer/common/gles2_cmd_ids_autogen.h index 6543de3..324de9c 100644 --- a/gpu/command_buffer/common/gles2_cmd_ids_autogen.h +++ b/gpu/command_buffer/common/gles2_cmd_ids_autogen.h @@ -241,6 +241,8 @@ OP(BindUniformLocationCHROMIUMBucket) /* 484 */ \ OP(BindTexImage2DCHROMIUM) /* 485 */ \ OP(ReleaseTexImage2DCHROMIUM) /* 486 */ \ + OP(TraceBeginCHROMIUM) /* 487 */ \ + OP(TraceEndCHROMIUM) /* 488 */ \ enum CommandId { kStartPoint = cmd::kLastCommonId, // All GLES2 commands start after this. diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc index 3d5ed74..2a59487 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc @@ -9,6 +9,7 @@ #include <algorithm> #include <list> #include <map> +#include <stack> #include <string> #include <vector> @@ -39,6 +40,7 @@ #include "gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.h" #include "gpu/command_buffer/service/gles2_cmd_validation.h" #include "gpu/command_buffer/service/gpu_switches.h" +#include "gpu/command_buffer/service/gpu_trace.h" #include "gpu/command_buffer/service/image_manager.h" #include "gpu/command_buffer/service/mailbox_manager.h" #include "gpu/command_buffer/service/memory_tracking.h" @@ -771,6 +773,8 @@ class GLES2DecoderImpl : public base::SupportsWeakPtr<GLES2DecoderImpl>, GLenum target, GLint image_id); + void DoTraceEndCHROMIUM(void); + // Creates a ProgramInfo for the given program. ProgramManager::ProgramInfo* CreateProgramInfo( GLuint client_id, GLuint service_id) { @@ -1574,6 +1578,8 @@ class GLES2DecoderImpl : public base::SupportsWeakPtr<GLES2DecoderImpl>, base::TimeDelta total_texture_upload_time_; base::TimeDelta total_processing_commands_time_; + std::stack<linked_ptr<GPUTrace> > gpu_trace_stack_; + DISALLOW_COPY_AND_ASSIGN(GLES2DecoderImpl); }; @@ -9324,6 +9330,36 @@ void GLES2DecoderImpl::DoReleaseTexImage2DCHROMIUM( GL_RGBA, GL_UNSIGNED_BYTE, false); } +error::Error GLES2DecoderImpl::HandleTraceBeginCHROMIUM( + uint32 immediate_data_size, const gles2::TraceBeginCHROMIUM& c) { + Bucket* bucket = GetBucket(c.bucket_id); + if (!bucket || bucket->size() == 0) { + return error::kInvalidArguments; + } + std::string command_name; + if (!bucket->GetAsString(&command_name)) { + return error::kInvalidArguments; + } + + linked_ptr<GPUTrace> trace(new GPUTrace(command_name)); + trace->EnableStartTrace(); + gpu_trace_stack_.push(trace); + + return error::kNoError; +} + +void GLES2DecoderImpl::DoTraceEndCHROMIUM() { + if (gpu_trace_stack_.empty()) { + SetGLError(GL_INVALID_OPERATION, + "glTraceEndCHROMIUM", "no trace begin found"); + return; + } + + linked_ptr<GPUTrace> trace = gpu_trace_stack_.top(); + trace->EnableEndTrace(); + gpu_trace_stack_.pop(); +} + // Include the auto-generated part of this file. We split this because it means // we can easily edit the non-auto generated parts right here in this file // instead of having to edit some template or the code generator. diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h index 4a8d2a7..4a41a9f 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h +++ b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h @@ -3093,6 +3093,12 @@ error::Error GLES2DecoderImpl::HandleReleaseTexImage2DCHROMIUM( return error::kNoError; } +error::Error GLES2DecoderImpl::HandleTraceEndCHROMIUM( + uint32 immediate_data_size, const gles2::TraceEndCHROMIUM& c) { + DoTraceEndCHROMIUM(); + return error::kNoError; +} + bool GLES2DecoderImpl::SetCapabilityState(GLenum cap, bool enabled) { switch (cap) { diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3.cc index 04ae5c3..ec2530e 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3.cc @@ -32,8 +32,37 @@ class GLES2DecoderTest3 : public GLES2DecoderTestBase { GLES2DecoderTest3() { } }; +TEST_F(GLES2DecoderTest3, TraceBeginCHROMIUM) { + const uint32 kBucketId = 123; + const char kName[] = "test_command"; + SetBucketAsCString(kBucketId, kName); + + TraceBeginCHROMIUM begin_cmd; + begin_cmd.Init(kBucketId); + EXPECT_EQ(error::kNoError, ExecuteCmd(begin_cmd)); +} + +TEST_F(GLES2DecoderTest3, TraceEndCHROMIUM) { + // Test end fails if no begin. + TraceEndCHROMIUM end_cmd; + end_cmd.Init(); + EXPECT_EQ(error::kNoError, ExecuteCmd(end_cmd)); + EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); + + const uint32 kBucketId = 123; + const char kName[] = "test_command"; + SetBucketAsCString(kBucketId, kName); + + TraceBeginCHROMIUM begin_cmd; + begin_cmd.Init(kBucketId); + EXPECT_EQ(error::kNoError, ExecuteCmd(begin_cmd)); + + end_cmd.Init(); + EXPECT_EQ(error::kNoError, ExecuteCmd(end_cmd)); + EXPECT_EQ(GL_NO_ERROR, GetGLError()); +} + #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h" } // namespace gles2 } // namespace gpu - diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h index 79ec1c2..36e1a8f 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h @@ -57,5 +57,8 @@ // TODO(gman): BindUniformLocationCHROMIUMBucket // TODO(gman): BindTexImage2DCHROMIUM // TODO(gman): ReleaseTexImage2DCHROMIUM +// TODO(gman): TraceBeginCHROMIUM + +// TODO(gman): TraceEndCHROMIUM #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_3_AUTOGEN_H_ diff --git a/gpu/command_buffer/service/gpu_trace.cc b/gpu/command_buffer/service/gpu_trace.cc new file mode 100644 index 0000000..caa7e07 --- /dev/null +++ b/gpu/command_buffer/service/gpu_trace.cc @@ -0,0 +1,30 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "gpu/command_buffer/service/gpu_trace.h" + +namespace gpu { +namespace gles2 { + +GPUTrace::GPUTrace(const std::string& name) + : name_(name) { +} + +GPUTrace::~GPUTrace() { +} + +void GPUTrace::EnableStartTrace() { + // TODO(dsinclair): no-op for now. +} + +void GPUTrace::EnableEndTrace() { + // TODO(dsinclair): no-op for now. +} + +const char* GPUTrace::name() { + return name_.c_str(); +} + +} // namespace gles2 +} // namespace gpu diff --git a/gpu/command_buffer/service/gpu_trace.h b/gpu/command_buffer/service/gpu_trace.h new file mode 100644 index 0000000..093bd5d --- /dev/null +++ b/gpu/command_buffer/service/gpu_trace.h @@ -0,0 +1,35 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// This file contains the GPUTrace class. +#ifndef GPU_COMMAND_BUFFER_SERVICE_GPU_TRACE_H_ +#define GPU_COMMAND_BUFFER_SERVICE_GPU_TRACE_H_ + +#include <string> + +#include "base/basictypes.h" + +namespace gpu { +namespace gles2 { + +class GPUTrace { + public: + explicit GPUTrace(const std::string& name); + ~GPUTrace(); + + void EnableStartTrace(); + void EnableEndTrace(); + + const char* name(); + + private: + std::string name_; + + DISALLOW_COPY_AND_ASSIGN(GPUTrace); +}; + +} // namespace gles2 +} // namespace gpu + +#endif // GPU_COMMAND_BUFFER_SERVICE_GPU_TRACE_H_ diff --git a/gpu/command_buffer_service.gypi b/gpu/command_buffer_service.gypi index 0876249..b26d253 100644 --- a/gpu/command_buffer_service.gypi +++ b/gpu/command_buffer_service.gypi @@ -62,6 +62,8 @@ 'command_buffer/service/gpu_scheduler_mock.h', 'command_buffer/service/gpu_switches.h', 'command_buffer/service/gpu_switches.cc', + 'command_buffer/service/gpu_trace.h', + 'command_buffer/service/gpu_trace.cc', 'command_buffer/service/id_manager.h', 'command_buffer/service/id_manager.cc', 'command_buffer/service/image_manager.cc', |