OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This file contains the tests for the CommandBufferSharedState class. | 5 // This file contains the tests for the CommandBufferSharedState class. |
6 | 6 |
7 #include "gpu/command_buffer/common/command_buffer_shared.h" | 7 #include "gpu/command_buffer/common/command_buffer_shared.h" |
| 8 |
8 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/location.h" |
9 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
| 12 #include "base/single_thread_task_runner.h" |
10 #include "base/threading/thread.h" | 13 #include "base/threading/thread.h" |
11 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
12 | 15 |
13 namespace gpu { | 16 namespace gpu { |
14 | 17 |
15 class CommandBufferSharedTest : public testing::Test { | 18 class CommandBufferSharedTest : public testing::Test { |
16 protected: | 19 protected: |
17 void SetUp() override { | 20 void SetUp() override { |
18 shared_state_.reset(new CommandBufferSharedState()); | 21 shared_state_.reset(new CommandBufferSharedState()); |
19 shared_state_->Initialize(); | 22 shared_state_->Initialize(); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 } | 56 } |
54 | 57 |
55 TEST_F(CommandBufferSharedTest, TestConsistency) { | 58 TEST_F(CommandBufferSharedTest, TestConsistency) { |
56 scoped_ptr<int32[]> buffer; | 59 scoped_ptr<int32[]> buffer; |
57 buffer.reset(new int32[kSize]); | 60 buffer.reset(new int32[kSize]); |
58 base::Thread consumer("Reader Thread"); | 61 base::Thread consumer("Reader Thread"); |
59 | 62 |
60 memset(buffer.get(), 0, kSize * sizeof(int32)); | 63 memset(buffer.get(), 0, kSize * sizeof(int32)); |
61 | 64 |
62 consumer.Start(); | 65 consumer.Start(); |
63 consumer.message_loop()->PostTask( | 66 consumer.task_runner()->PostTask( |
64 FROM_HERE, base::Bind(&WriteToState, buffer.get(), | 67 FROM_HERE, base::Bind(&WriteToState, buffer.get(), shared_state_.get())); |
65 shared_state_.get())); | |
66 | 68 |
67 CommandBuffer::State last_state; | 69 CommandBuffer::State last_state; |
68 while (1) { | 70 while (1) { |
69 CommandBuffer::State state = last_state; | 71 CommandBuffer::State state = last_state; |
70 | 72 |
71 shared_state_->Read(&state); | 73 shared_state_->Read(&state); |
72 | 74 |
73 if (state.generation < last_state.generation) | 75 if (state.generation < last_state.generation) |
74 continue; | 76 continue; |
75 | 77 |
76 if (state.get_offset >= 1) { | 78 if (state.get_offset >= 1) { |
77 buffer[state.get_offset - 1] = 1; | 79 buffer[state.get_offset - 1] = 1; |
78 // Check that the state is consistent | 80 // Check that the state is consistent |
79 EXPECT_LE(last_state.token, state.token); | 81 EXPECT_LE(last_state.token, state.token); |
80 EXPECT_LE(last_state.generation, state.generation); | 82 EXPECT_LE(last_state.generation, state.generation); |
81 last_state = state; | 83 last_state = state; |
82 EXPECT_EQ(state.token, state.get_offset - 2); | 84 EXPECT_EQ(state.token, state.get_offset - 2); |
83 EXPECT_EQ(state.generation, | 85 EXPECT_EQ(state.generation, |
84 static_cast<unsigned int>(state.get_offset) + 1); | 86 static_cast<unsigned int>(state.get_offset) + 1); |
85 EXPECT_EQ(state.error, state.get_offset + 2); | 87 EXPECT_EQ(state.error, state.get_offset + 2); |
86 | 88 |
87 if (state.get_offset == kSize) | 89 if (state.get_offset == kSize) |
88 break; | 90 break; |
89 } | 91 } |
90 } | 92 } |
91 } | 93 } |
92 | 94 |
93 } // namespace gpu | 95 } // namespace gpu |
94 | 96 |
OLD | NEW |