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

Side by Side Diff: src/gpu/GrDrawState.h

Issue 787233003: Add XP to handle the cases where we disable color write. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: update Created 6 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 | « src/gpu/GrDefaultPathRenderer.cpp ('k') | src/gpu/GrDrawState.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 2011 Google Inc. 2 * Copyright 2011 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 GrDrawState_DEFINED 8 #ifndef GrDrawState_DEFINED
9 #define GrDrawState_DEFINED 9 #define GrDrawState_DEFINED
10 10
11 11
12 #include "GrBlend.h" 12 #include "GrBlend.h"
13 #include "GrDrawTargetCaps.h" 13 #include "GrDrawTargetCaps.h"
14 #include "GrGeometryProcessor.h" 14 #include "GrGeometryProcessor.h"
15 #include "GrGpuResourceRef.h" 15 #include "GrGpuResourceRef.h"
16 #include "GrFragmentStage.h" 16 #include "GrFragmentStage.h"
17 #include "GrProcOptInfo.h" 17 #include "GrProcOptInfo.h"
18 #include "GrRenderTarget.h" 18 #include "GrRenderTarget.h"
19 #include "GrStencil.h" 19 #include "GrStencil.h"
20 #include "GrXferProcessor.h" 20 #include "GrXferProcessor.h"
21 #include "SkMatrix.h" 21 #include "SkMatrix.h"
22 #include "effects/GrCoverageSetOpXP.h" 22 #include "effects/GrCoverageSetOpXP.h"
23 #include "effects/GrDisableColorXP.h"
23 #include "effects/GrPorterDuffXferProcessor.h" 24 #include "effects/GrPorterDuffXferProcessor.h"
24 #include "effects/GrSimpleTextureEffect.h" 25 #include "effects/GrSimpleTextureEffect.h"
25 26
26 class GrDrawTargetCaps; 27 class GrDrawTargetCaps;
27 class GrPaint; 28 class GrPaint;
28 class GrTexture; 29 class GrTexture;
29 30
30 class GrDrawState { 31 class GrDrawState {
31 public: 32 public:
32 GrDrawState() { 33 GrDrawState() {
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 } 138 }
138 139
139 void setPorterDuffXPFactory(GrBlendCoeff src, GrBlendCoeff dst) { 140 void setPorterDuffXPFactory(GrBlendCoeff src, GrBlendCoeff dst) {
140 fXPFactory.reset(GrPorterDuffXPFactory::Create(src, dst)); 141 fXPFactory.reset(GrPorterDuffXPFactory::Create(src, dst));
141 } 142 }
142 143
143 void setCoverageSetOpXPFactory(SkRegion::Op regionOp, bool invertCoverage = false) { 144 void setCoverageSetOpXPFactory(SkRegion::Op regionOp, bool invertCoverage = false) {
144 fXPFactory.reset(GrCoverageSetOpXPFactory::Create(regionOp, invertCovera ge)); 145 fXPFactory.reset(GrCoverageSetOpXPFactory::Create(regionOp, invertCovera ge));
145 } 146 }
146 147
148 void setDisableColorXPFactory() {
149 fXPFactory.reset(GrDisableColorXPFactory::Create());
150 }
151
147 const GrFragmentProcessor* addColorProcessor(const GrFragmentProcessor* effe ct) { 152 const GrFragmentProcessor* addColorProcessor(const GrFragmentProcessor* effe ct) {
148 SkASSERT(effect); 153 SkASSERT(effect);
149 SkNEW_APPEND_TO_TARRAY(&fColorStages, GrFragmentStage, (effect)); 154 SkNEW_APPEND_TO_TARRAY(&fColorStages, GrFragmentStage, (effect));
150 fColorProcInfoValid = false; 155 fColorProcInfoValid = false;
151 return effect; 156 return effect;
152 } 157 }
153 158
154 const GrFragmentProcessor* addCoverageProcessor(const GrFragmentProcessor* e ffect) { 159 const GrFragmentProcessor* addCoverageProcessor(const GrFragmentProcessor* e ffect) {
155 SkASSERT(effect); 160 SkASSERT(effect);
156 SkNEW_APPEND_TO_TARRAY(&fCoverageStages, GrFragmentStage, (effect)); 161 SkNEW_APPEND_TO_TARRAY(&fCoverageStages, GrFragmentStage, (effect));
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 /** 408 /**
404 * Perform HW anti-aliasing. This means either HW FSAA, if supported by the render target, 409 * Perform HW anti-aliasing. This means either HW FSAA, if supported by the render target,
405 * or smooth-line rendering if a line primitive is drawn and line smooth ing is supported by 410 * or smooth-line rendering if a line primitive is drawn and line smooth ing is supported by
406 * the 3D API. 411 * the 3D API.
407 */ 412 */
408 kHWAntialias_StateBit = 0x02, 413 kHWAntialias_StateBit = 0x02,
409 /** 414 /**
410 * Draws will respect the clip, otherwise the clip is ignored. 415 * Draws will respect the clip, otherwise the clip is ignored.
411 */ 416 */
412 kClip_StateBit = 0x04, 417 kClip_StateBit = 0x04,
413 /**
414 * Disables writing to the color buffer. Useful when performing stencil
415 * operations.
416 */
417 kNoColorWrites_StateBit = 0x08,
418 418
419 kLast_StateBit = kNoColorWrites_StateBit, 419 kLast_StateBit = kClip_StateBit,
420 }; 420 };
421 421
422 bool isClipState() const { return 0 != (fFlagBits & kClip_StateBit); } 422 bool isClipState() const { return 0 != (fFlagBits & kClip_StateBit); }
423 bool isColorWriteDisabled() const { return 0 != (fFlagBits & kNoColorWrites_ StateBit); }
424 bool isDither() const { return 0 != (fFlagBits & kDither_StateBit); } 423 bool isDither() const { return 0 != (fFlagBits & kDither_StateBit); }
425 bool isHWAntialias() const { return 0 != (fFlagBits & kHWAntialias_StateBit) ; } 424 bool isHWAntialias() const { return 0 != (fFlagBits & kHWAntialias_StateBit) ; }
426 425
427 /** 426 /**
428 * Enable render state settings. 427 * Enable render state settings.
429 * 428 *
430 * @param stateBits bitfield of StateBits specifying the states to enable 429 * @param stateBits bitfield of StateBits specifying the states to enable
431 */ 430 */
432 void enableState(uint32_t stateBits) { fFlagBits |= stateBits; } 431 void enableState(uint32_t stateBits) { fFlagBits |= stateBits; }
433 432
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 mutable bool fCoverageProcInfoValid; 547 mutable bool fCoverageProcInfoValid;
549 mutable GrColor fColorCache; 548 mutable GrColor fColorCache;
550 mutable GrColor fCoverageCache; 549 mutable GrColor fCoverageCache;
551 mutable const GrPrimitiveProcessor* fColorPrimProc; 550 mutable const GrPrimitiveProcessor* fColorPrimProc;
552 mutable const GrPrimitiveProcessor* fCoveragePrimProc; 551 mutable const GrPrimitiveProcessor* fCoveragePrimProc;
553 552
554 friend class GrOptDrawState; 553 friend class GrOptDrawState;
555 }; 554 };
556 555
557 #endif 556 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrDefaultPathRenderer.cpp ('k') | src/gpu/GrDrawState.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698