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

Side by Side Diff: src/gpu/GrClipMaskManager.cpp

Issue 961813002: Some small code tidying (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 10 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 | « no previous file | src/gpu/GrDefaultPathRenderer.h » ('j') | src/gpu/GrDrawTarget.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "GrClipMaskManager.h" 8 #include "GrClipMaskManager.h"
9 #include "GrAAConvexPathRenderer.h" 9 #include "GrAAConvexPathRenderer.h"
10 #include "GrAAHairLinePathRenderer.h" 10 #include "GrAAHairLinePathRenderer.h"
(...skipping 12 matching lines...) Expand all
23 #include "effects/GrPorterDuffXferProcessor.h" 23 #include "effects/GrPorterDuffXferProcessor.h"
24 #include "effects/GrRRectEffect.h" 24 #include "effects/GrRRectEffect.h"
25 #include "effects/GrTextureDomain.h" 25 #include "effects/GrTextureDomain.h"
26 26
27 typedef SkClipStack::Element Element; 27 typedef SkClipStack::Element Element;
28 28
29 //////////////////////////////////////////////////////////////////////////////// 29 ////////////////////////////////////////////////////////////////////////////////
30 namespace { 30 namespace {
31 // set up the draw state to enable the aa clipping mask. Besides setting up the 31 // set up the draw state to enable the aa clipping mask. Besides setting up the
32 // stage matrix this also alters the vertex layout 32 // stage matrix this also alters the vertex layout
33 void setup_drawstate_aaclip(const SkIRect &devBound, 33 void setup_drawstate_aaclip(GrPipelineBuilder* pipelineBuilder,
34 GrPipelineBuilder* pipelineBuilder, 34 GrTexture* result,
35 GrTexture* result) { 35 GrPipelineBuilder::AutoRestoreEffects* are,
36 SkASSERT(pipelineBuilder); 36 const SkIRect &devBound) {
37 SkASSERT(pipelineBuilder && are);
38 are->set(pipelineBuilder);
37 39
38 SkMatrix mat; 40 SkMatrix mat;
39 // We use device coords to compute the texture coordinates. We set our matri x to be a 41 // We use device coords to compute the texture coordinates. We set our matri x to be a
40 // translation to the devBound, and then a scaling matrix to normalized coor ds. 42 // translation to the devBound, and then a scaling matrix to normalized coor ds.
41 mat.setIDiv(result->width(), result->height()); 43 mat.setIDiv(result->width(), result->height());
42 mat.preTranslate(SkIntToScalar(-devBound.fLeft), 44 mat.preTranslate(SkIntToScalar(-devBound.fLeft),
43 SkIntToScalar(-devBound.fTop)); 45 SkIntToScalar(-devBound.fTop));
44 46
45 SkIRect domainTexels = SkIRect::MakeWH(devBound.width(), devBound.height()); 47 SkIRect domainTexels = SkIRect::MakeWH(devBound.width(), devBound.height());
46 // This could be a long-lived effect that is cached with the alpha-mask. 48 // This could be a long-lived effect that is cached with the alpha-mask.
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 edgeType = 164 edgeType =
163 invert ? kInverseFillAA_GrProcessorEdgeType : kFillAA_Gr ProcessorEdgeType; 165 invert ? kInverseFillAA_GrProcessorEdgeType : kFillAA_Gr ProcessorEdgeType;
164 } else { 166 } else {
165 edgeType = 167 edgeType =
166 invert ? kInverseFillBW_GrProcessorEdgeType : kFillBW_Gr ProcessorEdgeType; 168 invert ? kInverseFillBW_GrProcessorEdgeType : kFillBW_Gr ProcessorEdgeType;
167 } 169 }
168 SkAutoTUnref<GrFragmentProcessor> fp; 170 SkAutoTUnref<GrFragmentProcessor> fp;
169 switch (iter.get()->getType()) { 171 switch (iter.get()->getType()) {
170 case SkClipStack::Element::kPath_Type: 172 case SkClipStack::Element::kPath_Type:
171 fp.reset(GrConvexPolyEffect::Create(edgeType, iter.get()->ge tPath(), 173 fp.reset(GrConvexPolyEffect::Create(edgeType, iter.get()->ge tPath(),
172 &clipToRTOffset)); 174 &clipToRTOffset));
173 break; 175 break;
174 case SkClipStack::Element::kRRect_Type: { 176 case SkClipStack::Element::kRRect_Type: {
175 SkRRect rrect = iter.get()->getRRect(); 177 SkRRect rrect = iter.get()->getRRect();
176 rrect.offset(clipToRTOffset.fX, clipToRTOffset.fY); 178 rrect.offset(clipToRTOffset.fX, clipToRTOffset.fY);
177 fp.reset(GrRRectEffect::Create(edgeType, rrect)); 179 fp.reset(GrRRectEffect::Create(edgeType, rrect));
178 break; 180 break;
179 } 181 }
180 case SkClipStack::Element::kRect_Type: { 182 case SkClipStack::Element::kRect_Type: {
181 SkRect rect = iter.get()->getRect(); 183 SkRect rect = iter.get()->getRect();
182 rect.offset(clipToRTOffset.fX, clipToRTOffset.fY); 184 rect.offset(clipToRTOffset.fX, clipToRTOffset.fY);
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 clipSpaceIBounds); 326 clipSpaceIBounds);
325 } else { 327 } else {
326 result = this->createAlphaClipMask(genID, 328 result = this->createAlphaClipMask(genID,
327 initialState, 329 initialState,
328 elements, 330 elements,
329 clipToMaskOffset, 331 clipToMaskOffset,
330 clipSpaceIBounds); 332 clipSpaceIBounds);
331 } 333 }
332 334
333 if (result) { 335 if (result) {
336 are->set(pipelineBuilder);
334 // The mask's top left coord should be pinned to the rounded-out top left corner of 337 // The mask's top left coord should be pinned to the rounded-out top left corner of
335 // clipSpace bounds. We determine the mask's position WRT to the ren der target here. 338 // clipSpace bounds. We determine the mask's position WRT to the ren der target here.
336 SkIRect rtSpaceMaskBounds = clipSpaceIBounds; 339 SkIRect rtSpaceMaskBounds = clipSpaceIBounds;
337 rtSpaceMaskBounds.offset(-clip.origin()); 340 rtSpaceMaskBounds.offset(-clip.origin());
338 setup_drawstate_aaclip(rtSpaceMaskBounds, pipelineBuilder, result); 341 setup_drawstate_aaclip(pipelineBuilder, result, are, rtSpaceMaskBoun ds);
339 this->setPipelineBuilderStencil(pipelineBuilder, ars); 342 this->setPipelineBuilderStencil(pipelineBuilder, ars);
340 return true; 343 return true;
341 } 344 }
342 // if alpha clip mask creation fails fall through to the non-AA code pat hs 345 // if alpha clip mask creation fails fall through to the non-AA code pat hs
343 } 346 }
344 347
345 // Either a hard (stencil buffer) clip was explicitly requested or an anti-a liased clip couldn't 348 // Either a hard (stencil buffer) clip was explicitly requested or an anti-a liased clip couldn't
346 // be created. In either case, free up the texture in the anti-aliased mask cache. 349 // be created. In either case, free up the texture in the anti-aliased mask cache.
347 // TODO: this may require more investigation. Ganesh performs a lot of utili ty draws (e.g., 350 // TODO: this may require more investigation. Ganesh performs a lot of utili ty draws (e.g.,
348 // clears, InOrderDrawBuffer playbacks) that hit the stencil buffer path. Th ese may be 351 // clears, InOrderDrawBuffer playbacks) that hit the stencil buffer path. Th ese may be
(...skipping 771 matching lines...) Expand 10 before | Expand all | Expand 10 after
1120 fAACache.setContext(clipTarget->getContext()); 1123 fAACache.setContext(clipTarget->getContext());
1121 } 1124 }
1122 1125
1123 void GrClipMaskManager::adjustPathStencilParams(const GrStencilBuffer* stencilBu ffer, 1126 void GrClipMaskManager::adjustPathStencilParams(const GrStencilBuffer* stencilBu ffer,
1124 GrStencilSettings* settings) { 1127 GrStencilSettings* settings) {
1125 if (stencilBuffer) { 1128 if (stencilBuffer) {
1126 int stencilBits = stencilBuffer->bits(); 1129 int stencilBits = stencilBuffer->bits();
1127 this->adjustStencilParams(settings, fClipMode, stencilBits); 1130 this->adjustStencilParams(settings, fClipMode, stencilBits);
1128 } 1131 }
1129 } 1132 }
OLDNEW
« no previous file with comments | « no previous file | src/gpu/GrDefaultPathRenderer.h » ('j') | src/gpu/GrDrawTarget.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698