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

Side by Side Diff: cc/direct_renderer.cc

Issue 11419269: cc: Give ownership of render passes to the renderer when drawing a frame. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years 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/direct_renderer.h ('k') | cc/gl_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/direct_renderer.h" 5 #include "cc/direct_renderer.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "cc/math_util.h" 10 #include "cc/math_util.h"
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 m_renderPassTextures.erase(passesToDelete[i]); 142 m_renderPassTextures.erase(passesToDelete[i]);
143 143
144 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) { 144 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) {
145 if (!m_renderPassTextures.contains(renderPassesInDrawOrder[i]->id)) { 145 if (!m_renderPassTextures.contains(renderPassesInDrawOrder[i]->id)) {
146 scoped_ptr<CachedResource> texture = CachedResource::create(m_resource Provider); 146 scoped_ptr<CachedResource> texture = CachedResource::create(m_resource Provider);
147 m_renderPassTextures.set(renderPassesInDrawOrder[i]->id, texture.Pas s()); 147 m_renderPassTextures.set(renderPassesInDrawOrder[i]->id, texture.Pas s());
148 } 148 }
149 } 149 }
150 } 150 }
151 151
152 void DirectRenderer::drawFrame(const RenderPassList& renderPassesInDrawOrder, co nst RenderPassIdHashMap& renderPassesById) 152 void DirectRenderer::drawFrame(RenderPassList& renderPassesInDrawOrder, RenderPa ssIdHashMap& renderPassesById)
153 { 153 {
154 TRACE_EVENT0("cc", "DirectRenderer::drawFrame"); 154 TRACE_EVENT0("cc", "DirectRenderer::drawFrame");
155 const RenderPass* rootRenderPass = renderPassesInDrawOrder.back(); 155 const RenderPass* rootRenderPass = renderPassesInDrawOrder.back();
156 DCHECK(rootRenderPass); 156 DCHECK(rootRenderPass);
157 157
158 DrawingFrame frame; 158 DrawingFrame frame;
159 frame.renderPassesById = &renderPassesById; 159 frame.renderPassesById = &renderPassesById;
160 frame.rootRenderPass = rootRenderPass; 160 frame.rootRenderPass = rootRenderPass;
161 frame.rootDamageRect = capabilities().usingPartialSwap ? rootRenderPass->dam age_rect : rootRenderPass->output_rect; 161 frame.rootDamageRect = capabilities().usingPartialSwap ? rootRenderPass->dam age_rect : rootRenderPass->output_rect;
162 frame.rootDamageRect.Intersect(gfx::Rect(gfx::Point(), viewportSize())); 162 frame.rootDamageRect.Intersect(gfx::Rect(gfx::Point(), viewportSize()));
163 163
164 beginDrawingFrame(frame); 164 beginDrawingFrame(frame);
165 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) 165 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i)
166 drawRenderPass(frame, renderPassesInDrawOrder[i]); 166 drawRenderPass(frame, renderPassesInDrawOrder[i]);
167 finishDrawingFrame(frame); 167 finishDrawingFrame(frame);
168
169 renderPassesInDrawOrder.clear();
170 renderPassesById.clear();
168 } 171 }
169 172
170 gfx::RectF DirectRenderer::computeScissorRectForRenderPass(const DrawingFrame& f rame) 173 gfx::RectF DirectRenderer::computeScissorRectForRenderPass(const DrawingFrame& f rame)
171 { 174 {
172 gfx::RectF renderPassScissor = frame.currentRenderPass->output_rect; 175 gfx::RectF renderPassScissor = frame.currentRenderPass->output_rect;
173 176
174 if (frame.rootDamageRect == frame.rootRenderPass->output_rect) 177 if (frame.rootDamageRect == frame.rootRenderPass->output_rect)
175 return renderPassScissor; 178 return renderPassScissor;
176 179
177 gfx::Transform inverseTransform = MathUtil::inverse(frame.currentRenderPass- >transform_to_root_target); 180 gfx::Transform inverseTransform = MathUtil::inverse(frame.currentRenderPass- >transform_to_root_target);
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 return pass->output_rect.size(); 282 return pass->output_rect.size();
280 } 283 }
281 284
282 // static 285 // static
283 GLenum DirectRenderer::renderPassTextureFormat(const RenderPass*) 286 GLenum DirectRenderer::renderPassTextureFormat(const RenderPass*)
284 { 287 {
285 return GL_RGBA; 288 return GL_RGBA;
286 } 289 }
287 290
288 } // namespace cc 291 } // namespace cc
OLDNEW
« no previous file with comments | « cc/direct_renderer.h ('k') | cc/gl_renderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698