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

Side by Side Diff: cc/output/delegating_renderer.cc

Issue 14925009: Run all LayerTreeHost tests with a delegating renderer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix context tests Created 7 years, 7 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
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/output/delegating_renderer.h" 5 #include "cc/output/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_util.h" 12 #include "base/string_util.h"
13 #include "base/strings/string_split.h" 13 #include "base/strings/string_split.h"
14 #include "cc/output/compositor_frame.h"
15 #include "cc/output/compositor_frame_ack.h" 14 #include "cc/output/compositor_frame_ack.h"
16 #include "cc/quads/checkerboard_draw_quad.h" 15 #include "cc/quads/checkerboard_draw_quad.h"
17 #include "cc/quads/debug_border_draw_quad.h" 16 #include "cc/quads/debug_border_draw_quad.h"
18 #include "cc/quads/render_pass.h" 17 #include "cc/quads/render_pass.h"
19 #include "cc/quads/render_pass_draw_quad.h" 18 #include "cc/quads/render_pass_draw_quad.h"
20 #include "cc/quads/solid_color_draw_quad.h" 19 #include "cc/quads/solid_color_draw_quad.h"
21 #include "cc/quads/texture_draw_quad.h" 20 #include "cc/quads/texture_draw_quad.h"
22 #include "cc/quads/tile_draw_quad.h" 21 #include "cc/quads/tile_draw_quad.h"
23 #include "cc/quads/yuv_video_draw_quad.h" 22 #include "cc/quads/yuv_video_draw_quad.h"
24 #include "cc/resources/resource_provider.h" 23 #include "cc/resources/resource_provider.h"
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 static ResourceProvider::ResourceId AppendToArray( 125 static ResourceProvider::ResourceId AppendToArray(
127 ResourceProvider::ResourceIdArray* array, 126 ResourceProvider::ResourceIdArray* array,
128 ResourceProvider::ResourceId id) { 127 ResourceProvider::ResourceId id) {
129 array->push_back(id); 128 array->push_back(id);
130 return id; 129 return id;
131 } 130 }
132 131
133 void DelegatingRenderer::DrawFrame( 132 void DelegatingRenderer::DrawFrame(
134 RenderPassList* render_passes_in_draw_order) { 133 RenderPassList* render_passes_in_draw_order) {
135 TRACE_EVENT0("cc", "DelegatingRenderer::DrawFrame"); 134 TRACE_EVENT0("cc", "DelegatingRenderer::DrawFrame");
136 render_passes_for_swap_buffers_.swap(*render_passes_in_draw_order);
137 render_passes_in_draw_order->clear();
138 }
139 135
140 void DelegatingRenderer::SwapBuffers(const LatencyInfo& latency_info) { 136 DCHECK(!frame_for_swap_buffers_.delegated_frame_data);
141 TRACE_EVENT0("cc", "DelegatingRenderer::SwapBuffers");
142 137
143 CompositorFrame out_frame; 138 frame_for_swap_buffers_.metadata = client_->MakeCompositorFrameMetadata();
144 out_frame.metadata = client_->MakeCompositorFrameMetadata();
145 139
146 out_frame.delegated_frame_data = make_scoped_ptr(new DelegatedFrameData); 140 frame_for_swap_buffers_.delegated_frame_data =
147 DelegatedFrameData& out_data = *out_frame.delegated_frame_data; 141 make_scoped_ptr(new DelegatedFrameData);
142 DelegatedFrameData& out_data = *frame_for_swap_buffers_.delegated_frame_data;
148 // Move the render passes and resources into the |out_frame|. 143 // Move the render passes and resources into the |out_frame|.
149 out_data.render_pass_list.swap(render_passes_for_swap_buffers_); 144 out_data.render_pass_list.swap(*render_passes_in_draw_order);
150 145
151 // Collect all resource ids in the render passes into a ResourceIdArray. 146 // Collect all resource ids in the render passes into a ResourceIdArray.
152 ResourceProvider::ResourceIdArray resources; 147 ResourceProvider::ResourceIdArray resources;
153 DrawQuad::ResourceIteratorCallback append_to_array = 148 DrawQuad::ResourceIteratorCallback append_to_array =
154 base::Bind(&AppendToArray, &resources); 149 base::Bind(&AppendToArray, &resources);
155 for (size_t i = 0; i < out_data.render_pass_list.size(); ++i) { 150 for (size_t i = 0; i < out_data.render_pass_list.size(); ++i) {
156 RenderPass* render_pass = out_data.render_pass_list.at(i); 151 RenderPass* render_pass = out_data.render_pass_list.at(i);
157 for (size_t j = 0; j < render_pass->quad_list.size(); ++j) 152 for (size_t j = 0; j < render_pass->quad_list.size(); ++j)
158 render_pass->quad_list[j]->IterateResources(append_to_array); 153 render_pass->quad_list[j]->IterateResources(append_to_array);
159 } 154 }
160 resource_provider_->PrepareSendToParent(resources, &out_data.resource_list); 155 resource_provider_->PrepareSendToParent(resources, &out_data.resource_list);
danakj 2013/05/09 02:42:50 DrawFrame needs to make this call. The resources h
156 }
161 157
162 output_surface_->SendFrameToParentCompositor(&out_frame); 158 void DelegatingRenderer::SwapBuffers(const LatencyInfo& latency_info) {
159 TRACE_EVENT0("cc", "DelegatingRenderer::SwapBuffers");
160
161 output_surface_->SendFrameToParentCompositor(&frame_for_swap_buffers_);
162 DCHECK(!frame_for_swap_buffers_.delegated_frame_data);
163 } 163 }
164 164
165 void DelegatingRenderer::GetFramebufferPixels(void* pixels, gfx::Rect rect) { 165 void DelegatingRenderer::GetFramebufferPixels(void* pixels, gfx::Rect rect) {
166 NOTIMPLEMENTED(); 166 NOTIMPLEMENTED();
167 } 167 }
168 168
169 void DelegatingRenderer::ReceiveCompositorFrameAck( 169 void DelegatingRenderer::ReceiveCompositorFrameAck(
170 const CompositorFrameAck& ack) { 170 const CompositorFrameAck& ack) {
171 resource_provider_->ReceiveFromParent(ack.resources); 171 resource_provider_->ReceiveFromParent(ack.resources);
172 } 172 }
173 173
174 174
175 bool DelegatingRenderer::IsContextLost() { 175 bool DelegatingRenderer::IsContextLost() {
176 WebGraphicsContext3D* context3d = resource_provider_->GraphicsContext3D(); 176 WebGraphicsContext3D* context3d = resource_provider_->GraphicsContext3D();
177 if (!context3d) 177 if (!context3d)
178 return false; 178 return false;
179 return context3d->getGraphicsResetStatusARB() != GL_NO_ERROR; 179 return context3d->getGraphicsResetStatusARB() != GL_NO_ERROR;
180 } 180 }
181 181
182 void DelegatingRenderer::SetVisible(bool visible) { 182 void DelegatingRenderer::SetVisible(bool visible) {
183 visible_ = visible; 183 visible_ = visible;
184 } 184 }
185 185
186 } // namespace cc 186 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698