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

Side by Side Diff: cc/direct_renderer.cc

Issue 11644008: Migrate from MathUtil::inverse() to gfx::Transform::GetInverse() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Partially addressed uninvertible cases Created 7 years, 12 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
« no previous file with comments | « no previous file | cc/gl_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 "base/debug/trace_event.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 renderPassesInDrawOrder.clear(); 178 renderPassesInDrawOrder.clear();
179 } 179 }
180 180
181 gfx::RectF DirectRenderer::computeScissorRectForRenderPass(const DrawingFrame& f rame) 181 gfx::RectF DirectRenderer::computeScissorRectForRenderPass(const DrawingFrame& f rame)
182 { 182 {
183 gfx::RectF renderPassScissor = frame.currentRenderPass->output_rect; 183 gfx::RectF renderPassScissor = frame.currentRenderPass->output_rect;
184 184
185 if (frame.rootDamageRect == frame.rootRenderPass->output_rect) 185 if (frame.rootDamageRect == frame.rootRenderPass->output_rect)
186 return renderPassScissor; 186 return renderPassScissor;
187 187
188 gfx::Transform inverseTransform = MathUtil::inverse(frame.currentRenderPass- >transform_to_root_target); 188 gfx::Transform inverseTransform(gfx::Transform::kSkipInitialization);
189 gfx::RectF damageRectInRenderPassSpace = MathUtil::projectClippedRect(invers eTransform, frame.rootDamageRect); 189 if (frame.currentRenderPass->transform_to_root_target.GetInverse(&inverseTra nsform)) {
danakj 2013/01/02 14:45:16 I'm still not a fan that after the if() statement,
shawnsingh 2013/01/02 18:36:01 The performance improvement comes from avoiding du
190 renderPassScissor.Intersect(damageRectInRenderPassSpace); 190 // Only intersect inverse-projected damage if the transform is invertibl e.
191 gfx::RectF damageRectInRenderPassSpace = MathUtil::projectClippedRect(in verseTransform, frame.rootDamageRect);
192 renderPassScissor.Intersect(damageRectInRenderPassSpace);
193 }
191 194
192 return renderPassScissor; 195 return renderPassScissor;
193 } 196 }
194 197
195 void DirectRenderer::setScissorStateForQuad(const DrawingFrame& frame, const Dra wQuad& quad) 198 void DirectRenderer::setScissorStateForQuad(const DrawingFrame& frame, const Dra wQuad& quad)
196 { 199 {
197 if (quad.isClipped()) { 200 if (quad.isClipped()) {
198 gfx::RectF quadScissorRect = quad.clipRect(); 201 gfx::RectF quadScissorRect = quad.clipRect();
199 setScissorTestRect(moveScissorToWindowSpace(frame, quadScissorRect)); 202 setScissorTestRect(moveScissorToWindowSpace(frame, quadScissorRect));
200 } 203 }
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 return pass->output_rect.size(); 297 return pass->output_rect.size();
295 } 298 }
296 299
297 // static 300 // static
298 GLenum DirectRenderer::renderPassTextureFormat(const RenderPass*) 301 GLenum DirectRenderer::renderPassTextureFormat(const RenderPass*)
299 { 302 {
300 return GL_RGBA; 303 return GL_RGBA;
301 } 304 }
302 305
303 } // namespace cc 306 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/gl_renderer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698