OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 "cc/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/synchronization/lock.h" | 9 #include "base/synchronization/lock.h" |
10 #include "cc/animation/timing_function.h" | 10 #include "cc/animation/timing_function.h" |
(...skipping 2240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2251 break; | 2251 break; |
2252 } | 2252 } |
2253 } | 2253 } |
2254 | 2254 |
2255 private: | 2255 private: |
2256 NotificationClient client_; | 2256 NotificationClient client_; |
2257 }; | 2257 }; |
2258 | 2258 |
2259 SINGLE_THREAD_TEST_F(LayerTreeHostTestLCDNotification); | 2259 SINGLE_THREAD_TEST_F(LayerTreeHostTestLCDNotification); |
2260 | 2260 |
2261 // Verify that the vsync notification is used to initiate rendering. | 2261 // Verify that the BeginFrame notification is used to initiate rendering. |
2262 class LayerTreeHostTestVSyncNotification : public LayerTreeHostTest { | 2262 class LayerTreeHostTestBeginFrameNotification : public LayerTreeHostTest { |
2263 public: | 2263 public: |
2264 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { | 2264 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { |
2265 settings->render_vsync_notification_enabled = true; | 2265 settings->render_parent_drives_begin_frame_ = true; |
2266 } | 2266 } |
2267 | 2267 |
2268 virtual void BeginTest() OVERRIDE { | 2268 virtual void BeginTest() OVERRIDE { |
2269 PostSetNeedsCommitToMainThread(); | 2269 PostSetNeedsCommitToMainThread(); |
2270 } | 2270 } |
2271 | 2271 |
2272 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 2272 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
2273 FakeOutputSurface* fake_output_surface = | 2273 FakeOutputSurface* fake_output_surface = |
2274 reinterpret_cast<FakeOutputSurface*>(host_impl->output_surface()); | 2274 reinterpret_cast<FakeOutputSurface*>(host_impl->output_surface()); |
2275 | 2275 |
2276 // The vsync notification is turned off now but will get enabled once we | 2276 // The BeginFrame notification is turned off now but will get |
2277 // return, so post a task to trigger it. | 2277 // enabled once we return, so post a task to trigger it. |
2278 ASSERT_FALSE(fake_output_surface->vsync_notification_enabled()); | 2278 ASSERT_FALSE(fake_output_surface->needs_begin_frame()); |
2279 PostVSyncOnImplThread(fake_output_surface); | 2279 PostBeginFrameOnImplThread(fake_output_surface); |
2280 } | 2280 } |
2281 | 2281 |
2282 void PostVSyncOnImplThread(FakeOutputSurface* fake_output_surface) { | 2282 void PostBeginFrameOnImplThread(FakeOutputSurface* fake_output_surface) { |
2283 DCHECK(ImplThread()); | 2283 DCHECK(ImplThread()); |
2284 ImplThread()->PostTask( | 2284 ImplThread()->PostTask( |
2285 base::Bind(&LayerTreeHostTestVSyncNotification::DidVSync, | 2285 base::Bind(&LayerTreeHostTestBeginFrameNotification::BeginFrame, |
2286 base::Unretained(this), | 2286 base::Unretained(this), |
2287 base::Unretained(fake_output_surface))); | 2287 base::Unretained(fake_output_surface))); |
2288 } | 2288 } |
2289 | 2289 |
2290 void DidVSync(FakeOutputSurface* fake_output_surface) { | 2290 void BeginFrame(FakeOutputSurface* fake_output_surface) { |
2291 ASSERT_TRUE(fake_output_surface->vsync_notification_enabled()); | 2291 ASSERT_TRUE(fake_output_surface->needs_begin_frame()); |
2292 fake_output_surface->DidVSync(frame_time_); | 2292 fake_output_surface->BeginFrame(frame_time_); |
2293 } | 2293 } |
2294 | 2294 |
2295 virtual bool PrepareToDrawOnThread( | 2295 virtual bool PrepareToDrawOnThread( |
2296 LayerTreeHostImpl* host_impl, | 2296 LayerTreeHostImpl* host_impl, |
2297 LayerTreeHostImpl::FrameData* frame, | 2297 LayerTreeHostImpl::FrameData* frame, |
2298 bool result) OVERRIDE { | 2298 bool result) OVERRIDE { |
2299 EndTest(); | 2299 EndTest(); |
2300 return true; | 2300 return true; |
2301 } | 2301 } |
2302 | 2302 |
2303 virtual void AfterTest() OVERRIDE {} | 2303 virtual void AfterTest() OVERRIDE {} |
2304 | 2304 |
2305 private: | 2305 private: |
2306 base::TimeTicks frame_time_; | 2306 base::TimeTicks frame_time_; |
2307 }; | 2307 }; |
2308 | 2308 |
2309 MULTI_THREAD_TEST_F(LayerTreeHostTestVSyncNotification); | 2309 MULTI_THREAD_TEST_F(LayerTreeHostTestBeginFrameNotification); |
2310 | 2310 |
2311 class LayerTreeHostTestVSyncNotificationShutdownWhileEnabled | 2311 class LayerTreeHostTestBeginFrameNotificationShutdownWhileEnabled |
2312 : public LayerTreeHostTest { | 2312 : public LayerTreeHostTest { |
2313 public: | 2313 public: |
2314 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { | 2314 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { |
2315 settings->render_vsync_notification_enabled = true; | 2315 settings->render_parent_drives_begin_frame_ = true; |
2316 settings->synchronously_disable_vsync = true; | 2316 settings->using_synchronous_renderer_compositor = true; |
2317 } | 2317 } |
2318 | 2318 |
2319 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } | 2319 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
2320 | 2320 |
2321 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 2321 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
2322 // The vsync notification is turned off now but will get enabled once we | 2322 // The BeginFrame notification is turned off now but will get enabled |
2323 // return. End test while it's enabled. | 2323 // once we return. End test while it's enabled. |
2324 ImplThread()->PostTask(base::Bind( | 2324 ImplThread()->PostTask(base::Bind( |
2325 &LayerTreeHostTestVSyncNotification::EndTest, base::Unretained(this))); | 2325 &LayerTreeHostTestBeginFrameNotification::EndTest, |
| 2326 base::Unretained(this))); |
2326 } | 2327 } |
2327 | 2328 |
2328 virtual void AfterTest() OVERRIDE {} | 2329 virtual void AfterTest() OVERRIDE {} |
2329 }; | 2330 }; |
2330 | 2331 |
2331 MULTI_THREAD_TEST_F(LayerTreeHostTestVSyncNotificationShutdownWhileEnabled); | 2332 MULTI_THREAD_TEST_F( |
| 2333 LayerTreeHostTestBeginFrameNotificationShutdownWhileEnabled); |
2332 | 2334 |
2333 class LayerTreeHostTestInputDrivenRendering : public LayerTreeHostTest { | 2335 class LayerTreeHostTestInputDrivenRendering : public LayerTreeHostTest { |
2334 public: | 2336 public: |
2335 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { | 2337 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { |
2336 settings->render_vsync_notification_enabled = true; | 2338 settings->render_parent_drives_begin_frame_ = true; |
2337 } | 2339 } |
2338 | 2340 |
2339 virtual void BeginTest() OVERRIDE { | 2341 virtual void BeginTest() OVERRIDE { |
2340 frame_time_ = base::TimeTicks::Now(); | 2342 frame_time_ = base::TimeTicks::Now(); |
2341 PostSetNeedsCommitToMainThread(); | 2343 PostSetNeedsCommitToMainThread(); |
2342 } | 2344 } |
2343 | 2345 |
2344 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 2346 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
2345 // Post a task to send the final input event for the current vsync; it | 2347 // Post a task to send the final input event for the current BeginFrame; |
2346 // should trigger rendering. | 2348 // it should trigger rendering. |
2347 ImplThread()->PostTask( | 2349 ImplThread()->PostTask( |
2348 base::Bind(&LayerTreeHostTestInputDrivenRendering::SendFinalInputEvent, | 2350 base::Bind(&LayerTreeHostTestInputDrivenRendering::SendFinalInputEvent, |
2349 base::Unretained(this), | 2351 base::Unretained(this), |
2350 base::Unretained(host_impl))); | 2352 base::Unretained(host_impl))); |
2351 } | 2353 } |
2352 | 2354 |
2353 void SendFinalInputEvent(LayerTreeHostImpl* host_impl) { | 2355 void SendFinalInputEvent(LayerTreeHostImpl* host_impl) { |
2354 host_impl->DidReceiveLastInputEventForVSync(frame_time_); | 2356 host_impl->DidReceiveLastInputEventForBeginFrame(frame_time_); |
2355 } | 2357 } |
2356 | 2358 |
2357 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 2359 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
2358 EXPECT_EQ(frame_time_, **host_impl->fps_counter()->begin()); | 2360 EXPECT_EQ(frame_time_, **host_impl->fps_counter()->begin()); |
2359 EndTest(); | 2361 EndTest(); |
2360 } | 2362 } |
2361 | 2363 |
2362 virtual void AfterTest() OVERRIDE {} | 2364 virtual void AfterTest() OVERRIDE {} |
2363 | 2365 |
2364 private: | 2366 private: |
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2884 TEST_F(LayerTreeHostTestNumFramesPending, DelegatingRenderer) { | 2886 TEST_F(LayerTreeHostTestNumFramesPending, DelegatingRenderer) { |
2885 RunTest(true, true, true); | 2887 RunTest(true, true, true); |
2886 } | 2888 } |
2887 | 2889 |
2888 TEST_F(LayerTreeHostTestNumFramesPending, GLRenderer) { | 2890 TEST_F(LayerTreeHostTestNumFramesPending, GLRenderer) { |
2889 RunTest(true, false, true); | 2891 RunTest(true, false, true); |
2890 } | 2892 } |
2891 | 2893 |
2892 } // namespace | 2894 } // namespace |
2893 } // namespace cc | 2895 } // namespace cc |
OLD | NEW |