| Index: gpu/command_buffer/service/gpu_tracer_unittest.cc
|
| diff --git a/gpu/command_buffer/service/gpu_tracer_unittest.cc b/gpu/command_buffer/service/gpu_tracer_unittest.cc
|
| index 1b10fc67c32dcba47f681511e2ae35ca38443169..900542193cc3e999b9535cbe9ccccfebe8e83962 100644
|
| --- a/gpu/command_buffer/service/gpu_tracer_unittest.cc
|
| +++ b/gpu/command_buffer/service/gpu_tracer_unittest.cc
|
| @@ -5,43 +5,30 @@
|
| #include <map>
|
| #include <set>
|
|
|
| +#include "base/bind.h"
|
| #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h"
|
| #include "gpu/command_buffer/service/gpu_service_test.h"
|
| +#include "gpu/command_buffer/service/gpu_timing.h"
|
| #include "gpu/command_buffer/service/gpu_tracer.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| -#include "ui/gl/gl_context_stub.h"
|
| #include "ui/gl/gl_mock.h"
|
| -#include "ui/gl/gl_surface_stub.h"
|
|
|
| namespace gpu {
|
| namespace gles2 {
|
| +namespace {
|
|
|
| using ::testing::_;
|
| using ::testing::AtLeast;
|
| +using ::testing::AtMost;
|
| using ::testing::Exactly;
|
| using ::testing::Invoke;
|
| using ::testing::NotNull;
|
| using ::testing::Return;
|
|
|
| -class FakeCPUTime : public CPUTime {
|
| - public:
|
| - FakeCPUTime()
|
| - : current_cpu_time_(0) {
|
| - }
|
| -
|
| - int64 GetCurrentTime() override {
|
| - return current_cpu_time_;
|
| - }
|
| -
|
| - void SetFakeCPUTime(int64 cpu_time) {
|
| - current_cpu_time_ = cpu_time;
|
| - }
|
| -
|
| - protected:
|
| - ~FakeCPUTime() override {}
|
| -
|
| - int64 current_cpu_time_;
|
| -};
|
| +int64 g_fakeCPUTime = 0;
|
| +int64 FakeCpuTime() {
|
| + return g_fakeCPUTime;
|
| +}
|
|
|
| class MockOutputter : public Outputter {
|
| public:
|
| @@ -154,19 +141,19 @@ class GlFakeQueries {
|
| }
|
|
|
| protected:
|
| - bool disjointed_;
|
| - GLint64 current_time_;
|
| - GLuint next_query_id_;
|
| + bool disjointed_ = false;
|
| + GLint64 current_time_ = 0;
|
| + GLuint next_query_id_ = 0;
|
| std::set<GLuint> alloced_queries_;
|
| std::map<GLuint, GLint64> query_timestamp_;
|
| };
|
|
|
| class GPUTracerTester : public GPUTracer {
|
| public:
|
| - GPUTracerTester(GpuTracerType tracer_type, gles2::GLES2Decoder* decoder)
|
| - : GPUTracer(decoder),
|
| - tracing_enabled_(0),
|
| - test_tracer_type_(tracer_type) {
|
| + explicit GPUTracerTester(gles2::GLES2Decoder* decoder)
|
| + : GPUTracer(decoder), tracing_enabled_(0) {
|
| + gpu_timing_.SetCpuTimeForTesting(base::Bind(&FakeCpuTime));
|
| +
|
| // Force tracing to be dependent on our mock variable here.
|
| gpu_trace_srv_category = &tracing_enabled_;
|
| gpu_trace_dev_category = &tracing_enabled_;
|
| @@ -182,10 +169,6 @@ class GPUTracerTester : public GPUTracer {
|
| set_outputter_ = outputter;
|
| }
|
|
|
| - void SetCPUTime(scoped_refptr<CPUTime> cputime) {
|
| - set_cputime_ = cputime;
|
| - }
|
| -
|
| protected:
|
| scoped_refptr<Outputter> CreateOutputter(const std::string& name) override {
|
| if (set_outputter_.get()) {
|
| @@ -194,72 +177,52 @@ class GPUTracerTester : public GPUTracer {
|
| return new MockOutputter();
|
| }
|
|
|
| - scoped_refptr<CPUTime> CreateCPUTime() override {
|
| - if (set_cputime_.get()) {
|
| - return set_cputime_;
|
| - }
|
| - return new FakeCPUTime();
|
| - }
|
| -
|
| - GpuTracerType DetermineTracerType() override {
|
| - return test_tracer_type_;
|
| - }
|
| -
|
| void PostTask() override {
|
| // Process synchronously.
|
| Process();
|
| }
|
|
|
| unsigned char tracing_enabled_;
|
| - GpuTracerType test_tracer_type_;
|
|
|
| scoped_refptr<Outputter> set_outputter_;
|
| - scoped_refptr<CPUTime> set_cputime_;
|
| };
|
|
|
| class BaseGpuTest : public GpuServiceTest {
|
| public:
|
| - BaseGpuTest(GpuTracerType test_tracer_type)
|
| - : test_tracer_type_(test_tracer_type) {
|
| + explicit BaseGpuTest(GPUTiming::TimerType test_timer_type)
|
| + : test_timer_type_(test_timer_type) {
|
| + gpu_timing_.SetCpuTimeForTesting(base::Bind(&FakeCpuTime));
|
| + gpu_timing_.SetTimerTypeForTesting(test_timer_type);
|
| }
|
|
|
| protected:
|
| void SetUp() override {
|
| + g_fakeCPUTime = 0;
|
| const char* gl_version = "3.2";
|
| - const char* extensions = nullptr;
|
| - if (GetTracerType() == kTracerTypeDisjointTimer) {
|
| + const char* extensions = "";
|
| + if (GetTimerType() == GPUTiming::kTimerTypeDisjoint) {
|
| gl_version = "opengl es 3.0";
|
| extensions = "GL_EXT_disjoint_timer_query";
|
| - } else if (GetTracerType() == kTracerTypeARBTimer) {
|
| + } else if (GetTimerType() == GPUTiming::kTimerTypeARB) {
|
| // TODO(sievers): The tracer should not depend on ARB_occlusion_query.
|
| // Try merge Query APIs (core, ARB, EXT) into a single binding each.
|
| extensions = "GL_ARB_timer_query GL_ARB_occlusion_query";
|
| }
|
| GpuServiceTest::SetUpWithGLVersion(gl_version, extensions);
|
| gl_fake_queries_.Reset();
|
| - gl_surface_ = new gfx::GLSurfaceStub();
|
| - gl_context_ = new gfx::GLContextStub();
|
| - gl_context_->MakeCurrent(gl_surface_.get());
|
|
|
| outputter_ref_ = new MockOutputter();
|
| - cpu_time_ref_ = new FakeCPUTime;
|
| }
|
|
|
| void TearDown() override {
|
| outputter_ref_ = NULL;
|
| - cpu_time_ref_ = NULL;
|
|
|
| - gl_context_->ReleaseCurrent(gl_surface_.get());
|
| - gl_context_ = NULL;
|
| - gl_surface_ = NULL;
|
| -
|
| - gl_.reset();
|
| gl_fake_queries_.Reset();
|
| GpuServiceTest::TearDown();
|
| }
|
|
|
| void ExpectTraceQueryMocks() {
|
| - if (GetTracerType() != kTracerTypeInvalid) {
|
| + if (GetTimerType() != GPUTiming::kTimerTypeInvalid) {
|
| // Delegate query APIs used by GPUTrace to a GlFakeQueries
|
| EXPECT_CALL(*gl_, GenQueriesARB(2, NotNull())).Times(AtLeast(1))
|
| .WillRepeatedly(
|
| @@ -270,7 +233,7 @@ class BaseGpuTest : public GpuServiceTest {
|
| .WillRepeatedly(
|
| Invoke(&gl_fake_queries_, &GlFakeQueries::GetQueryObjectivARB));
|
|
|
| - if (GetTracerType() == kTracerTypeDisjointTimer) {
|
| + if (GetTimerType() == GPUTiming::kTimerTypeDisjoint) {
|
| EXPECT_CALL(*gl_, GetInteger64v(GL_TIMESTAMP, _))
|
| .WillRepeatedly(
|
| Invoke(&gl_fake_queries_, &GlFakeQueries::GetInteger64v));
|
| @@ -323,14 +286,14 @@ class BaseGpuTest : public GpuServiceTest {
|
| const std::string& name, int64 expect_start_time,
|
| int64 expect_end_time) {
|
| ExpectOutputterBeginMocks(outputter, category, name);
|
| - ExpectOutputterEndMocks(outputter, category, name,
|
| - expect_start_time, expect_end_time,
|
| - GetTracerType() != kTracerTypeInvalid);
|
| + ExpectOutputterEndMocks(outputter, category, name, expect_start_time,
|
| + expect_end_time,
|
| + GetTimerType() != GPUTiming::kTimerTypeInvalid);
|
| }
|
|
|
| void ExpectTracerOffsetQueryMocks() {
|
| // Disjoint check should only be called by kTracerTypeDisjointTimer type.
|
| - if (GetTracerType() == kTracerTypeDisjointTimer) {
|
| + if (GetTimerType() == GPUTiming::kTimerTypeDisjoint) {
|
| EXPECT_CALL(*gl_, GetIntegerv(GL_GPU_DISJOINT_EXT, _)).Times(AtLeast(1))
|
| .WillRepeatedly(
|
| Invoke(&gl_fake_queries_, &GlFakeQueries::GetIntegerv));
|
| @@ -338,36 +301,31 @@ class BaseGpuTest : public GpuServiceTest {
|
| EXPECT_CALL(*gl_, GetIntegerv(GL_GPU_DISJOINT_EXT, _)).Times(Exactly(0));
|
| }
|
|
|
| - // Timer offset calculation should only happen for the regular timer.
|
| - if (GetTracerType() != kTracerTypeARBTimer) {
|
| + if (GetTimerType() != GPUTiming::kTimerTypeARB) {
|
| EXPECT_CALL(*gl_, GetInteger64v(GL_TIMESTAMP, NotNull()))
|
| .Times(Exactly(0));
|
| } else {
|
| EXPECT_CALL(*gl_, GetInteger64v(GL_TIMESTAMP, NotNull()))
|
| - .Times(AtLeast(1))
|
| + .Times(AtMost(1))
|
| .WillRepeatedly(
|
| Invoke(&gl_fake_queries_, &GlFakeQueries::GetInteger64v));
|
| }
|
| }
|
|
|
| - GpuTracerType GetTracerType() { return test_tracer_type_; }
|
| + GPUTiming::TimerType GetTimerType() { return test_timer_type_; }
|
|
|
| - GpuTracerType test_tracer_type_;
|
| + GPUTiming::TimerType test_timer_type_;
|
| GlFakeQueries gl_fake_queries_;
|
|
|
| + GPUTiming gpu_timing_;
|
| scoped_refptr<MockOutputter> outputter_ref_;
|
| - scoped_refptr<FakeCPUTime> cpu_time_ref_;
|
| -
|
| - scoped_refptr<gfx::GLSurface> gl_surface_;
|
| - scoped_refptr<gfx::GLContext> gl_context_;
|
| };
|
|
|
| // Test GPUTrace calls all the correct gl calls.
|
| class BaseGpuTraceTest : public BaseGpuTest {
|
| public:
|
| - BaseGpuTraceTest(GpuTracerType test_tracer_type)
|
| - : BaseGpuTest(test_tracer_type) {
|
| - }
|
| + explicit BaseGpuTraceTest(GPUTiming::TimerType test_timer_type)
|
| + : BaseGpuTest(test_timer_type) {}
|
|
|
| void DoTraceTest() {
|
| // Expected results
|
| @@ -386,12 +344,14 @@ class BaseGpuTraceTest : public BaseGpuTest {
|
| ExpectOutputterMocks(outputter_ref_.get(), category_name, trace_name,
|
| expect_start_time, expect_end_time);
|
|
|
| - scoped_refptr<GPUTrace> trace =
|
| - new GPUTrace(outputter_ref_, cpu_time_ref_, category_name, trace_name,
|
| - offset_time, GetTracerType());
|
| + scoped_refptr<GPUTrace> trace = new GPUTrace(
|
| + outputter_ref_, &gpu_timing_, category_name, trace_name, true);
|
| +
|
| + gpu_timing_.SetOffsetForTesting(
|
| + offset_time, test_timer_type_ == GPUTiming::kTimerTypeARB);
|
|
|
| gl_fake_queries_.SetCurrentGLTime(start_timestamp);
|
| - cpu_time_ref_->SetFakeCPUTime(expect_start_time);
|
| + g_fakeCPUTime = expect_start_time;
|
| trace->Start(true);
|
|
|
| // Shouldn't be available before End() call
|
| @@ -413,22 +373,18 @@ class BaseGpuTraceTest : public BaseGpuTest {
|
| trace->Process();
|
|
|
| outputter_ref_ = NULL;
|
| - cpu_time_ref_ = NULL;
|
| }
|
| };
|
|
|
| class GpuARBTimerTraceTest : public BaseGpuTraceTest {
|
| public:
|
| - GpuARBTimerTraceTest()
|
| - : BaseGpuTraceTest(kTracerTypeARBTimer) {
|
| - }
|
| + GpuARBTimerTraceTest() : BaseGpuTraceTest(GPUTiming::kTimerTypeARB) {}
|
| };
|
|
|
| class GpuDisjointTimerTraceTest : public BaseGpuTraceTest {
|
| public:
|
| GpuDisjointTimerTraceTest()
|
| - : BaseGpuTraceTest(kTracerTypeDisjointTimer) {
|
| - }
|
| + : BaseGpuTraceTest(GPUTiming::kTimerTypeDisjoint) {}
|
| };
|
|
|
| TEST_F(GpuARBTimerTraceTest, ARBTimerTraceTest) {
|
| @@ -442,25 +398,23 @@ TEST_F(GpuDisjointTimerTraceTest, DisjointTimerTraceTest) {
|
| // Test GPUTracer calls all the correct gl calls.
|
| class BaseGpuTracerTest : public BaseGpuTest {
|
| public:
|
| - BaseGpuTracerTest(GpuTracerType test_tracer_type)
|
| - : BaseGpuTest(test_tracer_type) {
|
| - }
|
| + explicit BaseGpuTracerTest(GPUTiming::TimerType test_timer_type)
|
| + : BaseGpuTest(test_timer_type) {}
|
|
|
| void DoBasicTracerTest() {
|
| ExpectTracerOffsetQueryMocks();
|
|
|
| MockGLES2Decoder decoder;
|
| - GPUTracerTester tracer(test_tracer_type_, &decoder);
|
| + EXPECT_CALL(decoder, GetGLContext()).WillOnce(Return(GetGLContext()));
|
| + GPUTracerTester tracer(&decoder);
|
| tracer.SetTracingEnabled(true);
|
|
|
| tracer.SetOutputter(outputter_ref_);
|
| - tracer.SetCPUTime(cpu_time_ref_);
|
|
|
| ASSERT_TRUE(tracer.BeginDecoding());
|
| ASSERT_TRUE(tracer.EndDecoding());
|
|
|
| outputter_ref_ = NULL;
|
| - cpu_time_ref_ = NULL;
|
| }
|
|
|
| void DoTracerMarkersTest() {
|
| @@ -482,14 +436,14 @@ class BaseGpuTracerTest : public BaseGpuTest {
|
| (end_timestamp / base::Time::kNanosecondsPerMicrosecond) + offset_time;
|
|
|
| MockGLES2Decoder decoder;
|
| - GPUTracerTester tracer(test_tracer_type_, &decoder);
|
| + EXPECT_CALL(decoder, GetGLContext()).WillOnce(Return(GetGLContext()));
|
| + GPUTracerTester tracer(&decoder);
|
| tracer.SetTracingEnabled(true);
|
|
|
| tracer.SetOutputter(outputter_ref_);
|
| - tracer.SetCPUTime(cpu_time_ref_);
|
|
|
| gl_fake_queries_.SetCurrentGLTime(start_timestamp);
|
| - cpu_time_ref_->SetFakeCPUTime(expect_start_time);
|
| + g_fakeCPUTime = expect_start_time;
|
|
|
| ASSERT_TRUE(tracer.BeginDecoding());
|
|
|
| @@ -501,7 +455,7 @@ class BaseGpuTracerTest : public BaseGpuTest {
|
| gl_fake_queries_.SetCurrentGLTime(
|
| start_timestamp +
|
| (i * base::Time::kNanosecondsPerMicrosecond));
|
| - cpu_time_ref_->SetFakeCPUTime(expect_start_time + i);
|
| + g_fakeCPUTime = expect_start_time + i;
|
|
|
| // Each trace name should be different to differentiate.
|
| const char num_char = static_cast<char>('0' + i);
|
| @@ -520,7 +474,7 @@ class BaseGpuTracerTest : public BaseGpuTest {
|
| gl_fake_queries_.SetCurrentGLTime(
|
| end_timestamp +
|
| (i * base::Time::kNanosecondsPerMicrosecond));
|
| - cpu_time_ref_->SetFakeCPUTime(expect_end_time + i);
|
| + g_fakeCPUTime = expect_start_time + i;
|
|
|
| // Each trace name should be different to differentiate.
|
| const char num_char = static_cast<char>('0' + i);
|
| @@ -528,9 +482,9 @@ class BaseGpuTracerTest : public BaseGpuTest {
|
| std::string source_trace_name = trace_name + num_char;
|
|
|
| ExpectOutputterEndMocks(outputter_ref_.get(), source_category,
|
| - source_trace_name,
|
| - expect_start_time + i, expect_end_time + i,
|
| - GetTracerType() != kTracerTypeInvalid);
|
| + source_trace_name, expect_start_time + i,
|
| + expect_end_time + i,
|
| + GetTimerType() != GPUTiming::kTimerTypeInvalid);
|
|
|
| const GpuTracerSource source = static_cast<GpuTracerSource>(i);
|
|
|
| @@ -544,7 +498,6 @@ class BaseGpuTracerTest : public BaseGpuTest {
|
| ASSERT_TRUE(tracer.EndDecoding());
|
|
|
| outputter_ref_ = NULL;
|
| - cpu_time_ref_ = NULL;
|
| }
|
|
|
| void DoDisjointTest() {
|
| @@ -568,14 +521,14 @@ class BaseGpuTracerTest : public BaseGpuTest {
|
| (end_timestamp / base::Time::kNanosecondsPerMicrosecond) + offset_time;
|
|
|
| MockGLES2Decoder decoder;
|
| - GPUTracerTester tracer(test_tracer_type_, &decoder);
|
| + EXPECT_CALL(decoder, GetGLContext()).WillOnce(Return(GetGLContext()));
|
| + GPUTracerTester tracer(&decoder);
|
| tracer.SetTracingEnabled(true);
|
|
|
| tracer.SetOutputter(outputter_ref_);
|
| - tracer.SetCPUTime(cpu_time_ref_);
|
|
|
| gl_fake_queries_.SetCurrentGLTime(start_timestamp);
|
| - cpu_time_ref_->SetFakeCPUTime(expect_start_time);
|
| + g_fakeCPUTime = expect_start_time;
|
|
|
| ASSERT_TRUE(tracer.BeginDecoding());
|
|
|
| @@ -586,7 +539,7 @@ class BaseGpuTracerTest : public BaseGpuTest {
|
| ASSERT_TRUE(tracer.Begin(category_name, trace_name, source));
|
|
|
| gl_fake_queries_.SetCurrentGLTime(end_timestamp);
|
| - cpu_time_ref_->SetFakeCPUTime(expect_end_time);
|
| + g_fakeCPUTime = expect_end_time;
|
| gl_fake_queries_.SetDisjoint();
|
|
|
| ExpectOutputterEndMocks(outputter_ref_.get(), category_name, trace_name,
|
| @@ -596,29 +549,23 @@ class BaseGpuTracerTest : public BaseGpuTest {
|
| ASSERT_TRUE(tracer.EndDecoding());
|
|
|
| outputter_ref_ = NULL;
|
| - cpu_time_ref_ = NULL;
|
| }
|
| };
|
|
|
| class InvalidTimerTracerTest : public BaseGpuTracerTest {
|
| public:
|
| - InvalidTimerTracerTest()
|
| - : BaseGpuTracerTest(kTracerTypeInvalid) {
|
| - }
|
| + InvalidTimerTracerTest() : BaseGpuTracerTest(GPUTiming::kTimerTypeInvalid) {}
|
| };
|
|
|
| class GpuARBTimerTracerTest : public BaseGpuTracerTest {
|
| public:
|
| - GpuARBTimerTracerTest()
|
| - : BaseGpuTracerTest(kTracerTypeARBTimer) {
|
| - }
|
| + GpuARBTimerTracerTest() : BaseGpuTracerTest(GPUTiming::kTimerTypeARB) {}
|
| };
|
|
|
| class GpuDisjointTimerTracerTest : public BaseGpuTracerTest {
|
| public:
|
| GpuDisjointTimerTracerTest()
|
| - : BaseGpuTracerTest(kTracerTypeDisjointTimer) {
|
| - }
|
| + : BaseGpuTracerTest(GPUTiming::kTimerTypeDisjoint) {}
|
| };
|
|
|
| TEST_F(InvalidTimerTracerTest, InvalidTimerBasicTracerTest) {
|
| @@ -649,38 +596,53 @@ TEST_F(GpuDisjointTimerTracerTest, DisjointTimerDisjointTraceTest) {
|
| DoDisjointTest();
|
| }
|
|
|
| -// Test basic functionality of the GPUTracerTester.
|
| -TEST(GPUTracerTester, IsTracingTest) {
|
| - MockGLES2Decoder decoder;
|
| - GPUTracerTester tracer_tester(kTracerTypeInvalid, &decoder);
|
| - EXPECT_FALSE(tracer_tester.IsTracing());
|
| - tracer_tester.SetTracingEnabled(true);
|
| - EXPECT_TRUE(tracer_tester.IsTracing());
|
| -}
|
| +class GPUTracerTest : public GpuServiceTest {
|
| + protected:
|
| + void SetUp() override {
|
| + g_fakeCPUTime = 0;
|
| + GpuServiceTest::SetUpWithGLVersion("3.2", "");
|
| + decoder_.reset(new MockGLES2Decoder());
|
| + EXPECT_CALL(*decoder_, GetGLContext())
|
| + .Times(AtMost(1))
|
| + .WillRepeatedly(Return(GetGLContext()));
|
| + tracer_tester_.reset(new GPUTracerTester(decoder_.get()));
|
| + }
|
| +
|
| + void TearDown() override {
|
| + tracer_tester_ = nullptr;
|
| + decoder_ = nullptr;
|
| + GpuServiceTest::TearDown();
|
| + }
|
| + scoped_ptr<MockGLES2Decoder> decoder_;
|
| + scoped_ptr<GPUTracerTester> tracer_tester_;
|
| +};
|
|
|
| -TEST(GPUTracerTester, DecodeTest) {
|
| - MockGLES2Decoder decoder;
|
| - GPUTracerTester tracer_tester(kTracerTypeInvalid, &decoder);
|
| - ASSERT_TRUE(tracer_tester.BeginDecoding());
|
| - EXPECT_FALSE(tracer_tester.BeginDecoding());
|
| - ASSERT_TRUE(tracer_tester.EndDecoding());
|
| - EXPECT_FALSE(tracer_tester.EndDecoding());
|
| +TEST_F(GPUTracerTest, IsTracingTest) {
|
| + EXPECT_FALSE(tracer_tester_->IsTracing());
|
| + tracer_tester_->SetTracingEnabled(true);
|
| + EXPECT_TRUE(tracer_tester_->IsTracing());
|
| +}
|
| +// Test basic functionality of the GPUTracerTester.
|
| +TEST_F(GPUTracerTest, DecodeTest) {
|
| + ASSERT_TRUE(tracer_tester_->BeginDecoding());
|
| + EXPECT_FALSE(tracer_tester_->BeginDecoding());
|
| + ASSERT_TRUE(tracer_tester_->EndDecoding());
|
| + EXPECT_FALSE(tracer_tester_->EndDecoding());
|
| }
|
|
|
| -TEST(GPUTracerTester, TraceDuringDecodeTest) {
|
| - MockGLES2Decoder decoder;
|
| - GPUTracerTester tracer_tester(kTracerTypeInvalid, &decoder);
|
| +TEST_F(GPUTracerTest, TraceDuringDecodeTest) {
|
| const std::string category_name("trace_category");
|
| const std::string trace_name("trace_test");
|
|
|
| - EXPECT_FALSE(tracer_tester.Begin(category_name, trace_name,
|
| - kTraceGroupMarker));
|
| + EXPECT_FALSE(
|
| + tracer_tester_->Begin(category_name, trace_name, kTraceGroupMarker));
|
|
|
| - ASSERT_TRUE(tracer_tester.BeginDecoding());
|
| - EXPECT_TRUE(tracer_tester.Begin(category_name, trace_name,
|
| - kTraceGroupMarker));
|
| - ASSERT_TRUE(tracer_tester.EndDecoding());
|
| + ASSERT_TRUE(tracer_tester_->BeginDecoding());
|
| + EXPECT_TRUE(
|
| + tracer_tester_->Begin(category_name, trace_name, kTraceGroupMarker));
|
| + ASSERT_TRUE(tracer_tester_->EndDecoding());
|
| }
|
|
|
| +} // namespace
|
| } // namespace gles2
|
| } // namespace gpu
|
|
|