OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |