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

Side by Side Diff: components/mus/surfaces/top_level_display_client.cc

Issue 1881793002: SurfacelessSurfaces for Mus (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 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 "components/mus/surfaces/top_level_display_client.h" 5 #include "components/mus/surfaces/top_level_display_client.h"
6 6
7 #include "base/thread_task_runner_handle.h" 7 #include "base/thread_task_runner_handle.h"
8 #include "cc/output/compositor_frame.h" 8 #include "cc/output/compositor_frame.h"
9 #include "cc/output/copy_output_request.h" 9 #include "cc/output/copy_output_request.h"
10 #include "cc/scheduler/begin_frame_source.h" 10 #include "cc/scheduler/begin_frame_source.h"
11 #include "cc/surfaces/display.h" 11 #include "cc/surfaces/display.h"
12 #include "cc/surfaces/display_scheduler.h" 12 #include "cc/surfaces/display_scheduler.h"
13 #include "cc/surfaces/surface.h" 13 #include "cc/surfaces/surface.h"
14 #include "components/mus/gles2/gpu_state.h" 14 #include "components/mus/gles2/gpu_state.h"
15 #include "components/mus/surfaces/direct_output_surface.h" 15 #include "components/mus/surfaces/direct_output_surface.h"
16 #include "components/mus/surfaces/surfaces_context_provider.h" 16 #include "components/mus/surfaces/surfaces_context_provider.h"
17 #include "components/mus/surfaces/surfaces_state.h" 17 #include "components/mus/surfaces/surfaces_state.h"
18 #include "ui/compositor/compositor_vsync_manager.h"
Fady Samuel 2016/04/12 02:54:41 Do we want this dependency on ui/compositor from m
rjkroege 2016/04/12 19:27:54 no. I removed all of the actual dependency code. T
19
20 #if defined(USE_OZONE)
21 #include "components/mus/surfaces/direct_output_surface_ozone.h"
22 #include "gpu/command_buffer/client/gles2_interface.h"
23 #endif
18 24
19 namespace base { 25 namespace base {
20 class SingleThreadTaskRunner; 26 class SingleThreadTaskRunner;
21 } 27 }
22 28
23 namespace mus { 29 namespace mus {
24 namespace { 30 namespace {
25 void CallCallback(const base::Closure& callback, cc::SurfaceDrawStatus status) { 31 void CallCallback(const base::Closure& callback, cc::SurfaceDrawStatus status) {
26 callback.Run(); 32 callback.Run();
27 } 33 }
28 } 34 }
29 35
30 TopLevelDisplayClient::TopLevelDisplayClient( 36 TopLevelDisplayClient::TopLevelDisplayClient(
31 gfx::AcceleratedWidget widget, 37 gfx::AcceleratedWidget widget,
32 const scoped_refptr<GpuState>& gpu_state, 38 const scoped_refptr<GpuState>& gpu_state,
33 const scoped_refptr<SurfacesState>& surfaces_state) 39 const scoped_refptr<SurfacesState>& surfaces_state)
34 : task_runner_(base::ThreadTaskRunnerHandle::Get()), 40 : task_runner_(base::ThreadTaskRunnerHandle::Get()),
35 surfaces_state_(surfaces_state), 41 surfaces_state_(surfaces_state),
36 factory_(surfaces_state->manager(), this), 42 factory_(surfaces_state->manager(), this),
37 cc_id_(static_cast<uint64_t>(surfaces_state->next_id_namespace()) << 32) { 43 cc_id_(static_cast<uint64_t>(surfaces_state->next_id_namespace()) << 32) {
38 factory_.Create(cc_id_); 44 factory_.Create(cc_id_);
39 45
40 display_.reset(new cc::Display(this, surfaces_state_->manager(), nullptr, 46 display_.reset(new cc::Display(this, surfaces_state_->manager(), nullptr,
41 nullptr, cc::RendererSettings())); 47 nullptr, cc::RendererSettings()));
42 48
43 scoped_ptr<cc::OutputSurface> output_surface = 49 scoped_refptr<SurfacesContextProvider> scp(
Fady Samuel 2016/04/12 02:54:41 nit: better variable name please.
rjkroege 2016/04/12 19:27:54 Done.
44 make_scoped_ptr(new DirectOutputSurface( 50 new SurfacesContextProvider(this, widget, gpu_state));
45 new SurfacesContextProvider(this, widget, gpu_state))); 51 // TODO(rjkroege): If there is something better to do than CHECK, add it.
52 CHECK(scp->BindToCurrentThread());
53
54 scoped_ptr<cc::OutputSurface> output_surface;
55 if (scp->ContextCapabilities().gpu.surfaceless) {
56 #if defined(USE_OZONE)
57 output_surface = make_scoped_ptr(
58 new DirectOutputSurfaceOzone(scp, widget, GL_TEXTURE_2D, GL_RGB));
59 #else
60 NOTREACHED();
61 #endif
62 } else {
63 output_surface = make_scoped_ptr(new DirectOutputSurface(scp));
64 }
46 65
47 int max_frames_pending = output_surface->capabilities().max_frames_pending; 66 int max_frames_pending = output_surface->capabilities().max_frames_pending;
48 DCHECK_GT(max_frames_pending, 0); 67 DCHECK_GT(max_frames_pending, 0);
49 68
50 synthetic_frame_source_.reset(new cc::SyntheticBeginFrameSource( 69 synthetic_frame_source_.reset(new cc::SyntheticBeginFrameSource(
51 task_runner_.get(), cc::BeginFrameArgs::DefaultInterval())); 70 task_runner_.get(), cc::BeginFrameArgs::DefaultInterval()));
52 71
53 scheduler_.reset( 72 scheduler_.reset(
54 new cc::DisplayScheduler(display_.get(), synthetic_frame_source_.get(), 73 new cc::DisplayScheduler(display_.get(), synthetic_frame_source_.get(),
55 task_runner_.get(), max_frames_pending)); 74 task_runner_.get(), max_frames_pending));
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 const cc::ReturnedResourceArray& resources) { 136 const cc::ReturnedResourceArray& resources) {
118 // TODO(fsamuel): Implement this. 137 // TODO(fsamuel): Implement this.
119 } 138 }
120 139
121 void TopLevelDisplayClient::SetBeginFrameSource( 140 void TopLevelDisplayClient::SetBeginFrameSource(
122 cc::BeginFrameSource* begin_frame_source) { 141 cc::BeginFrameSource* begin_frame_source) {
123 // TODO(tansell): Implement this. 142 // TODO(tansell): Implement this.
124 } 143 }
125 144
126 } // namespace mus 145 } // namespace mus
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698