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

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

Issue 2041113004: sk_sp for gpu. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Make it run. 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 2015 Google Inc. 2 * Copyright 2015 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 "GrPipelineBuilder.h" 8 #include "GrPipelineBuilder.h"
9 9
10 #include "GrBlend.h" 10 #include "GrBlend.h"
11 #include "GrPaint.h" 11 #include "GrPaint.h"
12 #include "GrPipeline.h" 12 #include "GrPipeline.h"
13 #include "GrProcOptInfo.h" 13 #include "GrProcOptInfo.h"
14 #include "GrXferProcessor.h" 14 #include "GrXferProcessor.h"
15 #include "batches/GrBatch.h" 15 #include "batches/GrBatch.h"
16 #include "effects/GrPorterDuffXferProcessor.h" 16 #include "effects/GrPorterDuffXferProcessor.h"
17 17
18 GrPipelineBuilder::GrPipelineBuilder() 18 GrPipelineBuilder::GrPipelineBuilder()
19 : fFlags(0x0) 19 : fFlags(0x0)
20 , fUserStencilSettings(&GrUserStencilSettings::kUnused) 20 , fUserStencilSettings(&GrUserStencilSettings::kUnused)
21 , fDrawFace(kBoth_DrawFace) { 21 , fDrawFace(kBoth_DrawFace) {
22 SkDEBUGCODE(fBlockEffectRemovalCnt = 0;) 22 SkDEBUGCODE(fBlockEffectRemovalCnt = 0;)
23 } 23 }
24 24
25 GrPipelineBuilder::GrPipelineBuilder(const GrPaint& paint, bool targetHasUnified Multisampling) 25 GrPipelineBuilder::GrPipelineBuilder(const GrPaint& paint, bool targetHasUnified Multisampling)
26 : GrPipelineBuilder() { 26 : GrPipelineBuilder() {
27 SkDEBUGCODE(fBlockEffectRemovalCnt = 0;) 27 SkDEBUGCODE(fBlockEffectRemovalCnt = 0;)
28 28
29 for (int i = 0; i < paint.numColorFragmentProcessors(); ++i) { 29 for (int i = 0; i < paint.numColorFragmentProcessors(); ++i) {
30 fColorFragmentProcessors.push_back(SkRef(paint.getColorFragmentProcessor (i))); 30 fColorFragmentProcessors.emplace_back(SkRef(paint.getColorFragmentProces sor(i)));
31 } 31 }
32 32
33 for (int i = 0; i < paint.numCoverageFragmentProcessors(); ++i) { 33 for (int i = 0; i < paint.numCoverageFragmentProcessors(); ++i) {
34 fCoverageFragmentProcessors.push_back(SkRef(paint.getCoverageFragmentPro cessor(i))); 34 fCoverageFragmentProcessors.emplace_back(SkRef(paint.getCoverageFragment Processor(i)));
35 } 35 }
36 36
37 fXPFactory.reset(SkSafeRef(paint.getXPFactory())); 37 fXPFactory.reset(SkSafeRef(paint.getXPFactory()));
38 38
39 this->setState(GrPipelineBuilder::kHWAntialias_Flag, 39 this->setState(GrPipelineBuilder::kHWAntialias_Flag,
40 targetHasUnifiedMultisampling && paint.isAntiAlias()); 40 targetHasUnifiedMultisampling && paint.isAntiAlias());
41 this->setState(GrPipelineBuilder::kDisableOutputConversionToSRGB_Flag, 41 this->setState(GrPipelineBuilder::kDisableOutputConversionToSRGB_Flag,
42 paint.getDisableOutputConversionToSRGB()); 42 paint.getDisableOutputConversionToSRGB());
43 this->setState(GrPipelineBuilder::kAllowSRGBInputs_Flag, 43 this->setState(GrPipelineBuilder::kAllowSRGBInputs_Flag,
44 paint.getAllowSRGBInputs()); 44 paint.getAllowSRGBInputs());
45 } 45 }
46 46
47 //////////////////////////////////////////////////////////////////////////////s 47 //////////////////////////////////////////////////////////////////////////////s
48 48
49 bool GrPipelineBuilder::willXPNeedDstTexture(const GrCaps& caps, 49 bool GrPipelineBuilder::willXPNeedDstTexture(const GrCaps& caps,
50 const GrPipelineOptimizations& opti mizations) const { 50 const GrPipelineOptimizations& opti mizations) const {
51 if (this->getXPFactory()) { 51 if (this->getXPFactory()) {
52 return this->getXPFactory()->willNeedDstTexture(caps, optimizations); 52 return this->getXPFactory()->willNeedDstTexture(caps, optimizations);
53 } 53 }
54 return GrPorterDuffXPFactory::SrcOverWillNeedDstTexture(caps, optimizations) ; 54 return GrPorterDuffXPFactory::SrcOverWillNeedDstTexture(caps, optimizations) ;
55 } 55 }
56 56
57 void GrPipelineBuilder::AutoRestoreFragmentProcessorState::set( 57 void GrPipelineBuilder::AutoRestoreFragmentProcessorState::set(
58 const GrPipelineBuilder * pipelineBuilder) { 58 const GrPipelineBuilder * pipelineBuilder) {
59 if (fPipelineBuilder) { 59 if (fPipelineBuilder) {
60 int m = fPipelineBuilder->numColorFragmentProcessors() - fColorEffectCnt ; 60 int m = fPipelineBuilder->numColorFragmentProcessors() - fColorEffectCnt ;
61 SkASSERT(m >= 0); 61 SkASSERT(m >= 0);
62 for (int i = 0; i < m; ++i) {
63 fPipelineBuilder->fColorFragmentProcessors.fromBack(i)->unref();
64 }
65 fPipelineBuilder->fColorFragmentProcessors.pop_back_n(m); 62 fPipelineBuilder->fColorFragmentProcessors.pop_back_n(m);
66 63
67 int n = fPipelineBuilder->numCoverageFragmentProcessors() - fCoverageEff ectCnt; 64 int n = fPipelineBuilder->numCoverageFragmentProcessors() - fCoverageEff ectCnt;
68 SkASSERT(n >= 0); 65 SkASSERT(n >= 0);
69 for (int i = 0; i < n; ++i) {
70 fPipelineBuilder->fCoverageFragmentProcessors.fromBack(i)->unref();
71 }
72 fPipelineBuilder->fCoverageFragmentProcessors.pop_back_n(n); 66 fPipelineBuilder->fCoverageFragmentProcessors.pop_back_n(n);
67
73 SkDEBUGCODE(--fPipelineBuilder->fBlockEffectRemovalCnt;) 68 SkDEBUGCODE(--fPipelineBuilder->fBlockEffectRemovalCnt;)
74 } 69 }
75 fPipelineBuilder = const_cast<GrPipelineBuilder*>(pipelineBuilder); 70 fPipelineBuilder = const_cast<GrPipelineBuilder*>(pipelineBuilder);
76 if (nullptr != pipelineBuilder) { 71 if (nullptr != pipelineBuilder) {
77 fColorEffectCnt = pipelineBuilder->numColorFragmentProcessors(); 72 fColorEffectCnt = pipelineBuilder->numColorFragmentProcessors();
78 fCoverageEffectCnt = pipelineBuilder->numCoverageFragmentProcessors(); 73 fCoverageEffectCnt = pipelineBuilder->numCoverageFragmentProcessors();
79 SkDEBUGCODE(++pipelineBuilder->fBlockEffectRemovalCnt;) 74 SkDEBUGCODE(++pipelineBuilder->fBlockEffectRemovalCnt;)
80 } 75 }
81 } 76 }
82 77
83 //////////////////////////////////////////////////////////////////////////////// 78 ////////////////////////////////////////////////////////////////////////////////
84 79
85 GrPipelineBuilder::~GrPipelineBuilder() { 80 GrPipelineBuilder::~GrPipelineBuilder() {
86 SkASSERT(0 == fBlockEffectRemovalCnt); 81 SkASSERT(0 == fBlockEffectRemovalCnt);
87 for (int i = 0; i < fColorFragmentProcessors.count(); ++i) {
88 fColorFragmentProcessors[i]->unref();
89 }
90 for (int i = 0; i < fCoverageFragmentProcessors.count(); ++i) {
91 fCoverageFragmentProcessors[i]->unref();
92 }
93 } 82 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698