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

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

Issue 851143003: Remove willReadDst from GrFragmentProcessor. (Closed) Base URL: https://skia.googlesource.com/skia.git@xferXP
Patch Set: Rebase Created 5 years, 11 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 | « src/gpu/GrDrawTarget.cpp ('k') | src/gpu/GrProcOptInfo.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2014 Google Inc. 2 * Copyright 2014 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 "GrOptDrawState.h" 8 #include "GrOptDrawState.h"
9 9
10 #include "GrDrawState.h" 10 #include "GrDrawState.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 // TODO: Once we can handle single or four channel input into coverage stage s then we can use 82 // TODO: Once we can handle single or four channel input into coverage stage s then we can use
83 // drawState's coverageProcInfo (like color above) to set this initial infor mation. 83 // drawState's coverageProcInfo (like color above) to set this initial infor mation.
84 int firstCoverageStageIdx = 0; 84 int firstCoverageStageIdx = 0;
85 85
86 GrXferProcessor::BlendInfo blendInfo; 86 GrXferProcessor::BlendInfo blendInfo;
87 fXferProcessor->getBlendInfo(&blendInfo); 87 fXferProcessor->getBlendInfo(&blendInfo);
88 88
89 this->adjustProgramFromOptimizations(drawState, optFlags, colorPOI, coverage POI, 89 this->adjustProgramFromOptimizations(drawState, optFlags, colorPOI, coverage POI,
90 &firstColorStageIdx, &firstCoverageStag eIdx); 90 &firstColorStageIdx, &firstCoverageStag eIdx);
91 91
92 fDescInfo.fReadsDst = fXferProcessor->willReadDstColor();
93
92 bool usesLocalCoords = false; 94 bool usesLocalCoords = false;
93 95
94 // Copy Stages from DS to ODS 96 // Copy Stages from DS to ODS
95 for (int i = firstColorStageIdx; i < drawState.numColorStages(); ++i) { 97 for (int i = firstColorStageIdx; i < drawState.numColorStages(); ++i) {
96 SkNEW_APPEND_TO_TARRAY(&fFragmentStages, 98 SkNEW_APPEND_TO_TARRAY(&fFragmentStages,
97 GrPendingFragmentStage, 99 GrPendingFragmentStage,
98 (drawState.fColorStages[i])); 100 (drawState.fColorStages[i]));
99 usesLocalCoords = usesLocalCoords || 101 usesLocalCoords = usesLocalCoords ||
100 drawState.fColorStages[i].processor()->usesLocalCoords (); 102 drawState.fColorStages[i].processor()->usesLocalCoords ();
101 } 103 }
(...skipping 15 matching lines...) Expand all
117 init.fUsesLocalCoords = usesLocalCoords; 119 init.fUsesLocalCoords = usesLocalCoords;
118 fPrimitiveProcessor->initBatchTracker(&fBatchTracker, init); 120 fPrimitiveProcessor->initBatchTracker(&fBatchTracker, init);
119 } 121 }
120 122
121 void GrOptDrawState::adjustProgramFromOptimizations(const GrDrawState& ds, 123 void GrOptDrawState::adjustProgramFromOptimizations(const GrDrawState& ds,
122 GrXferProcessor::OptFlags fl ags, 124 GrXferProcessor::OptFlags fl ags,
123 const GrProcOptInfo& colorPO I, 125 const GrProcOptInfo& colorPO I,
124 const GrProcOptInfo& coverag ePOI, 126 const GrProcOptInfo& coverag ePOI,
125 int* firstColorStageIdx, 127 int* firstColorStageIdx,
126 int* firstCoverageStageIdx) { 128 int* firstCoverageStageIdx) {
127 fDescInfo.fReadsDst = false;
128 fDescInfo.fReadsFragPosition = false; 129 fDescInfo.fReadsFragPosition = false;
129 130
130 if ((flags & GrXferProcessor::kIgnoreColor_OptFlag) || 131 if ((flags & GrXferProcessor::kIgnoreColor_OptFlag) ||
131 (flags & GrXferProcessor::kOverrideColor_OptFlag)) { 132 (flags & GrXferProcessor::kOverrideColor_OptFlag)) {
132 *firstColorStageIdx = ds.numColorStages(); 133 *firstColorStageIdx = ds.numColorStages();
133 } else { 134 } else {
134 fDescInfo.fReadsDst = colorPOI.readsDst();
135 fDescInfo.fReadsFragPosition = colorPOI.readsFragPosition(); 135 fDescInfo.fReadsFragPosition = colorPOI.readsFragPosition();
136 } 136 }
137 137
138 if (flags & GrXferProcessor::kIgnoreCoverage_OptFlag) { 138 if (flags & GrXferProcessor::kIgnoreCoverage_OptFlag) {
139 *firstCoverageStageIdx = ds.numCoverageStages(); 139 *firstCoverageStageIdx = ds.numCoverageStages();
140 } else { 140 } else {
141 if (coveragePOI.readsDst()) {
142 fDescInfo.fReadsDst = true;
143 }
144 if (coveragePOI.readsFragPosition()) { 141 if (coveragePOI.readsFragPosition()) {
145 fDescInfo.fReadsFragPosition = true; 142 fDescInfo.fReadsFragPosition = true;
146 } 143 }
147 } 144 }
148
149 if (fXferProcessor->willReadDstColor()) {
150 fDescInfo.fReadsDst = true;
151 }
152 } 145 }
153 146
154 void GrOptDrawState::finalize(GrGpu* gpu) { 147 void GrOptDrawState::finalize(GrGpu* gpu) {
155 gpu->buildProgramDesc(*this, fDescInfo, fDrawType, &fDesc); 148 gpu->buildProgramDesc(*this, fDescInfo, fDrawType, &fDesc);
156 fFinalized = true; 149 fFinalized = true;
157 } 150 }
158 151
159 //////////////////////////////////////////////////////////////////////////////// 152 ////////////////////////////////////////////////////////////////////////////////
160 153
161 bool GrOptDrawState::combineIfPossible(const GrOptDrawState& that) { 154 bool GrOptDrawState::combineIfPossible(const GrOptDrawState& that) {
(...skipping 30 matching lines...) Expand all
192 if (this->getFragmentStage(i) != that.getFragmentStage(i)) { 185 if (this->getFragmentStage(i) != that.getFragmentStage(i)) {
193 return false; 186 return false;
194 } 187 }
195 } 188 }
196 189
197 // Now update the GrPrimitiveProcessor's batch tracker 190 // Now update the GrPrimitiveProcessor's batch tracker
198 fPrimitiveProcessor->makeEqual(&fBatchTracker, that.getBatchTracker()); 191 fPrimitiveProcessor->makeEqual(&fBatchTracker, that.getBatchTracker());
199 return true; 192 return true;
200 } 193 }
201 194
OLDNEW
« no previous file with comments | « src/gpu/GrDrawTarget.cpp ('k') | src/gpu/GrProcOptInfo.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698