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

Side by Side Diff: cc/direct_renderer.cc

Issue 11110004: Make gfx::Rect class operations consistently mutate the class they are called on. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: cc/ fixes Created 8 years, 2 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
« no previous file with comments | « cc/delegated_renderer_layer_impl.cc ('k') | cc/draw_quad.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 "config.h" 5 #include "config.h"
6 6
7 #include "CCDirectRenderer.h" 7 #include "CCDirectRenderer.h"
8 8
9 #include "cc/math_util.h" 9 #include "cc/math_util.h"
10 #include "ui/gfx/rect_conversions.h" 10 #include "ui/gfx/rect_conversions.h"
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 153
154 void DirectRenderer::drawFrame(const RenderPassList& renderPassesInDrawOrder, co nst RenderPassIdHashMap& renderPassesById) 154 void DirectRenderer::drawFrame(const RenderPassList& renderPassesInDrawOrder, co nst RenderPassIdHashMap& renderPassesById)
155 { 155 {
156 const RenderPass* rootRenderPass = renderPassesInDrawOrder.back(); 156 const RenderPass* rootRenderPass = renderPassesInDrawOrder.back();
157 DCHECK(rootRenderPass); 157 DCHECK(rootRenderPass);
158 158
159 DrawingFrame frame; 159 DrawingFrame frame;
160 frame.renderPassesById = &renderPassesById; 160 frame.renderPassesById = &renderPassesById;
161 frame.rootRenderPass = rootRenderPass; 161 frame.rootRenderPass = rootRenderPass;
162 frame.rootDamageRect = capabilities().usingPartialSwap ? rootRenderPass->dam ageRect() : rootRenderPass->outputRect(); 162 frame.rootDamageRect = capabilities().usingPartialSwap ? rootRenderPass->dam ageRect() : rootRenderPass->outputRect();
163 frame.rootDamageRect = frame.rootDamageRect.Intersect(gfx::Rect(gfx::Point() , viewportSize())); 163 frame.rootDamageRect.Intersect(gfx::Rect(gfx::Point(), viewportSize()));
164 164
165 beginDrawingFrame(frame); 165 beginDrawingFrame(frame);
166 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) 166 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i)
167 drawRenderPass(frame, renderPassesInDrawOrder[i]); 167 drawRenderPass(frame, renderPassesInDrawOrder[i]);
168 finishDrawingFrame(frame); 168 finishDrawingFrame(frame);
169 } 169 }
170 170
171 void DirectRenderer::drawRenderPass(DrawingFrame& frame, const RenderPass* rende rPass) 171 void DirectRenderer::drawRenderPass(DrawingFrame& frame, const RenderPass* rende rPass)
172 { 172 {
173 if (!useRenderPass(frame, renderPass)) 173 if (!useRenderPass(frame, renderPass))
174 return; 174 return;
175 175
176 frame.scissorRectInRenderPassSpace = frame.currentRenderPass->outputRect(); 176 frame.scissorRectInRenderPassSpace = frame.currentRenderPass->outputRect();
177 if (frame.rootDamageRect != frame.rootRenderPass->outputRect()) { 177 if (frame.rootDamageRect != frame.rootRenderPass->outputRect()) {
178 WebTransformationMatrix inverseTransformToRoot = frame.currentRenderPass ->transformToRootTarget().inverse(); 178 WebTransformationMatrix inverseTransformToRoot = frame.currentRenderPass ->transformToRootTarget().inverse();
179 gfx::RectF damageRectInRenderPassSpace = MathUtil::projectClippedRect(in verseTransformToRoot, cc::FloatRect(frame.rootDamageRect)); 179 gfx::RectF damageRectInRenderPassSpace = MathUtil::projectClippedRect(in verseTransformToRoot, cc::FloatRect(frame.rootDamageRect));
180 frame.scissorRectInRenderPassSpace = frame.scissorRectInRenderPassSpace. Intersect(damageRectInRenderPassSpace); 180 frame.scissorRectInRenderPassSpace.Intersect(damageRectInRenderPassSpace );
181 } 181 }
182 182
183 enableScissorTestRect(moveScissorToWindowSpace(frame, frame.scissorRectInRen derPassSpace)); 183 enableScissorTestRect(moveScissorToWindowSpace(frame, frame.scissorRectInRen derPassSpace));
184 clearFramebuffer(frame); 184 clearFramebuffer(frame);
185 185
186 const QuadList& quadList = renderPass->quadList(); 186 const QuadList& quadList = renderPass->quadList();
187 for (QuadList::constBackToFrontIterator it = quadList.backToFrontBegin(); it != quadList.backToFrontEnd(); ++it) { 187 for (QuadList::constBackToFrontIterator it = quadList.backToFrontBegin(); it != quadList.backToFrontEnd(); ++it) {
188 gfx::RectF quadScissorRect = frame.scissorRectInRenderPassSpace.Intersec t((*it)->clippedRectInTarget()); 188 gfx::RectF quadScissorRect = frame.scissorRectInRenderPassSpace;
189 quadScissorRect.Intersect((*it)->clippedRectInTarget());
189 if (!quadScissorRect.IsEmpty()) { 190 if (!quadScissorRect.IsEmpty()) {
190 enableScissorTestRect(moveScissorToWindowSpace(frame, quadScissorRec t)); 191 enableScissorTestRect(moveScissorToWindowSpace(frame, quadScissorRec t));
191 drawQuad(frame, *it); 192 drawQuad(frame, *it);
192 } 193 }
193 } 194 }
194 195
195 CachedTexture* texture = m_renderPassTextures.get(renderPass->id()); 196 CachedTexture* texture = m_renderPassTextures.get(renderPass->id());
196 if (texture) 197 if (texture)
197 texture->setIsComplete(!renderPass->hasOcclusionFromOutsideTargetSurface ()); 198 texture->setIsComplete(!renderPass->hasOcclusionFromOutsideTargetSurface ());
198 } 199 }
(...skipping 30 matching lines...) Expand all
229 return cc::IntSize(pass->outputRect().size()); 230 return cc::IntSize(pass->outputRect().size());
230 } 231 }
231 232
232 // static 233 // static
233 GLenum DirectRenderer::renderPassTextureFormat(const RenderPass*) 234 GLenum DirectRenderer::renderPassTextureFormat(const RenderPass*)
234 { 235 {
235 return GL_RGBA; 236 return GL_RGBA;
236 } 237 }
237 238
238 } 239 }
OLDNEW
« no previous file with comments | « cc/delegated_renderer_layer_impl.cc ('k') | cc/draw_quad.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698