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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp

Issue 2812963003: Add DrawingBuffer multisample resolve unit test. (Closed)
Patch Set: Use enum. Created 3 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 } 59 }
60 60
61 private: 61 private:
62 cc::TestGpuMemoryBufferManager test_gpu_memory_buffer_manager_; 62 cc::TestGpuMemoryBufferManager test_gpu_memory_buffer_manager_;
63 }; 63 };
64 64
65 } // anonymous namespace 65 } // anonymous namespace
66 66
67 class DrawingBufferTest : public Test { 67 class DrawingBufferTest : public Test {
68 protected: 68 protected:
69 void SetUp() override { 69 void SetUp() override { Init(kDisableMultisampling); }
70
71 void Init(UseMultisampling use_multisampling) {
70 IntSize initial_size(kInitialWidth, kInitialHeight); 72 IntSize initial_size(kInitialWidth, kInitialHeight);
71 std::unique_ptr<GLES2InterfaceForTests> gl = 73 std::unique_ptr<GLES2InterfaceForTests> gl =
72 WTF::WrapUnique(new GLES2InterfaceForTests); 74 WTF::WrapUnique(new GLES2InterfaceForTests);
73 gl_ = gl.get(); 75 gl_ = gl.get();
74 SetAndSaveRestoreState(false); 76 SetAndSaveRestoreState(false);
75 std::unique_ptr<WebGraphicsContext3DProviderForTests> provider = 77 std::unique_ptr<WebGraphicsContext3DProviderForTests> provider =
76 WTF::WrapUnique( 78 WTF::WrapUnique(
77 new WebGraphicsContext3DProviderForTests(std::move(gl))); 79 new WebGraphicsContext3DProviderForTests(std::move(gl)));
78 drawing_buffer_ = DrawingBufferForTests::Create( 80 drawing_buffer_ = DrawingBufferForTests::Create(
79 std::move(provider), gl_, initial_size, DrawingBuffer::kPreserve); 81 std::move(provider), gl_, initial_size, DrawingBuffer::kPreserve,
82 use_multisampling);
80 CHECK(drawing_buffer_); 83 CHECK(drawing_buffer_);
81 } 84 }
82 85
83 // Initialize GL state with unusual values, to verify that they are restored. 86 // Initialize GL state with unusual values, to verify that they are restored.
84 // The |invert| parameter will reverse all boolean parameters, so that all 87 // The |invert| parameter will reverse all boolean parameters, so that all
85 // values are tested. 88 // values are tested.
86 void SetAndSaveRestoreState(bool invert) { 89 void SetAndSaveRestoreState(bool invert) {
87 GLboolean scissor_enabled = !invert; 90 GLboolean scissor_enabled = !invert;
88 GLfloat clear_color[4] = {0.1, 0.2, 0.3, 0.4}; 91 GLfloat clear_color[4] = {0.1, 0.2, 0.3, 0.4};
89 GLfloat clear_depth = 0.8; 92 GLfloat clear_depth = 0.8;
(...skipping 29 matching lines...) Expand all
119 122
120 gl_->SaveState(); 123 gl_->SaveState();
121 } 124 }
122 125
123 void VerifyStateWasRestored() { gl_->VerifyStateHasNotChangedSinceSave(); } 126 void VerifyStateWasRestored() { gl_->VerifyStateHasNotChangedSinceSave(); }
124 127
125 GLES2InterfaceForTests* gl_; 128 GLES2InterfaceForTests* gl_;
126 RefPtr<DrawingBufferForTests> drawing_buffer_; 129 RefPtr<DrawingBufferForTests> drawing_buffer_;
127 }; 130 };
128 131
132 class DrawingBufferTestMultisample : public DrawingBufferTest {
133 protected:
134 void SetUp() override { Init(kEnableMultisampling); }
135 };
136
137 TEST_F(DrawingBufferTestMultisample, verifyMultisampleResolve) {
138 // Initial state: already marked changed, multisampled
139 EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
140 EXPECT_TRUE(drawing_buffer_->ExplicitResolveOfMultisampleData());
141
142 // Resolve the multisample buffer
143 drawing_buffer_->ResolveAndBindForReadAndDraw();
144
145 // After resolve, acknowledge new content
146 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
147 // No new content
148 EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
149
150 drawing_buffer_->BeginDestruction();
151 }
152
129 TEST_F(DrawingBufferTest, verifyResizingProperlyAffectsMailboxes) { 153 TEST_F(DrawingBufferTest, verifyResizingProperlyAffectsMailboxes) {
130 VerifyStateWasRestored(); 154 VerifyStateWasRestored();
131 cc::TextureMailbox texture_mailbox; 155 cc::TextureMailbox texture_mailbox;
132 std::unique_ptr<cc::SingleReleaseCallback> release_callback; 156 std::unique_ptr<cc::SingleReleaseCallback> release_callback;
133 157
134 IntSize initial_size(kInitialWidth, kInitialHeight); 158 IntSize initial_size(kInitialWidth, kInitialHeight);
135 IntSize alternate_size(kInitialWidth, kAlternateHeight); 159 IntSize alternate_size(kInitialWidth, kAlternateHeight);
136 160
137 // Produce one mailbox at size 100x100. 161 // Produce one mailbox at size 100x100.
138 drawing_buffer_->MarkContentsChanged(); 162 EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
139 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox, 163 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox,
140 &release_callback)); 164 &release_callback));
141 VerifyStateWasRestored(); 165 VerifyStateWasRestored();
142 EXPECT_EQ(initial_size, gl_->MostRecentlyProducedSize()); 166 EXPECT_EQ(initial_size, gl_->MostRecentlyProducedSize());
143 167
144 // Resize to 100x50. 168 // Resize to 100x50.
145 drawing_buffer_->Resize(alternate_size); 169 drawing_buffer_->Resize(alternate_size);
146 VerifyStateWasRestored(); 170 VerifyStateWasRestored();
147 release_callback->Run(gpu::SyncToken(), false /* lostResource */); 171 release_callback->Run(gpu::SyncToken(), false /* lostResource */);
148 VerifyStateWasRestored(); 172 VerifyStateWasRestored();
149 173
150 // Produce a mailbox at this size. 174 // Produce a mailbox at this size.
151 drawing_buffer_->MarkContentsChanged(); 175 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
152 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox, 176 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox,
153 &release_callback)); 177 &release_callback));
154 EXPECT_EQ(alternate_size, gl_->MostRecentlyProducedSize()); 178 EXPECT_EQ(alternate_size, gl_->MostRecentlyProducedSize());
155 VerifyStateWasRestored(); 179 VerifyStateWasRestored();
156 180
157 // Reset to initial size. 181 // Reset to initial size.
158 drawing_buffer_->Resize(initial_size); 182 drawing_buffer_->Resize(initial_size);
159 VerifyStateWasRestored(); 183 VerifyStateWasRestored();
160 SetAndSaveRestoreState(true); 184 SetAndSaveRestoreState(true);
161 release_callback->Run(gpu::SyncToken(), false /* lostResource */); 185 release_callback->Run(gpu::SyncToken(), false /* lostResource */);
162 VerifyStateWasRestored(); 186 VerifyStateWasRestored();
163 187
164 // Prepare another mailbox and verify that it's the correct size. 188 // Prepare another mailbox and verify that it's the correct size.
165 drawing_buffer_->MarkContentsChanged(); 189 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
166 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox, 190 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox,
167 &release_callback)); 191 &release_callback));
168 EXPECT_EQ(initial_size, gl_->MostRecentlyProducedSize()); 192 EXPECT_EQ(initial_size, gl_->MostRecentlyProducedSize());
169 VerifyStateWasRestored(); 193 VerifyStateWasRestored();
170 194
171 // Prepare one final mailbox and verify that it's the correct size. 195 // Prepare one final mailbox and verify that it's the correct size.
172 release_callback->Run(gpu::SyncToken(), false /* lostResource */); 196 release_callback->Run(gpu::SyncToken(), false /* lostResource */);
173 drawing_buffer_->MarkContentsChanged(); 197 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
174 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox, 198 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox,
175 &release_callback)); 199 &release_callback));
176 VerifyStateWasRestored(); 200 VerifyStateWasRestored();
177 EXPECT_EQ(initial_size, gl_->MostRecentlyProducedSize()); 201 EXPECT_EQ(initial_size, gl_->MostRecentlyProducedSize());
178 release_callback->Run(gpu::SyncToken(), false /* lostResource */); 202 release_callback->Run(gpu::SyncToken(), false /* lostResource */);
179 drawing_buffer_->BeginDestruction(); 203 drawing_buffer_->BeginDestruction();
180 } 204 }
181 205
182 TEST_F(DrawingBufferTest, verifyDestructionCompleteAfterAllMailboxesReleased) { 206 TEST_F(DrawingBufferTest, verifyDestructionCompleteAfterAllMailboxesReleased) {
183 bool live = true; 207 bool live = true;
184 drawing_buffer_->live_ = &live; 208 drawing_buffer_->live_ = &live;
185 209
186 cc::TextureMailbox texture_mailbox1; 210 cc::TextureMailbox texture_mailbox1;
187 std::unique_ptr<cc::SingleReleaseCallback> release_callback1; 211 std::unique_ptr<cc::SingleReleaseCallback> release_callback1;
188 cc::TextureMailbox texture_mailbox2; 212 cc::TextureMailbox texture_mailbox2;
189 std::unique_ptr<cc::SingleReleaseCallback> release_callback2; 213 std::unique_ptr<cc::SingleReleaseCallback> release_callback2;
190 cc::TextureMailbox texture_mailbox3; 214 cc::TextureMailbox texture_mailbox3;
191 std::unique_ptr<cc::SingleReleaseCallback> release_callback3; 215 std::unique_ptr<cc::SingleReleaseCallback> release_callback3;
192 216
193 IntSize initial_size(kInitialWidth, kInitialHeight); 217 IntSize initial_size(kInitialWidth, kInitialHeight);
194 218
195 // Produce mailboxes. 219 // Produce mailboxes.
196 drawing_buffer_->MarkContentsChanged(); 220 EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
197 drawing_buffer_->ClearFramebuffers(GL_STENCIL_BUFFER_BIT); 221 drawing_buffer_->ClearFramebuffers(GL_STENCIL_BUFFER_BIT);
198 VerifyStateWasRestored(); 222 VerifyStateWasRestored();
199 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox1, 223 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox1,
200 &release_callback1)); 224 &release_callback1));
201 drawing_buffer_->MarkContentsChanged(); 225 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
202 drawing_buffer_->ClearFramebuffers(GL_DEPTH_BUFFER_BIT); 226 drawing_buffer_->ClearFramebuffers(GL_DEPTH_BUFFER_BIT);
203 VerifyStateWasRestored(); 227 VerifyStateWasRestored();
204 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox2, 228 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox2,
205 &release_callback2)); 229 &release_callback2));
206 drawing_buffer_->MarkContentsChanged(); 230 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
207 drawing_buffer_->ClearFramebuffers(GL_COLOR_BUFFER_BIT); 231 drawing_buffer_->ClearFramebuffers(GL_COLOR_BUFFER_BIT);
208 VerifyStateWasRestored(); 232 VerifyStateWasRestored();
209 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox3, 233 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox3,
210 &release_callback3)); 234 &release_callback3));
211 235
212 drawing_buffer_->MarkContentsChanged(); 236 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
213 release_callback1->Run(gpu::SyncToken(), false /* lostResource */); 237 release_callback1->Run(gpu::SyncToken(), false /* lostResource */);
214 238
215 drawing_buffer_->BeginDestruction(); 239 drawing_buffer_->BeginDestruction();
216 ASSERT_EQ(live, true); 240 ASSERT_EQ(live, true);
217 241
218 DrawingBufferForTests* raw_pointer = drawing_buffer_.Get(); 242 DrawingBufferForTests* raw_pointer = drawing_buffer_.Get();
219 drawing_buffer_.Clear(); 243 drawing_buffer_.Clear();
220 ASSERT_EQ(live, true); 244 ASSERT_EQ(live, true);
221 245
222 raw_pointer->MarkContentsChanged(); 246 EXPECT_FALSE(raw_pointer->MarkContentsChanged());
223 release_callback2->Run(gpu::SyncToken(), false /* lostResource */); 247 release_callback2->Run(gpu::SyncToken(), false /* lostResource */);
224 ASSERT_EQ(live, true); 248 ASSERT_EQ(live, true);
225 249
226 raw_pointer->MarkContentsChanged(); 250 EXPECT_FALSE(raw_pointer->MarkContentsChanged());
227 release_callback3->Run(gpu::SyncToken(), false /* lostResource */); 251 release_callback3->Run(gpu::SyncToken(), false /* lostResource */);
228 ASSERT_EQ(live, false); 252 ASSERT_EQ(live, false);
229 } 253 }
230 254
231 TEST_F(DrawingBufferTest, verifyDrawingBufferStaysAliveIfResourcesAreLost) { 255 TEST_F(DrawingBufferTest, verifyDrawingBufferStaysAliveIfResourcesAreLost) {
232 bool live = true; 256 bool live = true;
233 drawing_buffer_->live_ = &live; 257 drawing_buffer_->live_ = &live;
234 258
235 cc::TextureMailbox texture_mailbox1; 259 cc::TextureMailbox texture_mailbox1;
236 std::unique_ptr<cc::SingleReleaseCallback> release_callback1; 260 std::unique_ptr<cc::SingleReleaseCallback> release_callback1;
237 cc::TextureMailbox texture_mailbox2; 261 cc::TextureMailbox texture_mailbox2;
238 std::unique_ptr<cc::SingleReleaseCallback> release_callback2; 262 std::unique_ptr<cc::SingleReleaseCallback> release_callback2;
239 cc::TextureMailbox texture_mailbox3; 263 cc::TextureMailbox texture_mailbox3;
240 std::unique_ptr<cc::SingleReleaseCallback> release_callback3; 264 std::unique_ptr<cc::SingleReleaseCallback> release_callback3;
241 265
242 drawing_buffer_->MarkContentsChanged(); 266 EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
243 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox1, 267 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox1,
244 &release_callback1)); 268 &release_callback1));
245 VerifyStateWasRestored(); 269 VerifyStateWasRestored();
246 drawing_buffer_->MarkContentsChanged(); 270 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
247 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox2, 271 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox2,
248 &release_callback2)); 272 &release_callback2));
249 VerifyStateWasRestored(); 273 VerifyStateWasRestored();
250 drawing_buffer_->MarkContentsChanged(); 274 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
251 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox3, 275 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox3,
252 &release_callback3)); 276 &release_callback3));
253 VerifyStateWasRestored(); 277 VerifyStateWasRestored();
254 278
255 drawing_buffer_->MarkContentsChanged(); 279 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
256 release_callback1->Run(gpu::SyncToken(), true /* lostResource */); 280 release_callback1->Run(gpu::SyncToken(), true /* lostResource */);
257 EXPECT_EQ(live, true); 281 EXPECT_EQ(live, true);
258 282
259 drawing_buffer_->BeginDestruction(); 283 drawing_buffer_->BeginDestruction();
260 EXPECT_EQ(live, true); 284 EXPECT_EQ(live, true);
261 285
262 drawing_buffer_->MarkContentsChanged(); 286 EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
263 release_callback2->Run(gpu::SyncToken(), false /* lostResource */); 287 release_callback2->Run(gpu::SyncToken(), false /* lostResource */);
264 EXPECT_EQ(live, true); 288 EXPECT_EQ(live, true);
265 289
266 DrawingBufferForTests* raw_ptr = drawing_buffer_.Get(); 290 DrawingBufferForTests* raw_ptr = drawing_buffer_.Get();
267 drawing_buffer_.Clear(); 291 drawing_buffer_.Clear();
268 EXPECT_EQ(live, true); 292 EXPECT_EQ(live, true);
269 293
270 raw_ptr->MarkContentsChanged(); 294 EXPECT_FALSE(raw_ptr->MarkContentsChanged());
271 release_callback3->Run(gpu::SyncToken(), true /* lostResource */); 295 release_callback3->Run(gpu::SyncToken(), true /* lostResource */);
272 EXPECT_EQ(live, false); 296 EXPECT_EQ(live, false);
273 } 297 }
274 298
275 TEST_F(DrawingBufferTest, verifyOnlyOneRecycledMailboxMustBeKept) { 299 TEST_F(DrawingBufferTest, verifyOnlyOneRecycledMailboxMustBeKept) {
276 cc::TextureMailbox texture_mailbox1; 300 cc::TextureMailbox texture_mailbox1;
277 std::unique_ptr<cc::SingleReleaseCallback> release_callback1; 301 std::unique_ptr<cc::SingleReleaseCallback> release_callback1;
278 cc::TextureMailbox texture_mailbox2; 302 cc::TextureMailbox texture_mailbox2;
279 std::unique_ptr<cc::SingleReleaseCallback> release_callback2; 303 std::unique_ptr<cc::SingleReleaseCallback> release_callback2;
280 cc::TextureMailbox texture_mailbox3; 304 cc::TextureMailbox texture_mailbox3;
281 std::unique_ptr<cc::SingleReleaseCallback> release_callback3; 305 std::unique_ptr<cc::SingleReleaseCallback> release_callback3;
282 306
283 // Produce mailboxes. 307 // Produce mailboxes.
284 drawing_buffer_->MarkContentsChanged(); 308 EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
285 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox1, 309 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox1,
286 &release_callback1)); 310 &release_callback1));
287 drawing_buffer_->MarkContentsChanged(); 311 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
288 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox2, 312 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox2,
289 &release_callback2)); 313 &release_callback2));
290 drawing_buffer_->MarkContentsChanged(); 314 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
291 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox3, 315 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox3,
292 &release_callback3)); 316 &release_callback3));
293 317
294 // Release mailboxes by specific order; 1, 3, 2. 318 // Release mailboxes by specific order; 1, 3, 2.
295 drawing_buffer_->MarkContentsChanged(); 319 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
296 release_callback1->Run(gpu::SyncToken(), false /* lostResource */); 320 release_callback1->Run(gpu::SyncToken(), false /* lostResource */);
297 drawing_buffer_->MarkContentsChanged(); 321 EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
298 release_callback3->Run(gpu::SyncToken(), false /* lostResource */); 322 release_callback3->Run(gpu::SyncToken(), false /* lostResource */);
299 drawing_buffer_->MarkContentsChanged(); 323 EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
300 release_callback2->Run(gpu::SyncToken(), false /* lostResource */); 324 release_callback2->Run(gpu::SyncToken(), false /* lostResource */);
301 325
302 // The first recycled mailbox must be 2. 1 and 3 were deleted by FIFO order 326 // The first recycled mailbox must be 2. 1 and 3 were deleted by FIFO order
303 // because DrawingBuffer never keeps more than one mailbox. 327 // because DrawingBuffer never keeps more than one mailbox.
304 cc::TextureMailbox recycled_texture_mailbox1; 328 cc::TextureMailbox recycled_texture_mailbox1;
305 std::unique_ptr<cc::SingleReleaseCallback> recycled_release_callback1; 329 std::unique_ptr<cc::SingleReleaseCallback> recycled_release_callback1;
306 drawing_buffer_->MarkContentsChanged(); 330 EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
307 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox( 331 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(
308 &recycled_texture_mailbox1, &recycled_release_callback1)); 332 &recycled_texture_mailbox1, &recycled_release_callback1));
309 EXPECT_EQ(texture_mailbox2.mailbox(), recycled_texture_mailbox1.mailbox()); 333 EXPECT_EQ(texture_mailbox2.mailbox(), recycled_texture_mailbox1.mailbox());
310 334
311 // The second recycled mailbox must be a new mailbox. 335 // The second recycled mailbox must be a new mailbox.
312 cc::TextureMailbox recycled_texture_mailbox2; 336 cc::TextureMailbox recycled_texture_mailbox2;
313 std::unique_ptr<cc::SingleReleaseCallback> recycled_release_callback2; 337 std::unique_ptr<cc::SingleReleaseCallback> recycled_release_callback2;
314 drawing_buffer_->MarkContentsChanged(); 338 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
315 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox( 339 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(
316 &recycled_texture_mailbox2, &recycled_release_callback2)); 340 &recycled_texture_mailbox2, &recycled_release_callback2));
317 EXPECT_NE(texture_mailbox1.mailbox(), recycled_texture_mailbox2.mailbox()); 341 EXPECT_NE(texture_mailbox1.mailbox(), recycled_texture_mailbox2.mailbox());
318 EXPECT_NE(texture_mailbox2.mailbox(), recycled_texture_mailbox2.mailbox()); 342 EXPECT_NE(texture_mailbox2.mailbox(), recycled_texture_mailbox2.mailbox());
319 EXPECT_NE(texture_mailbox3.mailbox(), recycled_texture_mailbox2.mailbox()); 343 EXPECT_NE(texture_mailbox3.mailbox(), recycled_texture_mailbox2.mailbox());
320 344
321 recycled_release_callback1->Run(gpu::SyncToken(), false /* lostResource */); 345 recycled_release_callback1->Run(gpu::SyncToken(), false /* lostResource */);
322 recycled_release_callback2->Run(gpu::SyncToken(), false /* lostResource */); 346 recycled_release_callback2->Run(gpu::SyncToken(), false /* lostResource */);
323 drawing_buffer_->BeginDestruction(); 347 drawing_buffer_->BeginDestruction();
324 } 348 }
325 349
326 TEST_F(DrawingBufferTest, verifyInsertAndWaitSyncTokenCorrectly) { 350 TEST_F(DrawingBufferTest, verifyInsertAndWaitSyncTokenCorrectly) {
327 cc::TextureMailbox texture_mailbox; 351 cc::TextureMailbox texture_mailbox;
328 std::unique_ptr<cc::SingleReleaseCallback> release_callback; 352 std::unique_ptr<cc::SingleReleaseCallback> release_callback;
329 353
330 // Produce mailboxes. 354 // Produce mailboxes.
331 drawing_buffer_->MarkContentsChanged(); 355 EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
332 EXPECT_EQ(gpu::SyncToken(), gl_->MostRecentlyWaitedSyncToken()); 356 EXPECT_EQ(gpu::SyncToken(), gl_->MostRecentlyWaitedSyncToken());
333 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox, 357 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox,
334 &release_callback)); 358 &release_callback));
335 // PrepareTextureMailbox() does not wait for any sync point. 359 // PrepareTextureMailbox() does not wait for any sync point.
336 EXPECT_EQ(gpu::SyncToken(), gl_->MostRecentlyWaitedSyncToken()); 360 EXPECT_EQ(gpu::SyncToken(), gl_->MostRecentlyWaitedSyncToken());
337 361
338 gpu::SyncToken wait_sync_token; 362 gpu::SyncToken wait_sync_token;
339 gl_->GenSyncTokenCHROMIUM(gl_->InsertFenceSyncCHROMIUM(), 363 gl_->GenSyncTokenCHROMIUM(gl_->InsertFenceSyncCHROMIUM(),
340 wait_sync_token.GetData()); 364 wait_sync_token.GetData());
341 release_callback->Run(wait_sync_token, false /* lostResource */); 365 release_callback->Run(wait_sync_token, false /* lostResource */);
342 // m_drawingBuffer will wait for the sync point when recycling. 366 // m_drawingBuffer will wait for the sync point when recycling.
343 EXPECT_EQ(gpu::SyncToken(), gl_->MostRecentlyWaitedSyncToken()); 367 EXPECT_EQ(gpu::SyncToken(), gl_->MostRecentlyWaitedSyncToken());
344 368
345 drawing_buffer_->MarkContentsChanged(); 369 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
346 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox, 370 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox,
347 &release_callback)); 371 &release_callback));
348 // m_drawingBuffer waits for the sync point when recycling in 372 // m_drawingBuffer waits for the sync point when recycling in
349 // PrepareTextureMailbox(). 373 // PrepareTextureMailbox().
350 EXPECT_EQ(wait_sync_token, gl_->MostRecentlyWaitedSyncToken()); 374 EXPECT_EQ(wait_sync_token, gl_->MostRecentlyWaitedSyncToken());
351 375
352 drawing_buffer_->BeginDestruction(); 376 drawing_buffer_->BeginDestruction();
353 gl_->GenSyncTokenCHROMIUM(gl_->InsertFenceSyncCHROMIUM(), 377 gl_->GenSyncTokenCHROMIUM(gl_->InsertFenceSyncCHROMIUM(),
354 wait_sync_token.GetData()); 378 wait_sync_token.GetData());
355 release_callback->Run(wait_sync_token, false /* lostResource */); 379 release_callback->Run(wait_sync_token, false /* lostResource */);
(...skipping 12 matching lines...) Expand all
368 WTF::WrapUnique(new GLES2InterfaceForTests); 392 WTF::WrapUnique(new GLES2InterfaceForTests);
369 gl_ = gl.get(); 393 gl_ = gl.get();
370 SetAndSaveRestoreState(true); 394 SetAndSaveRestoreState(true);
371 std::unique_ptr<WebGraphicsContext3DProviderForTests> provider = 395 std::unique_ptr<WebGraphicsContext3DProviderForTests> provider =
372 WTF::WrapUnique( 396 WTF::WrapUnique(
373 new WebGraphicsContext3DProviderForTests(std::move(gl))); 397 new WebGraphicsContext3DProviderForTests(std::move(gl)));
374 RuntimeEnabledFeatures::setWebGLImageChromiumEnabled(true); 398 RuntimeEnabledFeatures::setWebGLImageChromiumEnabled(true);
375 image_id0_ = gl_->NextImageIdToBeCreated(); 399 image_id0_ = gl_->NextImageIdToBeCreated();
376 EXPECT_CALL(*gl_, BindTexImage2DMock(image_id0_)).Times(1); 400 EXPECT_CALL(*gl_, BindTexImage2DMock(image_id0_)).Times(1);
377 drawing_buffer_ = DrawingBufferForTests::Create( 401 drawing_buffer_ = DrawingBufferForTests::Create(
378 std::move(provider), gl_, initial_size, DrawingBuffer::kPreserve); 402 std::move(provider), gl_, initial_size, DrawingBuffer::kPreserve,
403 kDisableMultisampling);
379 CHECK(drawing_buffer_); 404 CHECK(drawing_buffer_);
380 testing::Mock::VerifyAndClearExpectations(gl_); 405 testing::Mock::VerifyAndClearExpectations(gl_);
381 } 406 }
382 407
383 void TearDown() override { 408 void TearDown() override {
384 RuntimeEnabledFeatures::setWebGLImageChromiumEnabled(false); 409 RuntimeEnabledFeatures::setWebGLImageChromiumEnabled(false);
385 platform_.reset(); 410 platform_.reset();
386 } 411 }
387 412
388 GLuint image_id0_; 413 GLuint image_id0_;
389 std::unique_ptr<ScopedTestingPlatformSupport<FakePlatformSupport>> platform_; 414 std::unique_ptr<ScopedTestingPlatformSupport<FakePlatformSupport>> platform_;
390 }; 415 };
391 416
392 TEST_F(DrawingBufferImageChromiumTest, verifyResizingReallocatesImages) { 417 TEST_F(DrawingBufferImageChromiumTest, verifyResizingReallocatesImages) {
393 cc::TextureMailbox texture_mailbox; 418 cc::TextureMailbox texture_mailbox;
394 std::unique_ptr<cc::SingleReleaseCallback> release_callback; 419 std::unique_ptr<cc::SingleReleaseCallback> release_callback;
395 420
396 IntSize initial_size(kInitialWidth, kInitialHeight); 421 IntSize initial_size(kInitialWidth, kInitialHeight);
397 IntSize alternate_size(kInitialWidth, kAlternateHeight); 422 IntSize alternate_size(kInitialWidth, kAlternateHeight);
398 423
399 GLuint image_id1 = gl_->NextImageIdToBeCreated(); 424 GLuint image_id1 = gl_->NextImageIdToBeCreated();
400 EXPECT_CALL(*gl_, BindTexImage2DMock(image_id1)).Times(1); 425 EXPECT_CALL(*gl_, BindTexImage2DMock(image_id1)).Times(1);
401 // Produce one mailbox at size 100x100. 426 // Produce one mailbox at size 100x100.
402 drawing_buffer_->MarkContentsChanged(); 427 EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
403 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox, 428 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox,
404 &release_callback)); 429 &release_callback));
405 EXPECT_EQ(initial_size, gl_->MostRecentlyProducedSize()); 430 EXPECT_EQ(initial_size, gl_->MostRecentlyProducedSize());
406 EXPECT_TRUE(texture_mailbox.is_overlay_candidate()); 431 EXPECT_TRUE(texture_mailbox.is_overlay_candidate());
407 testing::Mock::VerifyAndClearExpectations(gl_); 432 testing::Mock::VerifyAndClearExpectations(gl_);
408 VerifyStateWasRestored(); 433 VerifyStateWasRestored();
409 434
410 GLuint image_id2 = gl_->NextImageIdToBeCreated(); 435 GLuint image_id2 = gl_->NextImageIdToBeCreated();
411 EXPECT_CALL(*gl_, BindTexImage2DMock(image_id2)).Times(1); 436 EXPECT_CALL(*gl_, BindTexImage2DMock(image_id2)).Times(1);
412 EXPECT_CALL(*gl_, DestroyImageMock(image_id0_)).Times(1); 437 EXPECT_CALL(*gl_, DestroyImageMock(image_id0_)).Times(1);
413 EXPECT_CALL(*gl_, ReleaseTexImage2DMock(image_id0_)).Times(1); 438 EXPECT_CALL(*gl_, ReleaseTexImage2DMock(image_id0_)).Times(1);
414 EXPECT_CALL(*gl_, DestroyImageMock(image_id1)).Times(1); 439 EXPECT_CALL(*gl_, DestroyImageMock(image_id1)).Times(1);
415 EXPECT_CALL(*gl_, ReleaseTexImage2DMock(image_id1)).Times(1); 440 EXPECT_CALL(*gl_, ReleaseTexImage2DMock(image_id1)).Times(1);
416 // Resize to 100x50. 441 // Resize to 100x50.
417 drawing_buffer_->Resize(alternate_size); 442 drawing_buffer_->Resize(alternate_size);
418 VerifyStateWasRestored(); 443 VerifyStateWasRestored();
419 release_callback->Run(gpu::SyncToken(), false /* lostResource */); 444 release_callback->Run(gpu::SyncToken(), false /* lostResource */);
420 VerifyStateWasRestored(); 445 VerifyStateWasRestored();
421 testing::Mock::VerifyAndClearExpectations(gl_); 446 testing::Mock::VerifyAndClearExpectations(gl_);
422 447
423 GLuint image_id3 = gl_->NextImageIdToBeCreated(); 448 GLuint image_id3 = gl_->NextImageIdToBeCreated();
424 EXPECT_CALL(*gl_, BindTexImage2DMock(image_id3)).Times(1); 449 EXPECT_CALL(*gl_, BindTexImage2DMock(image_id3)).Times(1);
425 // Produce a mailbox at this size. 450 // Produce a mailbox at this size.
426 drawing_buffer_->MarkContentsChanged(); 451 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
427 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox, 452 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox,
428 &release_callback)); 453 &release_callback));
429 EXPECT_EQ(alternate_size, gl_->MostRecentlyProducedSize()); 454 EXPECT_EQ(alternate_size, gl_->MostRecentlyProducedSize());
430 EXPECT_TRUE(texture_mailbox.is_overlay_candidate()); 455 EXPECT_TRUE(texture_mailbox.is_overlay_candidate());
431 testing::Mock::VerifyAndClearExpectations(gl_); 456 testing::Mock::VerifyAndClearExpectations(gl_);
432 457
433 GLuint image_id4 = gl_->NextImageIdToBeCreated(); 458 GLuint image_id4 = gl_->NextImageIdToBeCreated();
434 EXPECT_CALL(*gl_, BindTexImage2DMock(image_id4)).Times(1); 459 EXPECT_CALL(*gl_, BindTexImage2DMock(image_id4)).Times(1);
435 EXPECT_CALL(*gl_, DestroyImageMock(image_id2)).Times(1); 460 EXPECT_CALL(*gl_, DestroyImageMock(image_id2)).Times(1);
436 EXPECT_CALL(*gl_, ReleaseTexImage2DMock(image_id2)).Times(1); 461 EXPECT_CALL(*gl_, ReleaseTexImage2DMock(image_id2)).Times(1);
437 EXPECT_CALL(*gl_, DestroyImageMock(image_id3)).Times(1); 462 EXPECT_CALL(*gl_, DestroyImageMock(image_id3)).Times(1);
438 EXPECT_CALL(*gl_, ReleaseTexImage2DMock(image_id3)).Times(1); 463 EXPECT_CALL(*gl_, ReleaseTexImage2DMock(image_id3)).Times(1);
439 // Reset to initial size. 464 // Reset to initial size.
440 drawing_buffer_->Resize(initial_size); 465 drawing_buffer_->Resize(initial_size);
441 VerifyStateWasRestored(); 466 VerifyStateWasRestored();
442 release_callback->Run(gpu::SyncToken(), false /* lostResource */); 467 release_callback->Run(gpu::SyncToken(), false /* lostResource */);
443 VerifyStateWasRestored(); 468 VerifyStateWasRestored();
444 testing::Mock::VerifyAndClearExpectations(gl_); 469 testing::Mock::VerifyAndClearExpectations(gl_);
445 470
446 GLuint image_id5 = gl_->NextImageIdToBeCreated(); 471 GLuint image_id5 = gl_->NextImageIdToBeCreated();
447 EXPECT_CALL(*gl_, BindTexImage2DMock(image_id5)).Times(1); 472 EXPECT_CALL(*gl_, BindTexImage2DMock(image_id5)).Times(1);
448 // Prepare another mailbox and verify that it's the correct size. 473 // Prepare another mailbox and verify that it's the correct size.
449 drawing_buffer_->MarkContentsChanged(); 474 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
450 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox, 475 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox,
451 &release_callback)); 476 &release_callback));
452 EXPECT_EQ(initial_size, gl_->MostRecentlyProducedSize()); 477 EXPECT_EQ(initial_size, gl_->MostRecentlyProducedSize());
453 EXPECT_TRUE(texture_mailbox.is_overlay_candidate()); 478 EXPECT_TRUE(texture_mailbox.is_overlay_candidate());
454 testing::Mock::VerifyAndClearExpectations(gl_); 479 testing::Mock::VerifyAndClearExpectations(gl_);
455 480
456 // Prepare one final mailbox and verify that it's the correct size. 481 // Prepare one final mailbox and verify that it's the correct size.
457 release_callback->Run(gpu::SyncToken(), false /* lostResource */); 482 release_callback->Run(gpu::SyncToken(), false /* lostResource */);
458 drawing_buffer_->MarkContentsChanged(); 483 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
459 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox, 484 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox,
460 &release_callback)); 485 &release_callback));
461 EXPECT_EQ(initial_size, gl_->MostRecentlyProducedSize()); 486 EXPECT_EQ(initial_size, gl_->MostRecentlyProducedSize());
462 EXPECT_TRUE(texture_mailbox.is_overlay_candidate()); 487 EXPECT_TRUE(texture_mailbox.is_overlay_candidate());
463 release_callback->Run(gpu::SyncToken(), false /* lostResource */); 488 release_callback->Run(gpu::SyncToken(), false /* lostResource */);
464 489
465 EXPECT_CALL(*gl_, DestroyImageMock(image_id5)).Times(1); 490 EXPECT_CALL(*gl_, DestroyImageMock(image_id5)).Times(1);
466 EXPECT_CALL(*gl_, ReleaseTexImage2DMock(image_id5)).Times(1); 491 EXPECT_CALL(*gl_, ReleaseTexImage2DMock(image_id5)).Times(1);
467 EXPECT_CALL(*gl_, DestroyImageMock(image_id4)).Times(1); 492 EXPECT_CALL(*gl_, DestroyImageMock(image_id4)).Times(1);
468 EXPECT_CALL(*gl_, ReleaseTexImage2DMock(image_id4)).Times(1); 493 EXPECT_CALL(*gl_, ReleaseTexImage2DMock(image_id4)).Times(1);
469 drawing_buffer_->BeginDestruction(); 494 drawing_buffer_->BeginDestruction();
470 testing::Mock::VerifyAndClearExpectations(gl_); 495 testing::Mock::VerifyAndClearExpectations(gl_);
471 } 496 }
472 497
473 TEST_F(DrawingBufferImageChromiumTest, allocationFailure) { 498 TEST_F(DrawingBufferImageChromiumTest, allocationFailure) {
474 cc::TextureMailbox texture_mailbox1; 499 cc::TextureMailbox texture_mailbox1;
475 std::unique_ptr<cc::SingleReleaseCallback> release_callback1; 500 std::unique_ptr<cc::SingleReleaseCallback> release_callback1;
476 cc::TextureMailbox texture_mailbox2; 501 cc::TextureMailbox texture_mailbox2;
477 std::unique_ptr<cc::SingleReleaseCallback> release_callback2; 502 std::unique_ptr<cc::SingleReleaseCallback> release_callback2;
478 cc::TextureMailbox texture_mailbox3; 503 cc::TextureMailbox texture_mailbox3;
479 std::unique_ptr<cc::SingleReleaseCallback> release_callback3; 504 std::unique_ptr<cc::SingleReleaseCallback> release_callback3;
480 505
481 // Request a mailbox. An image should already be created. Everything works 506 // Request a mailbox. An image should already be created. Everything works
482 // as expected. 507 // as expected.
483 EXPECT_CALL(*gl_, BindTexImage2DMock(_)).Times(1); 508 EXPECT_CALL(*gl_, BindTexImage2DMock(_)).Times(1);
484 IntSize initial_size(kInitialWidth, kInitialHeight); 509 IntSize initial_size(kInitialWidth, kInitialHeight);
485 drawing_buffer_->MarkContentsChanged(); 510 EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
486 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox1, 511 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox1,
487 &release_callback1)); 512 &release_callback1));
488 EXPECT_TRUE(texture_mailbox1.is_overlay_candidate()); 513 EXPECT_TRUE(texture_mailbox1.is_overlay_candidate());
489 testing::Mock::VerifyAndClearExpectations(gl_); 514 testing::Mock::VerifyAndClearExpectations(gl_);
490 VerifyStateWasRestored(); 515 VerifyStateWasRestored();
491 516
492 // Force image CHROMIUM creation failure. Request another mailbox. It should 517 // Force image CHROMIUM creation failure. Request another mailbox. It should
493 // still be provided, but this time with allowOverlay = false. 518 // still be provided, but this time with allowOverlay = false.
494 gl_->SetCreateImageChromiumFail(true); 519 gl_->SetCreateImageChromiumFail(true);
495 drawing_buffer_->MarkContentsChanged(); 520 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
496 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox2, 521 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox2,
497 &release_callback2)); 522 &release_callback2));
498 EXPECT_FALSE(texture_mailbox2.is_overlay_candidate()); 523 EXPECT_FALSE(texture_mailbox2.is_overlay_candidate());
499 VerifyStateWasRestored(); 524 VerifyStateWasRestored();
500 525
501 // Check that if image CHROMIUM starts working again, mailboxes are 526 // Check that if image CHROMIUM starts working again, mailboxes are
502 // correctly created with allowOverlay = true. 527 // correctly created with allowOverlay = true.
503 EXPECT_CALL(*gl_, BindTexImage2DMock(_)).Times(1); 528 EXPECT_CALL(*gl_, BindTexImage2DMock(_)).Times(1);
504 gl_->SetCreateImageChromiumFail(false); 529 gl_->SetCreateImageChromiumFail(false);
505 drawing_buffer_->MarkContentsChanged(); 530 EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
506 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox3, 531 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox3,
507 &release_callback3)); 532 &release_callback3));
508 EXPECT_TRUE(texture_mailbox3.is_overlay_candidate()); 533 EXPECT_TRUE(texture_mailbox3.is_overlay_candidate());
509 testing::Mock::VerifyAndClearExpectations(gl_); 534 testing::Mock::VerifyAndClearExpectations(gl_);
510 VerifyStateWasRestored(); 535 VerifyStateWasRestored();
511 536
512 release_callback1->Run(gpu::SyncToken(), false /* lostResource */); 537 release_callback1->Run(gpu::SyncToken(), false /* lostResource */);
513 release_callback2->Run(gpu::SyncToken(), false /* lostResource */); 538 release_callback2->Run(gpu::SyncToken(), false /* lostResource */);
514 release_callback3->Run(gpu::SyncToken(), false /* lostResource */); 539 release_callback3->Run(gpu::SyncToken(), false /* lostResource */);
515 540
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 691
667 drawing_buffer->BeginDestruction(); 692 drawing_buffer->BeginDestruction();
668 } 693 }
669 } 694 }
670 695
671 TEST_F(DrawingBufferTest, verifySetIsHiddenProperlyAffectsMailboxes) { 696 TEST_F(DrawingBufferTest, verifySetIsHiddenProperlyAffectsMailboxes) {
672 cc::TextureMailbox texture_mailbox; 697 cc::TextureMailbox texture_mailbox;
673 std::unique_ptr<cc::SingleReleaseCallback> release_callback; 698 std::unique_ptr<cc::SingleReleaseCallback> release_callback;
674 699
675 // Produce mailboxes. 700 // Produce mailboxes.
676 drawing_buffer_->MarkContentsChanged(); 701 EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
677 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox, 702 EXPECT_TRUE(drawing_buffer_->PrepareTextureMailbox(&texture_mailbox,
678 &release_callback)); 703 &release_callback));
679 704
680 gpu::SyncToken wait_sync_token; 705 gpu::SyncToken wait_sync_token;
681 gl_->GenSyncTokenCHROMIUM(gl_->InsertFenceSyncCHROMIUM(), 706 gl_->GenSyncTokenCHROMIUM(gl_->InsertFenceSyncCHROMIUM(),
682 wait_sync_token.GetData()); 707 wait_sync_token.GetData());
683 drawing_buffer_->SetIsHidden(true); 708 drawing_buffer_->SetIsHidden(true);
684 release_callback->Run(wait_sync_token, false /* lostResource */); 709 release_callback->Run(wait_sync_token, false /* lostResource */);
685 // m_drawingBuffer deletes mailbox immediately when hidden. 710 // m_drawingBuffer deletes mailbox immediately when hidden.
686 711
687 EXPECT_EQ(wait_sync_token, gl_->MostRecentlyWaitedSyncToken()); 712 EXPECT_EQ(wait_sync_token, gl_->MostRecentlyWaitedSyncToken());
688 713
689 drawing_buffer_->BeginDestruction(); 714 drawing_buffer_->BeginDestruction();
690 } 715 }
691 716
692 } // namespace blink 717 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698