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

Side by Side Diff: cc/direct_renderer.cc

Issue 11363251: Added some instrumentation to the software compositor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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 | « no previous file | cc/software_renderer.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 "cc/math_util.h" 10 #include "cc/math_util.h"
10 #include "ui/gfx/rect_conversions.h" 11 #include "ui/gfx/rect_conversions.h"
11 #include <public/WebTransformationMatrix.h> 12 #include <public/WebTransformationMatrix.h>
12 13
13 using WebKit::WebTransformationMatrix; 14 using WebKit::WebTransformationMatrix;
14 15
15 static WebTransformationMatrix orthoProjectionMatrix(float left, float right, fl oat bottom, float top) 16 static WebTransformationMatrix orthoProjectionMatrix(float left, float right, fl oat bottom, float top)
16 { 17 {
17 // Use the standard formula to map the clipping frustum to the cube from 18 // Use the standard formula to map the clipping frustum to the cube from
18 // [-1, -1, -1] to [1, 1, 1]. 19 // [-1, -1, -1] to [1, 1, 1].
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) { 146 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) {
146 if (!m_renderPassTextures.contains(renderPassesInDrawOrder[i]->id())) { 147 if (!m_renderPassTextures.contains(renderPassesInDrawOrder[i]->id())) {
147 scoped_ptr<CachedResource> texture = CachedResource::create(m_resource Provider); 148 scoped_ptr<CachedResource> texture = CachedResource::create(m_resource Provider);
148 m_renderPassTextures.set(renderPassesInDrawOrder[i]->id(), texture.P ass()); 149 m_renderPassTextures.set(renderPassesInDrawOrder[i]->id(), texture.P ass());
149 } 150 }
150 } 151 }
151 } 152 }
152 153
153 void DirectRenderer::drawFrame(const RenderPassList& renderPassesInDrawOrder, co nst RenderPassIdHashMap& renderPassesById) 154 void DirectRenderer::drawFrame(const RenderPassList& renderPassesInDrawOrder, co nst RenderPassIdHashMap& renderPassesById)
154 { 155 {
156 TRACE_EVENT0("cc", "DirectRenderer::drawFrame");
155 const RenderPass* rootRenderPass = renderPassesInDrawOrder.back(); 157 const RenderPass* rootRenderPass = renderPassesInDrawOrder.back();
156 DCHECK(rootRenderPass); 158 DCHECK(rootRenderPass);
157 159
158 DrawingFrame frame; 160 DrawingFrame frame;
159 frame.renderPassesById = &renderPassesById; 161 frame.renderPassesById = &renderPassesById;
160 frame.rootRenderPass = rootRenderPass; 162 frame.rootRenderPass = rootRenderPass;
161 frame.rootDamageRect = capabilities().usingPartialSwap ? rootRenderPass->dam ageRect() : rootRenderPass->outputRect(); 163 frame.rootDamageRect = capabilities().usingPartialSwap ? rootRenderPass->dam ageRect() : rootRenderPass->outputRect();
162 frame.rootDamageRect.Intersect(gfx::Rect(gfx::Point(), viewportSize())); 164 frame.rootDamageRect.Intersect(gfx::Rect(gfx::Point(), viewportSize()));
163 165
164 beginDrawingFrame(frame); 166 beginDrawingFrame(frame);
165 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) 167 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i)
166 drawRenderPass(frame, renderPassesInDrawOrder[i]); 168 drawRenderPass(frame, renderPassesInDrawOrder[i]);
167 finishDrawingFrame(frame); 169 finishDrawingFrame(frame);
168 } 170 }
169 171
170 void DirectRenderer::drawRenderPass(DrawingFrame& frame, const RenderPass* rende rPass) 172 void DirectRenderer::drawRenderPass(DrawingFrame& frame, const RenderPass* rende rPass)
171 { 173 {
174 TRACE_EVENT0("cc", "DirectRenderer::drawRenderPass");
172 if (!useRenderPass(frame, renderPass)) 175 if (!useRenderPass(frame, renderPass))
173 return; 176 return;
174 177
175 frame.scissorRectInRenderPassSpace = frame.currentRenderPass->outputRect(); 178 frame.scissorRectInRenderPassSpace = frame.currentRenderPass->outputRect();
176 if (frame.rootDamageRect != frame.rootRenderPass->outputRect()) { 179 if (frame.rootDamageRect != frame.rootRenderPass->outputRect()) {
177 WebTransformationMatrix inverseTransformToRoot = frame.currentRenderPass ->transformToRootTarget().inverse(); 180 WebTransformationMatrix inverseTransformToRoot = frame.currentRenderPass ->transformToRootTarget().inverse();
178 gfx::RectF damageRectInRenderPassSpace = MathUtil::projectClippedRect(in verseTransformToRoot, frame.rootDamageRect); 181 gfx::RectF damageRectInRenderPassSpace = MathUtil::projectClippedRect(in verseTransformToRoot, frame.rootDamageRect);
179 frame.scissorRectInRenderPassSpace.Intersect(damageRectInRenderPassSpace ); 182 frame.scissorRectInRenderPassSpace.Intersect(damageRectInRenderPassSpace );
180 } 183 }
181 184
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 return pass->outputRect().size(); 231 return pass->outputRect().size();
229 } 232 }
230 233
231 // static 234 // static
232 GLenum DirectRenderer::renderPassTextureFormat(const RenderPass*) 235 GLenum DirectRenderer::renderPassTextureFormat(const RenderPass*)
233 { 236 {
234 return GL_RGBA; 237 return GL_RGBA;
235 } 238 }
236 239
237 } // namespace cc 240 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/software_renderer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698