Chromium Code Reviews| Index: include/gpu/GrPaint.h |
| diff --git a/include/gpu/GrPaint.h b/include/gpu/GrPaint.h |
| index 70067ae4491b418f4dfec03c17eafb313d05ee46..bdf4b2b880db9d702394936aa323ea57bd8220e0 100644 |
| --- a/include/gpu/GrPaint.h |
| +++ b/include/gpu/GrPaint.h |
| @@ -77,6 +77,11 @@ public: |
| bool getAllowSRGBInputs() const { return fAllowSRGBInputs; } |
| /** |
| + * Does one of the fragment processors need a field of distance vectors to the nearest edge? |
| + */ |
| + bool usesDistanceVectorField() const { return fUsesDistanceVectorField; } |
| + |
| + /** |
| * Should rendering be gamma-correct, end-to-end. Causes sRGB render targets to behave |
| * as such (with linear blending), and sRGB inputs to be filtered and decoded correctly. |
| */ |
| @@ -100,6 +105,7 @@ public: |
| */ |
| void addColorFragmentProcessor(sk_sp<GrFragmentProcessor> fp) { |
| SkASSERT(fp); |
| + fUsesDistanceVectorField |= fp->usesDistanceVectorField(); |
| fColorFragmentProcessors.push_back(std::move(fp)); |
| } |
| @@ -108,6 +114,7 @@ public: |
| */ |
| void addCoverageFragmentProcessor(sk_sp<GrFragmentProcessor> fp) { |
| SkASSERT(fp); |
| + fUsesDistanceVectorField |= fp->usesDistanceVectorField(); |
| fCoverageFragmentProcessors.push_back(std::move(fp)); |
| } |
| @@ -140,6 +147,7 @@ public: |
| fAntiAlias = paint.fAntiAlias; |
| fDisableOutputConversionToSRGB = paint.fDisableOutputConversionToSRGB; |
| fAllowSRGBInputs = paint.fAllowSRGBInputs; |
| + fUsesDistanceVectorField = paint.fUsesDistanceVectorField; |
|
egdaniel
2016/07/12 13:46:42
would this not be taken care of by the processor e
dvonbeck
2016/07/13 15:17:13
This is the assignment operator. The flag is only
|
| fColor = paint.fColor; |
| fColorFragmentProcessors = paint.fColorFragmentProcessors; |
| @@ -166,6 +174,7 @@ private: |
| bool fAntiAlias; |
| bool fDisableOutputConversionToSRGB; |
| bool fAllowSRGBInputs; |
| + bool fUsesDistanceVectorField; |
| GrColor4f fColor; |
| }; |