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 "base/debug/trace_event.h" |
10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 m_renderPassTextures.erase(passesToDelete[i]); | 150 m_renderPassTextures.erase(passesToDelete[i]); |
151 | 151 |
152 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) { | 152 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) { |
153 if (!m_renderPassTextures.contains(renderPassesInDrawOrder[i]->id)) { | 153 if (!m_renderPassTextures.contains(renderPassesInDrawOrder[i]->id)) { |
154 scoped_ptr<CachedResource> texture = CachedResource::create(m_resource
Provider); | 154 scoped_ptr<CachedResource> texture = CachedResource::create(m_resource
Provider); |
155 m_renderPassTextures.set(renderPassesInDrawOrder[i]->id, texture.Pas
s()); | 155 m_renderPassTextures.set(renderPassesInDrawOrder[i]->id, texture.Pas
s()); |
156 } | 156 } |
157 } | 157 } |
158 } | 158 } |
159 | 159 |
160 void DirectRenderer::drawFrame(RenderPassList& renderPassesInDrawOrder, RenderPa
ssIdHashMap& renderPassesById) | 160 void DirectRenderer::drawFrame(RenderPassList& renderPassesInDrawOrder) |
161 { | 161 { |
162 TRACE_EVENT0("cc", "DirectRenderer::drawFrame"); | 162 TRACE_EVENT0("cc", "DirectRenderer::drawFrame"); |
163 HISTOGRAM_COUNTS("Renderer4.renderPassCount", renderPassesInDrawOrder.size()
); | 163 HISTOGRAM_COUNTS("Renderer4.renderPassCount", renderPassesInDrawOrder.size()
); |
164 | 164 |
165 const RenderPass* rootRenderPass = renderPassesInDrawOrder.back(); | 165 const RenderPass* rootRenderPass = renderPassesInDrawOrder.last(); |
166 DCHECK(rootRenderPass); | 166 DCHECK(rootRenderPass); |
167 | 167 |
168 DrawingFrame frame; | 168 DrawingFrame frame; |
169 frame.renderPassesById = &renderPassesById; | |
170 frame.rootRenderPass = rootRenderPass; | 169 frame.rootRenderPass = rootRenderPass; |
171 frame.rootDamageRect = capabilities().usingPartialSwap ? rootRenderPass->dam
age_rect : rootRenderPass->output_rect; | 170 frame.rootDamageRect = capabilities().usingPartialSwap ? rootRenderPass->dam
age_rect : rootRenderPass->output_rect; |
172 frame.rootDamageRect.Intersect(gfx::Rect(gfx::Point(), viewportSize())); | 171 frame.rootDamageRect.Intersect(gfx::Rect(gfx::Point(), viewportSize())); |
173 | 172 |
174 beginDrawingFrame(frame); | 173 beginDrawingFrame(frame); |
175 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) | 174 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) |
176 drawRenderPass(frame, renderPassesInDrawOrder[i]); | 175 drawRenderPass(frame, renderPassesInDrawOrder[i]); |
177 finishDrawingFrame(frame); | 176 finishDrawingFrame(frame); |
178 | 177 |
179 renderPassesInDrawOrder.clear(); | 178 renderPassesInDrawOrder.clear(); |
180 renderPassesById.clear(); | |
181 } | 179 } |
182 | 180 |
183 gfx::RectF DirectRenderer::computeScissorRectForRenderPass(const DrawingFrame& f
rame) | 181 gfx::RectF DirectRenderer::computeScissorRectForRenderPass(const DrawingFrame& f
rame) |
184 { | 182 { |
185 gfx::RectF renderPassScissor = frame.currentRenderPass->output_rect; | 183 gfx::RectF renderPassScissor = frame.currentRenderPass->output_rect; |
186 | 184 |
187 if (frame.rootDamageRect == frame.rootRenderPass->output_rect) | 185 if (frame.rootDamageRect == frame.rootRenderPass->output_rect) |
188 return renderPassScissor; | 186 return renderPassScissor; |
189 | 187 |
190 gfx::Transform inverseTransform = MathUtil::inverse(frame.currentRenderPass-
>transform_to_root_target); | 188 gfx::Transform inverseTransform = MathUtil::inverse(frame.currentRenderPass-
>transform_to_root_target); |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 return pass->output_rect.size(); | 294 return pass->output_rect.size(); |
297 } | 295 } |
298 | 296 |
299 // static | 297 // static |
300 GLenum DirectRenderer::renderPassTextureFormat(const RenderPass*) | 298 GLenum DirectRenderer::renderPassTextureFormat(const RenderPass*) |
301 { | 299 { |
302 return GL_RGBA; | 300 return GL_RGBA; |
303 } | 301 } |
304 | 302 |
305 } // namespace cc | 303 } // namespace cc |
OLD | NEW |