| Index: src/gpu/SkGr.cpp
|
| diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp
|
| index 86b1007ba52eab2bf057b75acd90d703995a71ce..c8839f3f1a49b0863df897e6f60de1a421ea0c54 100644
|
| --- a/src/gpu/SkGr.cpp
|
| +++ b/src/gpu/SkGr.cpp
|
| @@ -23,7 +23,6 @@
|
| #include "SkColorFilter.h"
|
| #include "SkConfig8888.h"
|
| #include "SkCanvas.h"
|
| -#include "SkColorSpaceXform.h"
|
| #include "SkData.h"
|
| #include "SkErrorInternals.h"
|
| #include "SkMessageBus.h"
|
| @@ -530,20 +529,18 @@
|
| grPaint->setAntiAlias(skPaint.isAntiAlias());
|
| grPaint->setAllowSRGBInputs(dc->isGammaCorrect());
|
|
|
| - GrColor4f origColor;
|
| + // Raw translation of the SkPaint color to our 4f format:
|
| + GrColor4f origColor = GrColor4f::FromGrColor(SkColorToUnpremulGrColor(skPaint.getColor()));
|
|
|
| // Linearize, if the color is meant to be in sRGB gamma:
|
| if (dc->isGammaCorrect()) {
|
| - SkColorSpaceXform* xform = dc->getColorXformFromSRGB();
|
| - SkASSERT(xform);
|
| -
|
| - // FIXME (msarett): Support BGRA inputs to SkColorSpaceXform?
|
| - uint32_t rgba = SkSwizzle_RB(skPaint.getColor());
|
| - xform->apply(&origColor, &rgba, 1, SkColorSpaceXform::kRGBA_F32_ColorFormat,
|
| - kUnpremul_SkAlphaType);
|
| - } else {
|
| - // Raw translation of the SkPaint color to our 4f format:
|
| - origColor = GrColor4f::FromGrColor(SkColorToUnpremulGrColor(skPaint.getColor()));
|
| + origColor.fRGBA[0] = exact_srgb_to_linear(origColor.fRGBA[0]);
|
| + origColor.fRGBA[1] = exact_srgb_to_linear(origColor.fRGBA[1]);
|
| + origColor.fRGBA[2] = exact_srgb_to_linear(origColor.fRGBA[2]);
|
| +
|
| + if (dc->getColorXformFromSRGB()) {
|
| + origColor = dc->getColorXformFromSRGB()->apply(origColor);
|
| + }
|
| }
|
|
|
| // Setup the initial color considering the shader, the SkPaint color, and the presence or not
|
|
|