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

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

Issue 2035823002: Make GrClipMaskManager stateless and push GrPipelineBuilder construction downstack (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Address code review comments Created 4 years, 6 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
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 "GrSWMaskHelper.h" 8 #include "GrSWMaskHelper.h"
9 9
10 #include "GrCaps.h" 10 #include "GrCaps.h"
11 #include "GrDrawTarget.h" 11 #include "GrContext.h"
12 #include "batches/GrDrawBatch.h"
13 #include "GrDrawContext.h"
12 #include "GrGpu.h" 14 #include "GrGpu.h"
13 #include "GrPipelineBuilder.h" 15 #include "GrPipelineBuilder.h"
14 #include "GrStyle.h" 16 #include "GrStyle.h"
15 17
16 #include "SkData.h" 18 #include "SkData.h"
17 #include "SkDistanceFieldGen.h" 19 #include "SkDistanceFieldGen.h"
18 #include "SkStrokeRec.h" 20 #include "SkStrokeRec.h"
19 21
20 #include "batches/GrRectBatchFactory.h" 22 #include "batches/GrRectBatchFactory.h"
21 23
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 if (!texture) { 154 if (!texture) {
153 return nullptr; 155 return nullptr;
154 } 156 }
155 157
156 helper.toTexture(texture); 158 helper.toTexture(texture);
157 159
158 return texture; 160 return texture;
159 } 161 }
160 162
161 void GrSWMaskHelper::DrawToTargetWithPathMask(GrTexture* texture, 163 void GrSWMaskHelper::DrawToTargetWithPathMask(GrTexture* texture,
162 GrDrawTarget* target, 164 GrDrawContext* drawContext,
163 GrPipelineBuilder* pipelineBuilder , 165 const GrPaint* paint,
166 const GrUserStencilSettings* userS tencilSettings,
164 const GrClip& clip, 167 const GrClip& clip,
165 GrColor color, 168 GrColor color,
166 const SkMatrix& viewMatrix, 169 const SkMatrix& viewMatrix,
167 const SkIRect& rect) { 170 const SkIRect& rect) {
168 SkMatrix invert; 171 SkMatrix invert;
169 if (!viewMatrix.invert(&invert)) { 172 if (!viewMatrix.invert(&invert)) {
170 return; 173 return;
171 } 174 }
172 GrPipelineBuilder::AutoRestoreFragmentProcessorState arfps(*pipelineBuilder) ;
173 175
174 SkRect dstRect = SkRect::MakeLTRB(SK_Scalar1 * rect.fLeft, 176 SkRect dstRect = SkRect::MakeLTRB(SK_Scalar1 * rect.fLeft,
175 SK_Scalar1 * rect.fTop, 177 SK_Scalar1 * rect.fTop,
176 SK_Scalar1 * rect.fRight, 178 SK_Scalar1 * rect.fRight,
177 SK_Scalar1 * rect.fBottom); 179 SK_Scalar1 * rect.fBottom);
178 180
179 // We use device coords to compute the texture coordinates. We take the devi ce coords and apply 181 // We use device coords to compute the texture coordinates. We take the devi ce coords and apply
180 // a translation so that the top-left of the device bounds maps to 0,0, and then a scaling 182 // a translation so that the top-left of the device bounds maps to 0,0, and then a scaling
181 // matrix to normalized coords. 183 // matrix to normalized coords.
182 SkMatrix maskMatrix; 184 SkMatrix maskMatrix;
183 maskMatrix.setIDiv(texture->width(), texture->height()); 185 maskMatrix.setIDiv(texture->width(), texture->height());
184 maskMatrix.preTranslate(SkIntToScalar(-rect.fLeft), SkIntToScalar(-rect.fTop )); 186 maskMatrix.preTranslate(SkIntToScalar(-rect.fLeft), SkIntToScalar(-rect.fTop ));
185 187
186 pipelineBuilder->addCoverageFragmentProcessor( 188 GrPipelineBuilder pipelineBuilder(*paint, drawContext->isUnifiedMultisampled ());
189 pipelineBuilder.setRenderTarget(drawContext->accessRenderTarget());
190 pipelineBuilder.setUserStencil(userStencilSettings);
191
192 pipelineBuilder.addCoverageFragmentProcessor(
187 GrSimpleTextureEffect::Create(texture, 193 GrSimpleTextureEffect::Create(texture,
188 maskMatrix, 194 maskMatrix,
189 GrTextureParams::kNone_Fi lterMode, 195 GrTextureParams::kNone_Fi lterMode,
190 kDevice_GrCoordSet))->unr ef(); 196 kDevice_GrCoordSet))->unr ef();
191 197
192 SkAutoTUnref<GrDrawBatch> batch(GrRectBatchFactory::CreateNonAAFill(color, S kMatrix::I(), 198 SkAutoTUnref<GrDrawBatch> batch(GrRectBatchFactory::CreateNonAAFill(color, S kMatrix::I(),
193 dstRect, nullptr, &invert)); 199 dstRect, nullptr, &invert));
194 target->drawBatch(*pipelineBuilder, clip, batch); 200 drawContext->drawBatch(pipelineBuilder, clip, batch);
195 } 201 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698