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

Side by Side Diff: cc/delegating_renderer.cc

Issue 11777025: cc: Implement DelegatingRender::drawFrame() method. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: for-landing Created 7 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « cc/delegating_renderer.h ('k') | cc/delegating_renderer_unittest.cc » ('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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 #include "cc/delegating_renderer.h" 5 #include "cc/delegating_renderer.h"
6 6
7 #include <set> 7 #include <set>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/debug/trace_event.h" 11 #include "base/debug/trace_event.h"
12 #include "base/string_split.h" 12 #include "base/string_split.h"
13 #include "base/string_util.h" 13 #include "base/string_util.h"
14 #include "cc/checkerboard_draw_quad.h" 14 #include "cc/checkerboard_draw_quad.h"
15 #include "cc/compositor_frame.h"
15 #include "cc/compositor_frame_ack.h" 16 #include "cc/compositor_frame_ack.h"
16 #include "cc/debug_border_draw_quad.h" 17 #include "cc/debug_border_draw_quad.h"
17 #include "cc/render_pass.h" 18 #include "cc/render_pass.h"
18 #include "cc/render_pass_draw_quad.h" 19 #include "cc/render_pass_draw_quad.h"
19 #include "cc/resource_provider.h" 20 #include "cc/resource_provider.h"
20 #include "cc/solid_color_draw_quad.h" 21 #include "cc/solid_color_draw_quad.h"
21 #include "cc/texture_draw_quad.h" 22 #include "cc/texture_draw_quad.h"
22 #include "cc/tile_draw_quad.h" 23 #include "cc/tile_draw_quad.h"
23 #include "cc/yuv_video_draw_quad.h" 24 #include "cc/yuv_video_draw_quad.h"
24 #include "third_party/khronos/GLES2/gl2ext.h" 25 #include "third_party/khronos/GLES2/gl2ext.h"
25 26
26 using WebKit::WebGraphicsContext3D; 27 using WebKit::WebGraphicsContext3D;
27 28
28 namespace cc { 29 namespace cc {
29 30
30 scoped_ptr<DelegatingRenderer> DelegatingRenderer::Create( 31 scoped_ptr<DelegatingRenderer> DelegatingRenderer::Create(
31 RendererClient* client, ResourceProvider* resource_provider) { 32 RendererClient* client,
33 OutputSurface* output_surface,
34 ResourceProvider* resource_provider) {
32 scoped_ptr<DelegatingRenderer> renderer( 35 scoped_ptr<DelegatingRenderer> renderer(
33 new DelegatingRenderer(client, resource_provider)); 36 new DelegatingRenderer(client, output_surface, resource_provider));
34 if (!renderer->Initialize()) 37 if (!renderer->Initialize())
35 return scoped_ptr<DelegatingRenderer>(); 38 return scoped_ptr<DelegatingRenderer>();
36 return renderer.Pass(); 39 return renderer.Pass();
37 } 40 }
38 41
39 DelegatingRenderer::DelegatingRenderer( 42 DelegatingRenderer::DelegatingRenderer(
40 RendererClient* client, ResourceProvider* resource_provider) 43 RendererClient* client,
44 OutputSurface* output_surface,
45 ResourceProvider* resource_provider)
41 : Renderer(client), 46 : Renderer(client),
47 output_surface_(output_surface),
42 resource_provider_(resource_provider), 48 resource_provider_(resource_provider),
43 visible_(true) { 49 visible_(true) {
44 DCHECK(resource_provider_); 50 DCHECK(resource_provider_);
45 } 51 }
46 52
47 bool DelegatingRenderer::Initialize() { 53 bool DelegatingRenderer::Initialize() {
48 capabilities_.usingPartialSwap = false; 54 capabilities_.usingPartialSwap = false;
49 // TODO(danakj): Throttling - we may want to only allow 1 outstanding frame, 55 // TODO(danakj): Throttling - we may want to only allow 1 outstanding frame,
50 // but the parent compositor may pipeline for us. 56 // but the parent compositor may pipeline for us.
51 // TODO(danakj): Can we use this in single-thread mode? 57 // TODO(danakj): Can we use this in single-thread mode?
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 context3d->setContextLostCallback(NULL); 127 context3d->setContextLostCallback(NULL);
122 } 128 }
123 129
124 const RendererCapabilities& DelegatingRenderer::capabilities() const { 130 const RendererCapabilities& DelegatingRenderer::capabilities() const {
125 return capabilities_; 131 return capabilities_;
126 } 132 }
127 133
128 void DelegatingRenderer::drawFrame( 134 void DelegatingRenderer::drawFrame(
129 RenderPassList& render_passes_in_draw_order) { 135 RenderPassList& render_passes_in_draw_order) {
130 TRACE_EVENT0("cc", "DelegatingRenderer::drawFrame"); 136 TRACE_EVENT0("cc", "DelegatingRenderer::drawFrame");
131 NOTIMPLEMENTED(); 137
138 CompositorFrame out_frame;
139 out_frame.metadata = m_client->makeCompositorFrameMetadata();
140
141 out_frame.delegated_frame_data = make_scoped_ptr(new DelegatedFrameData);
142 DelegatedFrameData& out_data = *out_frame.delegated_frame_data;
143
144 out_data.size = viewportSize();
145 out_data.render_pass_list.swap(render_passes_in_draw_order);
146
147 ResourceProvider::ResourceIdArray resources;
148 for (size_t i = 0; i < out_data.render_pass_list.size(); ++i) {
149 for (size_t j = 0; j < out_data.render_pass_list[i]->quad_list.size(); ++j)
150 out_data.render_pass_list[i]->quad_list[j]->AppendResources(&resources);
151 }
152 resource_provider_->prepareSendToParent(resources, &out_data.resource_list);
153
154 output_surface_->SendFrameToParentCompositor(&out_frame);
132 } 155 }
133 156
134 bool DelegatingRenderer::swapBuffers() { 157 bool DelegatingRenderer::swapBuffers() {
135 return true; 158 return true;
136 } 159 }
137 160
138 void DelegatingRenderer::getFramebufferPixels(void *pixels, 161 void DelegatingRenderer::getFramebufferPixels(void *pixels,
139 const gfx::Rect& rect) { 162 const gfx::Rect& rect) {
140 NOTIMPLEMENTED(); 163 NOTIMPLEMENTED();
141 } 164 }
(...skipping 14 matching lines...) Expand all
156 179
157 void DelegatingRenderer::setVisible(bool visible) { 180 void DelegatingRenderer::setVisible(bool visible) {
158 visible_ = visible; 181 visible_ = visible;
159 } 182 }
160 183
161 void DelegatingRenderer::onContextLost() { 184 void DelegatingRenderer::onContextLost() {
162 m_client->didLoseOutputSurface(); 185 m_client->didLoseOutputSurface();
163 } 186 }
164 187
165 } // namespace cc 188 } // namespace cc
OLDNEW
« no previous file with comments | « cc/delegating_renderer.h ('k') | cc/delegating_renderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698