| Index: include/gpu/GrInvariantOutput.h
|
| diff --git a/include/gpu/GrInvariantOutput.h b/include/gpu/GrInvariantOutput.h
|
| index fd0a7f8eb56552528cb2e2279d997d9b9cf81eda..4977333de4e80779432c0eb20289ad5065f47ae3 100644
|
| --- a/include/gpu/GrInvariantOutput.h
|
| +++ b/include/gpu/GrInvariantOutput.h
|
| @@ -79,7 +79,6 @@
|
| };
|
|
|
| void mulByUnknownOpaqueFourComponents() {
|
| - SkDEBUGCODE(this->validate());
|
| if (this->isOpaque()) {
|
| fValidFlags = kA_GrColorComponentFlag;
|
| fIsSingleComponent = false;
|
| @@ -88,32 +87,26 @@
|
| // multiplied is opaque.
|
| this->mulByUnknownFourComponents();
|
| }
|
| - SkDEBUGCODE(this->validate());
|
| }
|
|
|
| void mulByUnknownFourComponents() {
|
| - SkDEBUGCODE(this->validate());
|
| if (this->hasZeroAlpha()) {
|
| this->internalSetToTransparentBlack();
|
| } else {
|
| this->internalSetToUnknown();
|
| }
|
| - SkDEBUGCODE(this->validate());
|
| }
|
|
|
| void mulByUnknownSingleComponent() {
|
| - SkDEBUGCODE(this->validate());
|
| if (this->hasZeroAlpha()) {
|
| this->internalSetToTransparentBlack();
|
| } else {
|
| // We don't need to change fIsSingleComponent in this case
|
| fValidFlags = 0;
|
| }
|
| - SkDEBUGCODE(this->validate());
|
| }
|
|
|
| void mulByKnownSingleComponent(uint8_t alpha) {
|
| - SkDEBUGCODE(this->validate());
|
| if (this->hasZeroAlpha() || 0 == alpha) {
|
| this->internalSetToTransparentBlack();
|
| } else {
|
| @@ -123,89 +116,20 @@
|
| SkMulDiv255Round(GrColorUnpackG(fColor), alpha),
|
| SkMulDiv255Round(GrColorUnpackB(fColor), alpha),
|
| SkMulDiv255Round(GrColorUnpackA(fColor), alpha));
|
| - // We don't need to change fIsSingleComponent in this case
|
| }
|
| }
|
| - SkDEBUGCODE(this->validate());
|
| - }
|
| -
|
| - void mulByKnownFourComponents(GrColor color) {
|
| - SkDEBUGCODE(this->validate());
|
| - uint32_t a;
|
| - if (GetAlphaAndCheckSingleChannel(color, &a)) {
|
| - this->mulByKnownSingleComponent(a);
|
| - } else {
|
| - if (color != 0xffffffff) {
|
| - fColor = GrColorPackRGBA(
|
| - SkMulDiv255Round(GrColorUnpackR(fColor), GrColorUnpackR(color)),
|
| - SkMulDiv255Round(GrColorUnpackG(fColor), GrColorUnpackG(color)),
|
| - SkMulDiv255Round(GrColorUnpackB(fColor), GrColorUnpackB(color)),
|
| - SkMulDiv255Round(GrColorUnpackA(fColor), a));
|
| - if (kRGBA_GrColorComponentFlags == fValidFlags) {
|
| - fIsSingleComponent = GetAlphaAndCheckSingleChannel(fColor, &a);
|
| - }
|
| - }
|
| - }
|
| - SkDEBUGCODE(this->validate());
|
| - }
|
| -
|
| - // Ignores the incoming color's RGB and muls its alpha by color.
|
| - void mulAlphaByKnownFourComponents(GrColor color) {
|
| - SkDEBUGCODE(this->validate());
|
| - uint32_t a;
|
| - if (GetAlphaAndCheckSingleChannel(color, &a)) {
|
| - this->mulAlphaByKnownSingleComponent(a);
|
| - } else if (fValidFlags & kA_GrColorComponentFlag) {
|
| - GrColor preAlpha = GrColorUnpackA(fColor);
|
| - if (0 == preAlpha) {
|
| - this->internalSetToTransparentBlack();
|
| - } else {
|
| - fColor = GrColorPackRGBA(
|
| - SkMulDiv255Round(preAlpha, GrColorUnpackR(color)),
|
| - SkMulDiv255Round(preAlpha, GrColorUnpackG(color)),
|
| - SkMulDiv255Round(preAlpha, GrColorUnpackB(color)),
|
| - SkMulDiv255Round(preAlpha, a));
|
| - fValidFlags = kRGBA_GrColorComponentFlags;
|
| - }
|
| - } else {
|
| - fValidFlags = 0;
|
| - }
|
| - SkDEBUGCODE(this->validate());
|
| - }
|
| -
|
| - // Ignores the incoming color's RGB and muls its alpha by the alpha param and sets all channels
|
| - // equal to that value.
|
| - void mulAlphaByKnownSingleComponent(uint8_t alpha) {
|
| - SkDEBUGCODE(this->validate());
|
| - if (0 == alpha || this->hasZeroAlpha()) {
|
| - this->internalSetToTransparentBlack();
|
| - } else {
|
| - if (fValidFlags & kA_GrColorComponentFlag) {
|
| - GrColor a = GrColorUnpackA(fColor);
|
| - a = SkMulDiv255Round(alpha, a);
|
| - fColor = GrColorPackRGBA(a, a, a, a);
|
| - fValidFlags = kRGBA_GrColorComponentFlags;
|
| - } else {
|
| - fValidFlags = 0;
|
| - }
|
| - fIsSingleComponent = true;
|
| - }
|
| - SkDEBUGCODE(this->validate());
|
| }
|
|
|
| void invalidateComponents(uint8_t invalidateFlags, ReadInput readsInput) {
|
| - SkDEBUGCODE(this->validate());
|
| fValidFlags &= ~invalidateFlags;
|
| fIsSingleComponent = false;
|
| fNonMulStageFound = true;
|
| if (kWillNot_ReadInput == readsInput) {
|
| fWillUseInputColor = false;
|
| }
|
| - SkDEBUGCODE(this->validate());
|
| }
|
|
|
| void setToOther(uint8_t validFlags, GrColor color, ReadInput readsInput) {
|
| - SkDEBUGCODE(this->validate());
|
| fValidFlags = validFlags;
|
| fColor = color;
|
| fIsSingleComponent = false;
|
| @@ -213,28 +137,14 @@
|
| if (kWillNot_ReadInput == readsInput) {
|
| fWillUseInputColor = false;
|
| }
|
| - if (kRGBA_GrColorComponentFlags == fValidFlags) {
|
| - uint32_t a;
|
| - if (GetAlphaAndCheckSingleChannel(color, &a)) {
|
| - fIsSingleComponent = true;
|
| - }
|
| - } else if (kA_GrColorComponentFlag & fValidFlags) {
|
| - // Assuming fColor is premul means if a is 0 the color must be all 0s.
|
| - if (!GrColorUnpackA(fColor)) {
|
| - this->internalSetToTransparentBlack();
|
| - }
|
| - }
|
| - SkDEBUGCODE(this->validate());
|
| }
|
|
|
| void setToUnknown(ReadInput readsInput) {
|
| - SkDEBUGCODE(this->validate());
|
| this->internalSetToUnknown();
|
| fNonMulStageFound= true;
|
| if (kWillNot_ReadInput == readsInput) {
|
| fWillUseInputColor = false;
|
| }
|
| - SkDEBUGCODE(this->validate());
|
| }
|
|
|
| // Temporary setter to handle LCD text correctly until we improve texture pixel config queries
|
| @@ -254,13 +164,6 @@
|
|
|
| private:
|
| friend class GrProcOptInfo;
|
| -
|
| - /** Extracts the alpha channel and returns true if r,g,b == a. */
|
| - static bool GetAlphaAndCheckSingleChannel(GrColor color, uint32_t* alpha) {
|
| - *alpha = GrColorUnpackA(color);
|
| - return *alpha == GrColorUnpackR(color) && *alpha == GrColorUnpackG(color) &&
|
| - *alpha == GrColorUnpackB(color);
|
| - }
|
|
|
| void reset(GrColor color, GrColorComponentFlags flags, bool isSingleComponent) {
|
| fColor = color;
|
|
|