Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(114)

Side by Side Diff: gpu/command_buffer/service/sync_point_manager_unittest.cc

Issue 1548443002: Introducing gpu::CommandBufferId as a distinct, IdType<...>-based type. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@type-safe-save-package-id-self-contained
Patch Set: Rebasing... Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gpu/command_buffer/service/sync_point_manager.cc ('k') | gpu/command_buffer/tests/gl_manager.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2015 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 #include <stdint.h> 5 #include <stdint.h>
6 6
7 #include <queue> 7 #include <queue>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "gpu/command_buffer/service/sync_point_manager.h" 10 #include "gpu/command_buffer/service/sync_point_manager.h"
(...skipping 20 matching lines...) Expand all
31 scoped_ptr<SyncPointManager> sync_point_manager_; 31 scoped_ptr<SyncPointManager> sync_point_manager_;
32 }; 32 };
33 33
34 struct SyncPointStream { 34 struct SyncPointStream {
35 scoped_refptr<SyncPointOrderData> order_data; 35 scoped_refptr<SyncPointOrderData> order_data;
36 scoped_ptr<SyncPointClient> client; 36 scoped_ptr<SyncPointClient> client;
37 std::queue<uint32_t> order_numbers; 37 std::queue<uint32_t> order_numbers;
38 38
39 SyncPointStream(SyncPointManager* sync_point_manager, 39 SyncPointStream(SyncPointManager* sync_point_manager,
40 CommandBufferNamespace namespace_id, 40 CommandBufferNamespace namespace_id,
41 uint64_t command_buffer_id) 41 CommandBufferId command_buffer_id)
42 : order_data(SyncPointOrderData::Create()), 42 : order_data(SyncPointOrderData::Create()),
43 client(sync_point_manager->CreateSyncPointClient(order_data, 43 client(sync_point_manager->CreateSyncPointClient(order_data,
44 namespace_id, 44 namespace_id,
45 command_buffer_id)) {} 45 command_buffer_id)) {}
46 46
47 ~SyncPointStream() { 47 ~SyncPointStream() {
48 order_data->Destroy(); 48 order_data->Destroy();
49 order_data = nullptr; 49 order_data = nullptr;
50 } 50 }
51 51
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 order_data->FinishProcessingOrderNumber(order_num); 96 order_data->FinishProcessingOrderNumber(order_num);
97 EXPECT_EQ(order_num, order_data->current_order_num()); 97 EXPECT_EQ(order_num, order_data->current_order_num());
98 EXPECT_EQ(order_num, order_data->processed_order_num()); 98 EXPECT_EQ(order_num, order_data->processed_order_num());
99 EXPECT_EQ(order_num, order_data->unprocessed_order_num()); 99 EXPECT_EQ(order_num, order_data->unprocessed_order_num());
100 EXPECT_FALSE(order_data->IsProcessingOrderNumber()); 100 EXPECT_FALSE(order_data->IsProcessingOrderNumber());
101 } 101 }
102 102
103 TEST_F(SyncPointManagerTest, SyncPointClientRegistration) { 103 TEST_F(SyncPointManagerTest, SyncPointClientRegistration) {
104 const CommandBufferNamespace kNamespaceId = 104 const CommandBufferNamespace kNamespaceId =
105 gpu::CommandBufferNamespace::GPU_IO; 105 gpu::CommandBufferNamespace::GPU_IO;
106 const uint64_t kBufferId = 0x123; 106 const CommandBufferId kBufferId = CommandBufferId::FromUnsafeValue(0x123);
107 107
108 scoped_refptr<SyncPointClientState> empty_state = 108 scoped_refptr<SyncPointClientState> empty_state =
109 sync_point_manager_->GetSyncPointClientState(kNamespaceId, kBufferId); 109 sync_point_manager_->GetSyncPointClientState(kNamespaceId, kBufferId);
110 EXPECT_FALSE(empty_state); 110 EXPECT_FALSE(empty_state);
111 111
112 scoped_refptr<SyncPointOrderData> order_data = SyncPointOrderData::Create(); 112 scoped_refptr<SyncPointOrderData> order_data = SyncPointOrderData::Create();
113 113
114 scoped_ptr<SyncPointClient> client = 114 scoped_ptr<SyncPointClient> client =
115 sync_point_manager_->CreateSyncPointClient(order_data, kNamespaceId, 115 sync_point_manager_->CreateSyncPointClient(order_data, kNamespaceId,
116 kBufferId); 116 kBufferId);
117 117
118 EXPECT_EQ(order_data, client->client_state()->order_data()); 118 EXPECT_EQ(order_data, client->client_state()->order_data());
119 EXPECT_EQ( 119 EXPECT_EQ(
120 client->client_state(), 120 client->client_state(),
121 sync_point_manager_->GetSyncPointClientState(kNamespaceId, kBufferId)); 121 sync_point_manager_->GetSyncPointClientState(kNamespaceId, kBufferId));
122 } 122 }
123 123
124 TEST_F(SyncPointManagerTest, BasicFenceSyncRelease) { 124 TEST_F(SyncPointManagerTest, BasicFenceSyncRelease) {
125 const CommandBufferNamespace kNamespaceId = 125 const CommandBufferNamespace kNamespaceId =
126 gpu::CommandBufferNamespace::GPU_IO; 126 gpu::CommandBufferNamespace::GPU_IO;
127 const uint64_t kBufferId = 0x123; 127 const CommandBufferId kBufferId = CommandBufferId::FromUnsafeValue(0x123);
128 128
129 scoped_refptr<SyncPointOrderData> order_data = SyncPointOrderData::Create(); 129 scoped_refptr<SyncPointOrderData> order_data = SyncPointOrderData::Create();
130 scoped_ptr<SyncPointClient> client = 130 scoped_ptr<SyncPointClient> client =
131 sync_point_manager_->CreateSyncPointClient(order_data, kNamespaceId, 131 sync_point_manager_->CreateSyncPointClient(order_data, kNamespaceId,
132 kBufferId); 132 kBufferId);
133 scoped_refptr<SyncPointClientState> client_state = client->client_state(); 133 scoped_refptr<SyncPointClientState> client_state = client->client_state();
134 134
135 EXPECT_EQ(0u, client_state->fence_sync_release()); 135 EXPECT_EQ(0u, client_state->fence_sync_release());
136 EXPECT_FALSE(client_state->IsFenceSyncReleased(1)); 136 EXPECT_FALSE(client_state->IsFenceSyncReleased(1));
137 137
138 const uint32_t order_num = 138 const uint32_t order_num =
139 order_data->GenerateUnprocessedOrderNumber(sync_point_manager_.get()); 139 order_data->GenerateUnprocessedOrderNumber(sync_point_manager_.get());
140 order_data->BeginProcessingOrderNumber(order_num); 140 order_data->BeginProcessingOrderNumber(order_num);
141 client->ReleaseFenceSync(1); 141 client->ReleaseFenceSync(1);
142 order_data->FinishProcessingOrderNumber(order_num); 142 order_data->FinishProcessingOrderNumber(order_num);
143 143
144 EXPECT_EQ(1u, client_state->fence_sync_release()); 144 EXPECT_EQ(1u, client_state->fence_sync_release());
145 EXPECT_TRUE(client_state->IsFenceSyncReleased(1)); 145 EXPECT_TRUE(client_state->IsFenceSyncReleased(1));
146 } 146 }
147 147
148 TEST_F(SyncPointManagerTest, MultipleClientsPerOrderData) { 148 TEST_F(SyncPointManagerTest, MultipleClientsPerOrderData) {
149 const CommandBufferNamespace kNamespaceId = 149 const CommandBufferNamespace kNamespaceId =
150 gpu::CommandBufferNamespace::GPU_IO; 150 gpu::CommandBufferNamespace::GPU_IO;
151 const uint64_t kBufferId1 = 0x123; 151 const CommandBufferId kBufferId1 = CommandBufferId::FromUnsafeValue(0x123);
152 const uint64_t kBufferId2 = 0x234; 152 const CommandBufferId kBufferId2 = CommandBufferId::FromUnsafeValue(0x234);
153 153
154 scoped_refptr<SyncPointOrderData> order_data = SyncPointOrderData::Create(); 154 scoped_refptr<SyncPointOrderData> order_data = SyncPointOrderData::Create();
155 scoped_ptr<SyncPointClient> client1 = 155 scoped_ptr<SyncPointClient> client1 =
156 sync_point_manager_->CreateSyncPointClient(order_data, kNamespaceId, 156 sync_point_manager_->CreateSyncPointClient(order_data, kNamespaceId,
157 kBufferId1); 157 kBufferId1);
158 scoped_ptr<SyncPointClient> client2 = 158 scoped_ptr<SyncPointClient> client2 =
159 sync_point_manager_->CreateSyncPointClient(order_data, kNamespaceId, 159 sync_point_manager_->CreateSyncPointClient(order_data, kNamespaceId,
160 kBufferId2); 160 kBufferId2);
161 161
162 scoped_refptr<SyncPointClientState> client_state1 = client1->client_state(); 162 scoped_refptr<SyncPointClientState> client_state1 = client1->client_state();
163 scoped_refptr<SyncPointClientState> client_state2 = client2->client_state(); 163 scoped_refptr<SyncPointClientState> client_state2 = client2->client_state();
164 164
165 const uint32_t order_num = 165 const uint32_t order_num =
166 order_data->GenerateUnprocessedOrderNumber(sync_point_manager_.get()); 166 order_data->GenerateUnprocessedOrderNumber(sync_point_manager_.get());
167 order_data->BeginProcessingOrderNumber(order_num); 167 order_data->BeginProcessingOrderNumber(order_num);
168 client1->ReleaseFenceSync(1); 168 client1->ReleaseFenceSync(1);
169 order_data->FinishProcessingOrderNumber(order_num); 169 order_data->FinishProcessingOrderNumber(order_num);
170 170
171 EXPECT_TRUE(client_state1->IsFenceSyncReleased(1)); 171 EXPECT_TRUE(client_state1->IsFenceSyncReleased(1));
172 EXPECT_FALSE(client_state2->IsFenceSyncReleased(1)); 172 EXPECT_FALSE(client_state2->IsFenceSyncReleased(1));
173 } 173 }
174 174
175 TEST_F(SyncPointManagerTest, BasicFenceSyncWaitRelease) { 175 TEST_F(SyncPointManagerTest, BasicFenceSyncWaitRelease) {
176 const CommandBufferNamespace kNamespaceId = 176 const CommandBufferNamespace kNamespaceId =
177 gpu::CommandBufferNamespace::GPU_IO; 177 gpu::CommandBufferNamespace::GPU_IO;
178 const uint64_t kBufferId1 = 0x123; 178 const CommandBufferId kBufferId1 = CommandBufferId::FromUnsafeValue(0x123);
179 const uint64_t kBufferId2 = 0x234; 179 const CommandBufferId kBufferId2 = CommandBufferId::FromUnsafeValue(0x234);
180 180
181 SyncPointStream release_stream(sync_point_manager_.get(), kNamespaceId, 181 SyncPointStream release_stream(sync_point_manager_.get(), kNamespaceId,
182 kBufferId1); 182 kBufferId1);
183 SyncPointStream wait_stream(sync_point_manager_.get(), kNamespaceId, 183 SyncPointStream wait_stream(sync_point_manager_.get(), kNamespaceId,
184 kBufferId2); 184 kBufferId2);
185 185
186 release_stream.AllocateOrderNum(sync_point_manager_.get()); 186 release_stream.AllocateOrderNum(sync_point_manager_.get());
187 wait_stream.AllocateOrderNum(sync_point_manager_.get()); 187 wait_stream.AllocateOrderNum(sync_point_manager_.get());
188 188
189 wait_stream.BeginProcessing(); 189 wait_stream.BeginProcessing();
190 int test_num = 10; 190 int test_num = 10;
191 const bool valid_wait = wait_stream.client->Wait( 191 const bool valid_wait = wait_stream.client->Wait(
192 release_stream.client->client_state().get(), 1, 192 release_stream.client->client_state().get(), 1,
193 base::Bind(&SyncPointManagerTest::SetIntegerFunction, &test_num, 123)); 193 base::Bind(&SyncPointManagerTest::SetIntegerFunction, &test_num, 123));
194 ASSERT_TRUE(valid_wait); 194 ASSERT_TRUE(valid_wait);
195 EXPECT_EQ(10, test_num); 195 EXPECT_EQ(10, test_num);
196 196
197 release_stream.BeginProcessing(); 197 release_stream.BeginProcessing();
198 release_stream.client->ReleaseFenceSync(1); 198 release_stream.client->ReleaseFenceSync(1);
199 EXPECT_EQ(123, test_num); 199 EXPECT_EQ(123, test_num);
200 } 200 }
201 201
202 TEST_F(SyncPointManagerTest, WaitOnSelfFails) { 202 TEST_F(SyncPointManagerTest, WaitOnSelfFails) {
203 const CommandBufferNamespace kNamespaceId = 203 const CommandBufferNamespace kNamespaceId =
204 gpu::CommandBufferNamespace::GPU_IO; 204 gpu::CommandBufferNamespace::GPU_IO;
205 const uint64_t kBufferId1 = 0x123; 205 const CommandBufferId kBufferId1 = CommandBufferId::FromUnsafeValue(0x123);
206 const uint64_t kBufferId2 = 0x234; 206 const CommandBufferId kBufferId2 = CommandBufferId::FromUnsafeValue(0x234);
207 207
208 SyncPointStream release_stream(sync_point_manager_.get(), kNamespaceId, 208 SyncPointStream release_stream(sync_point_manager_.get(), kNamespaceId,
209 kBufferId1); 209 kBufferId1);
210 SyncPointStream wait_stream(sync_point_manager_.get(), kNamespaceId, 210 SyncPointStream wait_stream(sync_point_manager_.get(), kNamespaceId,
211 kBufferId2); 211 kBufferId2);
212 212
213 // Generate wait order number first. 213 // Generate wait order number first.
214 release_stream.AllocateOrderNum(sync_point_manager_.get()); 214 release_stream.AllocateOrderNum(sync_point_manager_.get());
215 wait_stream.AllocateOrderNum(sync_point_manager_.get()); 215 wait_stream.AllocateOrderNum(sync_point_manager_.get());
216 216
217 wait_stream.BeginProcessing(); 217 wait_stream.BeginProcessing();
218 int test_num = 10; 218 int test_num = 10;
219 const bool valid_wait = wait_stream.client->Wait( 219 const bool valid_wait = wait_stream.client->Wait(
220 wait_stream.client->client_state().get(), 1, 220 wait_stream.client->client_state().get(), 1,
221 base::Bind(&SyncPointManagerTest::SetIntegerFunction, &test_num, 123)); 221 base::Bind(&SyncPointManagerTest::SetIntegerFunction, &test_num, 123));
222 EXPECT_FALSE(valid_wait); 222 EXPECT_FALSE(valid_wait);
223 EXPECT_EQ(123, test_num); 223 EXPECT_EQ(123, test_num);
224 } 224 }
225 225
226 TEST_F(SyncPointManagerTest, OutOfOrderRelease) { 226 TEST_F(SyncPointManagerTest, OutOfOrderRelease) {
227 const CommandBufferNamespace kNamespaceId = 227 const CommandBufferNamespace kNamespaceId =
228 gpu::CommandBufferNamespace::GPU_IO; 228 gpu::CommandBufferNamespace::GPU_IO;
229 const uint64_t kBufferId1 = 0x123; 229 const CommandBufferId kBufferId1 = CommandBufferId::FromUnsafeValue(0x123);
230 const uint64_t kBufferId2 = 0x234; 230 const CommandBufferId kBufferId2 = CommandBufferId::FromUnsafeValue(0x234);
231 231
232 SyncPointStream release_stream(sync_point_manager_.get(), kNamespaceId, 232 SyncPointStream release_stream(sync_point_manager_.get(), kNamespaceId,
233 kBufferId1); 233 kBufferId1);
234 SyncPointStream wait_stream(sync_point_manager_.get(), kNamespaceId, 234 SyncPointStream wait_stream(sync_point_manager_.get(), kNamespaceId,
235 kBufferId2); 235 kBufferId2);
236 236
237 // Generate wait order number first. 237 // Generate wait order number first.
238 wait_stream.AllocateOrderNum(sync_point_manager_.get()); 238 wait_stream.AllocateOrderNum(sync_point_manager_.get());
239 release_stream.AllocateOrderNum(sync_point_manager_.get()); 239 release_stream.AllocateOrderNum(sync_point_manager_.get());
240 240
241 wait_stream.BeginProcessing(); 241 wait_stream.BeginProcessing();
242 int test_num = 10; 242 int test_num = 10;
243 const bool valid_wait = wait_stream.client->Wait( 243 const bool valid_wait = wait_stream.client->Wait(
244 release_stream.client->client_state().get(), 1, 244 release_stream.client->client_state().get(), 1,
245 base::Bind(&SyncPointManagerTest::SetIntegerFunction, &test_num, 123)); 245 base::Bind(&SyncPointManagerTest::SetIntegerFunction, &test_num, 123));
246 EXPECT_FALSE(valid_wait); 246 EXPECT_FALSE(valid_wait);
247 EXPECT_EQ(123, test_num); 247 EXPECT_EQ(123, test_num);
248 } 248 }
249 249
250 TEST_F(SyncPointManagerTest, HigherOrderNumberRelease) { 250 TEST_F(SyncPointManagerTest, HigherOrderNumberRelease) {
251 const CommandBufferNamespace kNamespaceId = 251 const CommandBufferNamespace kNamespaceId =
252 gpu::CommandBufferNamespace::GPU_IO; 252 gpu::CommandBufferNamespace::GPU_IO;
253 const uint64_t kBufferId1 = 0x123; 253 const CommandBufferId kBufferId1 = CommandBufferId::FromUnsafeValue(0x123);
254 const uint64_t kBufferId2 = 0x234; 254 const CommandBufferId kBufferId2 = CommandBufferId::FromUnsafeValue(0x234);
255 255
256 SyncPointStream release_stream(sync_point_manager_.get(), kNamespaceId, 256 SyncPointStream release_stream(sync_point_manager_.get(), kNamespaceId,
257 kBufferId1); 257 kBufferId1);
258 SyncPointStream wait_stream(sync_point_manager_.get(), kNamespaceId, 258 SyncPointStream wait_stream(sync_point_manager_.get(), kNamespaceId,
259 kBufferId2); 259 kBufferId2);
260 260
261 // Generate wait order number first. 261 // Generate wait order number first.
262 wait_stream.AllocateOrderNum(sync_point_manager_.get()); 262 wait_stream.AllocateOrderNum(sync_point_manager_.get());
263 release_stream.AllocateOrderNum(sync_point_manager_.get()); 263 release_stream.AllocateOrderNum(sync_point_manager_.get());
264 264
265 // Order number was higher but it was actually released. 265 // Order number was higher but it was actually released.
266 release_stream.BeginProcessing(); 266 release_stream.BeginProcessing();
267 release_stream.client->ReleaseFenceSync(1); 267 release_stream.client->ReleaseFenceSync(1);
268 release_stream.EndProcessing(); 268 release_stream.EndProcessing();
269 269
270 wait_stream.BeginProcessing(); 270 wait_stream.BeginProcessing();
271 int test_num = 10; 271 int test_num = 10;
272 const bool valid_wait = wait_stream.client->Wait( 272 const bool valid_wait = wait_stream.client->Wait(
273 release_stream.client->client_state().get(), 1, 273 release_stream.client->client_state().get(), 1,
274 base::Bind(&SyncPointManagerTest::SetIntegerFunction, &test_num, 123)); 274 base::Bind(&SyncPointManagerTest::SetIntegerFunction, &test_num, 123));
275 EXPECT_TRUE(valid_wait); 275 EXPECT_TRUE(valid_wait);
276 EXPECT_EQ(123, test_num); 276 EXPECT_EQ(123, test_num);
277 } 277 }
278 278
279 TEST_F(SyncPointManagerTest, DestroyedClientRelease) { 279 TEST_F(SyncPointManagerTest, DestroyedClientRelease) {
280 const CommandBufferNamespace kNamespaceId = 280 const CommandBufferNamespace kNamespaceId =
281 gpu::CommandBufferNamespace::GPU_IO; 281 gpu::CommandBufferNamespace::GPU_IO;
282 const uint64_t kBufferId1 = 0x123; 282 const CommandBufferId kBufferId1 = CommandBufferId::FromUnsafeValue(0x123);
283 const uint64_t kBufferId2 = 0x234; 283 const CommandBufferId kBufferId2 = CommandBufferId::FromUnsafeValue(0x234);
284 284
285 SyncPointStream release_stream(sync_point_manager_.get(), kNamespaceId, 285 SyncPointStream release_stream(sync_point_manager_.get(), kNamespaceId,
286 kBufferId1); 286 kBufferId1);
287 SyncPointStream wait_stream(sync_point_manager_.get(), kNamespaceId, 287 SyncPointStream wait_stream(sync_point_manager_.get(), kNamespaceId,
288 kBufferId2); 288 kBufferId2);
289 289
290 release_stream.AllocateOrderNum(sync_point_manager_.get()); 290 release_stream.AllocateOrderNum(sync_point_manager_.get());
291 wait_stream.AllocateOrderNum(sync_point_manager_.get()); 291 wait_stream.AllocateOrderNum(sync_point_manager_.get());
292 292
293 wait_stream.BeginProcessing(); 293 wait_stream.BeginProcessing();
294 int test_num = 10; 294 int test_num = 10;
295 const bool valid_wait = wait_stream.client->Wait( 295 const bool valid_wait = wait_stream.client->Wait(
296 release_stream.client->client_state().get(), 1, 296 release_stream.client->client_state().get(), 1,
297 base::Bind(&SyncPointManagerTest::SetIntegerFunction, &test_num, 123)); 297 base::Bind(&SyncPointManagerTest::SetIntegerFunction, &test_num, 123));
298 EXPECT_TRUE(valid_wait); 298 EXPECT_TRUE(valid_wait);
299 EXPECT_EQ(10, test_num); 299 EXPECT_EQ(10, test_num);
300 300
301 // Destroying the client should release the wait. 301 // Destroying the client should release the wait.
302 release_stream.client.reset(); 302 release_stream.client.reset();
303 EXPECT_EQ(123, test_num); 303 EXPECT_EQ(123, test_num);
304 } 304 }
305 305
306 TEST_F(SyncPointManagerTest, NonExistentRelease) { 306 TEST_F(SyncPointManagerTest, NonExistentRelease) {
307 const CommandBufferNamespace kNamespaceId = 307 const CommandBufferNamespace kNamespaceId =
308 gpu::CommandBufferNamespace::GPU_IO; 308 gpu::CommandBufferNamespace::GPU_IO;
309 const uint64_t kBufferId1 = 0x123; 309 const CommandBufferId kBufferId1 = CommandBufferId::FromUnsafeValue(0x123);
310 const uint64_t kBufferId2 = 0x234; 310 const CommandBufferId kBufferId2 = CommandBufferId::FromUnsafeValue(0x234);
311 311
312 SyncPointStream release_stream(sync_point_manager_.get(), kNamespaceId, 312 SyncPointStream release_stream(sync_point_manager_.get(), kNamespaceId,
313 kBufferId1); 313 kBufferId1);
314 SyncPointStream wait_stream(sync_point_manager_.get(), kNamespaceId, 314 SyncPointStream wait_stream(sync_point_manager_.get(), kNamespaceId,
315 kBufferId2); 315 kBufferId2);
316 316
317 // Assign release stream order [1] and wait stream order [2]. 317 // Assign release stream order [1] and wait stream order [2].
318 // This test simply tests that a wait stream of order [2] waiting on 318 // This test simply tests that a wait stream of order [2] waiting on
319 // release stream of order [1] will still release the fence sync even 319 // release stream of order [1] will still release the fence sync even
320 // though nothing was released. 320 // though nothing was released.
(...skipping 11 matching lines...) Expand all
332 // No release but finishing the order number should automatically release. 332 // No release but finishing the order number should automatically release.
333 release_stream.BeginProcessing(); 333 release_stream.BeginProcessing();
334 EXPECT_EQ(10, test_num); 334 EXPECT_EQ(10, test_num);
335 release_stream.EndProcessing(); 335 release_stream.EndProcessing();
336 EXPECT_EQ(123, test_num); 336 EXPECT_EQ(123, test_num);
337 } 337 }
338 338
339 TEST_F(SyncPointManagerTest, NonExistentRelease2) { 339 TEST_F(SyncPointManagerTest, NonExistentRelease2) {
340 const CommandBufferNamespace kNamespaceId = 340 const CommandBufferNamespace kNamespaceId =
341 gpu::CommandBufferNamespace::GPU_IO; 341 gpu::CommandBufferNamespace::GPU_IO;
342 const uint64_t kBufferId1 = 0x123; 342 const CommandBufferId kBufferId1 = CommandBufferId::FromUnsafeValue(0x123);
343 const uint64_t kBufferId2 = 0x234; 343 const CommandBufferId kBufferId2 = CommandBufferId::FromUnsafeValue(0x234);
344 344
345 SyncPointStream release_stream(sync_point_manager_.get(), kNamespaceId, 345 SyncPointStream release_stream(sync_point_manager_.get(), kNamespaceId,
346 kBufferId1); 346 kBufferId1);
347 SyncPointStream wait_stream(sync_point_manager_.get(), kNamespaceId, 347 SyncPointStream wait_stream(sync_point_manager_.get(), kNamespaceId,
348 kBufferId2); 348 kBufferId2);
349 349
350 // Assign Release stream order [1] and assign Wait stream orders [2, 3]. 350 // Assign Release stream order [1] and assign Wait stream orders [2, 3].
351 // This test is similar to the NonExistentRelease case except 351 // This test is similar to the NonExistentRelease case except
352 // we place an extra order number in between the release and wait. 352 // we place an extra order number in between the release and wait.
353 // The wait stream [3] is waiting on release stream [1] even though 353 // The wait stream [3] is waiting on release stream [1] even though
(...skipping 22 matching lines...) Expand all
376 release_stream.BeginProcessing(); 376 release_stream.BeginProcessing();
377 ASSERT_EQ(1u, release_stream.order_data->current_order_num()); 377 ASSERT_EQ(1u, release_stream.order_data->current_order_num());
378 release_stream.EndProcessing(); 378 release_stream.EndProcessing();
379 EXPECT_TRUE(release_stream.client->client_state()->IsFenceSyncReleased(1)); 379 EXPECT_TRUE(release_stream.client->client_state()->IsFenceSyncReleased(1));
380 EXPECT_EQ(123, test_num); 380 EXPECT_EQ(123, test_num);
381 } 381 }
382 382
383 TEST_F(SyncPointManagerTest, NonExistentOrderNumRelease) { 383 TEST_F(SyncPointManagerTest, NonExistentOrderNumRelease) {
384 const CommandBufferNamespace kNamespaceId = 384 const CommandBufferNamespace kNamespaceId =
385 gpu::CommandBufferNamespace::GPU_IO; 385 gpu::CommandBufferNamespace::GPU_IO;
386 const uint64_t kBufferId1 = 0x123; 386 const CommandBufferId kBufferId1 = CommandBufferId::FromUnsafeValue(0x123);
387 const uint64_t kBufferId2 = 0x234; 387 const CommandBufferId kBufferId2 = CommandBufferId::FromUnsafeValue(0x234);
388 388
389 SyncPointStream release_stream(sync_point_manager_.get(), kNamespaceId, 389 SyncPointStream release_stream(sync_point_manager_.get(), kNamespaceId,
390 kBufferId1); 390 kBufferId1);
391 SyncPointStream wait_stream(sync_point_manager_.get(), kNamespaceId, 391 SyncPointStream wait_stream(sync_point_manager_.get(), kNamespaceId,
392 kBufferId2); 392 kBufferId2);
393 393
394 // Assign Release stream orders [1, 4] and assign Wait stream orders [2, 3]. 394 // Assign Release stream orders [1, 4] and assign Wait stream orders [2, 3].
395 // Here we are testing that wait order [3] will wait on a fence sync 395 // Here we are testing that wait order [3] will wait on a fence sync
396 // in either order [1] or order [2]. Order [2] was not actually assigned 396 // in either order [1] or order [2]. Order [2] was not actually assigned
397 // to the release stream so it is essentially non-existent to the release 397 // to the release stream so it is essentially non-existent to the release
(...skipping 26 matching lines...) Expand all
424 EXPECT_EQ(10, test_num); 424 EXPECT_EQ(10, test_num);
425 425
426 // Beginning order [4] should immediately trigger the release. 426 // Beginning order [4] should immediately trigger the release.
427 release_stream.BeginProcessing(); 427 release_stream.BeginProcessing();
428 ASSERT_EQ(4u, release_stream.order_data->current_order_num()); 428 ASSERT_EQ(4u, release_stream.order_data->current_order_num());
429 EXPECT_TRUE(release_stream.client->client_state()->IsFenceSyncReleased(1)); 429 EXPECT_TRUE(release_stream.client->client_state()->IsFenceSyncReleased(1));
430 EXPECT_EQ(123, test_num); 430 EXPECT_EQ(123, test_num);
431 } 431 }
432 432
433 } // namespace gpu 433 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/sync_point_manager.cc ('k') | gpu/command_buffer/tests/gl_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698