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

Side by Side Diff: include/gpu/GrXferProcessor.h

Issue 1471293003: Create a static instances of SrcOver XferProcessor (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix Build Created 5 years 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/effects/SkArithmeticMode_gpu.cpp » ('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 #ifndef GrXferProcessor_DEFINED 8 #ifndef GrXferProcessor_DEFINED
9 #define GrXferProcessor_DEFINED 9 #define GrXferProcessor_DEFINED
10 10
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 * the draw with this xfer processor. If this function is called, the xfer p rocessor may change 138 * the draw with this xfer processor. If this function is called, the xfer p rocessor may change
139 * its state to reflected the given blend optimizations. If the XP needs to see a specific input 139 * its state to reflected the given blend optimizations. If the XP needs to see a specific input
140 * color to blend correctly, it will set the OverrideColor flag and the outp ut parameter 140 * color to blend correctly, it will set the OverrideColor flag and the outp ut parameter
141 * overrideColor will be the required value that should be passed into the X P. 141 * overrideColor will be the required value that should be passed into the X P.
142 * A caller who calls this function on a XP is required to honor the returne d OptFlags 142 * A caller who calls this function on a XP is required to honor the returne d OptFlags
143 * and color values for its draw. 143 * and color values for its draw.
144 */ 144 */
145 OptFlags getOptimizations(const GrPipelineOptimizations& optimizations, 145 OptFlags getOptimizations(const GrPipelineOptimizations& optimizations,
146 bool doesStencilWrite, 146 bool doesStencilWrite,
147 GrColor* overrideColor, 147 GrColor* overrideColor,
148 const GrCaps& caps); 148 const GrCaps& caps) const;
149 149
150 /** 150 /**
151 * Returns whether this XP will require an Xfer barrier on the given rt. If true, outBarrierType 151 * Returns whether this XP will require an Xfer barrier on the given rt. If true, outBarrierType
152 * is updated to contain the type of barrier needed. 152 * is updated to contain the type of barrier needed.
153 */ 153 */
154 GrXferBarrierType xferBarrierType(const GrRenderTarget* rt, const GrCaps& ca ps) const; 154 GrXferBarrierType xferBarrierType(const GrRenderTarget* rt, const GrCaps& ca ps) const;
155 155
156 struct BlendInfo { 156 struct BlendInfo {
157 void reset() { 157 void reset() {
158 fEquation = kAdd_GrBlendEquation; 158 fEquation = kAdd_GrBlendEquation;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 } 192 }
193 193
194 /** 194 /**
195 * If we are performing a dst read, returns whether the base class will use mixed samples to 195 * If we are performing a dst read, returns whether the base class will use mixed samples to
196 * antialias the shader's final output. If not doing a dst read, the subclas s is responsible 196 * antialias the shader's final output. If not doing a dst read, the subclas s is responsible
197 * for antialiasing and this returns false. 197 * for antialiasing and this returns false.
198 */ 198 */
199 bool dstReadUsesMixedSamples() const { return fDstReadUsesMixedSamples; } 199 bool dstReadUsesMixedSamples() const { return fDstReadUsesMixedSamples; }
200 200
201 /** 201 /**
202 * Returns whether or not the XP will look at coverage when doing its blendi ng.
203 */
204 bool readsCoverage() const { return fReadsCoverage; }
205
206 /**
207 * Returns whether or not this xferProcossor will set a secondary output to be used with dual 202 * Returns whether or not this xferProcossor will set a secondary output to be used with dual
208 * source blending. 203 * source blending.
209 */ 204 */
210 bool hasSecondaryOutput() const; 205 bool hasSecondaryOutput() const;
211 206
212 /** Returns true if this and other processor conservatively draw identically . It can only return 207 /** Returns true if this and other processor conservatively draw identically . It can only return
213 true when the two processor are of the same subclass (i.e. they return t he same object from 208 true when the two processor are of the same subclass (i.e. they return t he same object from
214 from getFactory()). 209 from getFactory()).
215 210
216 A return value of true from isEqual() should not be used to test whether the processor would 211 A return value of true from isEqual() should not be used to test whether the processor would
217 generate the same shader code. To test for identical code generation use getGLSLProcessorKey 212 generate the same shader code. To test for identical code generation use getGLSLProcessorKey
218 */ 213 */
219 214
220 bool isEqual(const GrXferProcessor& that) const { 215 bool isEqual(const GrXferProcessor& that) const {
221 if (this->classID() != that.classID()) { 216 if (this->classID() != that.classID()) {
222 return false; 217 return false;
223 } 218 }
224 if (this->fWillReadDstColor != that.fWillReadDstColor) { 219 if (this->fWillReadDstColor != that.fWillReadDstColor) {
225 return false; 220 return false;
226 } 221 }
227 if (this->fReadsCoverage != that.fReadsCoverage) {
228 return false;
229 }
230 if (this->fDstTexture.getTexture() != that.fDstTexture.getTexture()) { 222 if (this->fDstTexture.getTexture() != that.fDstTexture.getTexture()) {
231 return false; 223 return false;
232 } 224 }
233 if (this->fDstTextureOffset != that.fDstTextureOffset) { 225 if (this->fDstTextureOffset != that.fDstTextureOffset) {
234 return false; 226 return false;
235 } 227 }
236 if (this->fDstReadUsesMixedSamples != that.fDstReadUsesMixedSamples) { 228 if (this->fDstReadUsesMixedSamples != that.fDstReadUsesMixedSamples) {
237 return false; 229 return false;
238 } 230 }
239 return this->onIsEqual(that); 231 return this->onIsEqual(that);
240 } 232 }
241 233
242 protected: 234 protected:
243 GrXferProcessor(); 235 GrXferProcessor();
244 GrXferProcessor(const DstTexture*, bool willReadDstColor, bool hasMixedSampl es); 236 GrXferProcessor(const DstTexture*, bool willReadDstColor, bool hasMixedSampl es);
245 237
246 private: 238 private:
247 void notifyRefCntIsZero() const final {} 239 void notifyRefCntIsZero() const final {}
248 240
249 virtual OptFlags onGetOptimizations(const GrPipelineOptimizations& optimizat ions, 241 virtual OptFlags onGetOptimizations(const GrPipelineOptimizations& optimizat ions,
250 bool doesStencilWrite, 242 bool doesStencilWrite,
251 GrColor* overrideColor, 243 GrColor* overrideColor,
252 const GrCaps& caps) = 0; 244 const GrCaps& caps) const = 0;
253 245
254 /** 246 /**
255 * Sets a unique key on the GrProcessorKeyBuilder that is directly associate d with this xfer 247 * Sets a unique key on the GrProcessorKeyBuilder that is directly associate d with this xfer
256 * processor's GL backend implementation. 248 * processor's GL backend implementation.
257 */ 249 */
258 virtual void onGetGLSLProcessorKey(const GrGLSLCaps& caps, 250 virtual void onGetGLSLProcessorKey(const GrGLSLCaps& caps,
259 GrProcessorKeyBuilder* b) const = 0; 251 GrProcessorKeyBuilder* b) const = 0;
260 252
261 /** 253 /**
262 * Determines the type of barrier (if any) required by the subclass. Note th at the possibility 254 * Determines the type of barrier (if any) required by the subclass. Note th at the possibility
(...skipping 15 matching lines...) Expand all
278 * If we are not performing a dst read, retrieves the fixed-function blend s tate required by the 270 * If we are not performing a dst read, retrieves the fixed-function blend s tate required by the
279 * subclass. When using dst reads, the base class controls the fixed-functio n blend state and 271 * subclass. When using dst reads, the base class controls the fixed-functio n blend state and
280 * this method will not be called. The BlendInfo struct comes initialized to "no blending". 272 * this method will not be called. The BlendInfo struct comes initialized to "no blending".
281 */ 273 */
282 virtual void onGetBlendInfo(BlendInfo*) const {} 274 virtual void onGetBlendInfo(BlendInfo*) const {}
283 275
284 virtual bool onIsEqual(const GrXferProcessor&) const = 0; 276 virtual bool onIsEqual(const GrXferProcessor&) const = 0;
285 277
286 bool fWillReadDstColor; 278 bool fWillReadDstColor;
287 bool fDstReadUsesMixedSamples; 279 bool fDstReadUsesMixedSamples;
288 bool fReadsCoverage;
289 SkIPoint fDstTextureOffset; 280 SkIPoint fDstTextureOffset;
290 GrTextureAccess fDstTexture; 281 GrTextureAccess fDstTexture;
291 282
292 typedef GrFragmentProcessor INHERITED; 283 typedef GrFragmentProcessor INHERITED;
293 }; 284 };
294 285
295 GR_MAKE_BITFIELD_OPS(GrXferProcessor::OptFlags); 286 GR_MAKE_BITFIELD_OPS(GrXferProcessor::OptFlags);
296 287
297 /////////////////////////////////////////////////////////////////////////////// 288 ///////////////////////////////////////////////////////////////////////////////
298 289
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 enum { 380 enum {
390 kIllegalXPFClassID = 0, 381 kIllegalXPFClassID = 0,
391 }; 382 };
392 static int32_t gCurrXPFClassID; 383 static int32_t gCurrXPFClassID;
393 384
394 typedef GrProgramElement INHERITED; 385 typedef GrProgramElement INHERITED;
395 }; 386 };
396 387
397 #endif 388 #endif
398 389
OLDNEW
« no previous file with comments | « no previous file | src/effects/SkArithmeticMode_gpu.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698