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

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

Issue 791743003: Remove GP from drawstate, revision of invariant output for GP (Closed) Base URL: https://skia.googlesource.com/skia.git@color-to-gp
Patch Set: 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
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 GrInvariantOutput_DEFINED 8 #ifndef GrInvariantOutput_DEFINED
9 #define GrInvariantOutput_DEFINED 9 #define GrInvariantOutput_DEFINED
10 10
11 #include "GrColor.h" 11 #include "GrColor.h"
12 12
13 struct GrInitInvariantOutput {
14 GrInitInvariantOutput()
15 : fValidFlags(0)
16 , fColor(0)
17 , fIsSingleComponent(false) {}
18
19 void setKnownComponents(GrColor color) {
20 fColor = color;
21 fValidFlags = kRGBA_GrColorComponentFlags;
bsalomon 2014/12/09 20:39:50 fSingleComponent = (true if all the values the sam
22 }
23
24 void setKnownAlpha(uint8_t alpha) {
25 fColor |= (fColor >> GrColor_SHIFT_A) | alpha;
bsalomon 2014/12/09 20:39:50 fColor = (alpha << SHIFT_A); right?
26 fValidFlags |= kA_GrColorComponentFlag;
bsalomon 2014/12/09 20:39:50 = not |=, right?
27 }
bsalomon 2014/12/09 20:39:50 fSingleComponent = true;
28
29 void setUnknownAlpha() {
30 fValidFlags &= ~kA_GrColorComponentFlag;
bsalomon 2014/12/09 20:39:50 fValidFlags = 0; fSingleComponent = true;
31 }
32
33 void setUnknown() {
34 fValidFlags = 0;
bsalomon 2014/12/09 20:39:50 fSingleComponent = false; Should we make the name
35 }
36
37 void setOpaque() {
38 fColor |= (fColor >> GrColor_SHIFT_A) | 0xFF;
39 fValidFlags |= kA_GrColorComponentFlag;
bsalomon 2014/12/09 20:39:50 fSingleComponent = false
40 }
41
42 void setIsSingleComponent() { fIsSingleComponent = true; }
bsalomon 2014/12/09 20:39:50 Do we need this two helpers? seems always implied
43
44 void setHasFourComponents() { fIsSingleComponent = false; }
45
46 uint32_t fValidFlags;
47 GrColor fColor;
48 bool fIsSingleComponent;
49 };
50
13 class GrInvariantOutput { 51 class GrInvariantOutput {
14 public: 52 public:
15 GrInvariantOutput(GrColor color, GrColorComponentFlags flags, bool isSingleC omponent) 53 GrInvariantOutput(GrColor color, GrColorComponentFlags flags, bool isSingleC omponent)
16 : fColor(color) 54 : fColor(color)
17 , fValidFlags(flags) 55 , fValidFlags(flags)
18 , fIsSingleComponent(isSingleComponent) 56 , fIsSingleComponent(isSingleComponent)
19 , fNonMulStageFound(false) 57 , fNonMulStageFound(false)
20 , fWillUseInputColor(true) 58 , fWillUseInputColor(true)
21 , fIsLCDCoverage(false) {} 59 , fIsLCDCoverage(false) {}
22 60
61 GrInvariantOutput(const GrInitInvariantOutput& io)
62 : fColor(io.fColor)
63 , fValidFlags(io.fValidFlags)
64 , fIsSingleComponent(io.fIsSingleComponent)
65 , fNonMulStageFound(false)
66 , fWillUseInputColor(false) {}
67
23 virtual ~GrInvariantOutput() {} 68 virtual ~GrInvariantOutput() {}
24 69
25 enum ReadInput { 70 enum ReadInput {
26 kWill_ReadInput, 71 kWill_ReadInput,
27 kWillNot_ReadInput, 72 kWillNot_ReadInput,
28 }; 73 };
29 74
30 void mulByUnknownOpaqueColor() { 75 void mulByUnknownOpaqueColor() {
31 if (this->isOpaque()) { 76 if (this->isOpaque()) {
32 fValidFlags = kA_GrColorComponentFlag; 77 fValidFlags = kA_GrColorComponentFlag;
33 fIsSingleComponent = false; 78 fIsSingleComponent = false;
34 } else { 79 } else {
35 // Since the current state is not opaque we no longer care if the co lor being 80 // Since the current state is not opaque we no longer care if the co lor being
36 // multiplied is opaque. 81 // multiplied is opaque.
37 this->mulByUnknownColor(); 82 this->mulByUnknownColor();
38 } 83 }
39 } 84 }
40 85
41 void mulByUnknownColor() { 86 void mulByUnknownColor() {
42 if (this->hasZeroAlpha()) { 87 if (this->hasZeroAlpha()) {
43 this->internalSetToTransparentBlack(); 88 this->internalSetToTransparentBlack();
44 } else { 89 } else {
45 this->internalSetToUnknown(); 90 this->internalSetToUnknown();
46 } 91 }
47 } 92 }
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 friend class GrProcOptInfo; 160 friend class GrProcOptInfo;
116 161
117 void reset(GrColor color, GrColorComponentFlags flags, bool isSingleComponen t) { 162 void reset(GrColor color, GrColorComponentFlags flags, bool isSingleComponen t) {
118 fColor = color; 163 fColor = color;
119 fValidFlags = flags; 164 fValidFlags = flags;
120 fIsSingleComponent = isSingleComponent; 165 fIsSingleComponent = isSingleComponent;
121 fNonMulStageFound = false; 166 fNonMulStageFound = false;
122 fWillUseInputColor = true; 167 fWillUseInputColor = true;
123 } 168 }
124 169
170 void reset(const GrInitInvariantOutput& io) {
171 fColor = io.fColor;
172 fValidFlags = io.fValidFlags;
173 fIsSingleComponent = io.fIsSingleComponent;
174 fNonMulStageFound = false;
175 fWillUseInputColor = true;
176 }
177
125 void internalSetToTransparentBlack() { 178 void internalSetToTransparentBlack() {
126 fValidFlags = kRGBA_GrColorComponentFlags; 179 fValidFlags = kRGBA_GrColorComponentFlags;
127 fColor = 0; 180 fColor = 0;
128 fIsSingleComponent = true; 181 fIsSingleComponent = true;
129 } 182 }
130 183
131 void internalSetToUnknown() { 184 void internalSetToUnknown() {
132 fValidFlags = 0; 185 fValidFlags = 0;
133 fIsSingleComponent = false; 186 fIsSingleComponent = false;
134 } 187 }
(...skipping 29 matching lines...) Expand all
164 uint32_t fValidFlags; 217 uint32_t fValidFlags;
165 bool fIsSingleComponent; 218 bool fIsSingleComponent;
166 bool fNonMulStageFound; 219 bool fNonMulStageFound;
167 bool fWillUseInputColor; 220 bool fWillUseInputColor;
168 bool fIsLCDCoverage; // Temorary data member until texture pixel configs are updated 221 bool fIsLCDCoverage; // Temorary data member until texture pixel configs are updated
169 222
170 }; 223 };
171 224
172 #endif 225 #endif
173 226
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698