Use SkPMColor4f in OverrideInput, remove some kruft from SkGr
Bug: skia:
Change-Id: I2263048fea3b708aa0ac7758a80cbdc47e4f45f2
Reviewed-on: https://skia-review.googlesource.com/c/159540
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/src/atlastext/SkAtlasTextTarget.cpp b/src/atlastext/SkAtlasTextTarget.cpp
index c85e8d0..1eaba05 100644
--- a/src/atlastext/SkAtlasTextTarget.cpp
+++ b/src/atlastext/SkAtlasTextTarget.cpp
@@ -105,7 +105,7 @@
void makeGrPaint(GrMaskFormat, const SkPaint& skPaint, const SkMatrix&,
GrPaint* grPaint) override {
- grPaint->setColor4f(SkColor4fToPremulGrColor4fLegacy(skPaint.getColor4f()));
+ grPaint->setColor4f(GrColor4f::FromRGBA4f(skPaint.getColor4f().premul()));
}
GrContext* getContext() override {
diff --git a/src/gpu/GrFragmentProcessor.cpp b/src/gpu/GrFragmentProcessor.cpp
index 550134b..eff7419 100644
--- a/src/gpu/GrFragmentProcessor.cpp
+++ b/src/gpu/GrFragmentProcessor.cpp
@@ -281,11 +281,11 @@
//////////////////////////////////////////////////////////////////////////////
std::unique_ptr<GrFragmentProcessor> GrFragmentProcessor::OverrideInput(
- std::unique_ptr<GrFragmentProcessor> fp, GrColor4f color) {
+ std::unique_ptr<GrFragmentProcessor> fp, const SkPMColor4f& color) {
class ReplaceInputFragmentProcessor : public GrFragmentProcessor {
public:
static std::unique_ptr<GrFragmentProcessor> Make(std::unique_ptr<GrFragmentProcessor> child,
- GrColor4f color) {
+ const SkPMColor4f& color) {
return std::unique_ptr<GrFragmentProcessor>(
new ReplaceInputFragmentProcessor(std::move(child), color));
}
@@ -312,29 +312,31 @@
private:
void onSetData(const GrGLSLProgramDataManager& pdman,
const GrFragmentProcessor& fp) override {
- GrColor4f color = fp.cast<ReplaceInputFragmentProcessor>().fColor;
+ SkPMColor4f color = fp.cast<ReplaceInputFragmentProcessor>().fColor;
if (!fHaveSetColor || color != fPreviousColor) {
- pdman.set4fv(fColorUni, 1, color.fRGBA);
+ pdman.set4fv(fColorUni, 1, color.vec());
fPreviousColor = color;
fHaveSetColor = true;
}
}
GrGLSLProgramDataManager::UniformHandle fColorUni;
- bool fHaveSetColor;
- GrColor4f fPreviousColor;
+ bool fHaveSetColor;
+ SkPMColor4f fPreviousColor;
};
return new GLFP;
}
- ReplaceInputFragmentProcessor(std::unique_ptr<GrFragmentProcessor> child, GrColor4f color)
+ ReplaceInputFragmentProcessor(std::unique_ptr<GrFragmentProcessor> child,
+ const SkPMColor4f& color)
: INHERITED(kReplaceInputFragmentProcessor_ClassID, OptFlags(child.get(), color))
, fColor(color) {
this->registerChildProcessor(std::move(child));
}
- static OptimizationFlags OptFlags(const GrFragmentProcessor* child, GrColor4f color) {
+ static OptimizationFlags OptFlags(const GrFragmentProcessor* child,
+ const SkPMColor4f& color) {
OptimizationFlags childFlags = child->optimizationFlags();
OptimizationFlags flags = kNone_OptimizationFlags;
if (childFlags & kConstantOutputForConstantInput_OptimizationFlag) {
@@ -354,11 +356,10 @@
}
SkPMColor4f constantOutputForConstantInput(const SkPMColor4f&) const override {
- return ConstantOutputForConstantInput(this->childProcessor(0),
- fColor.asRGBA4f<kPremul_SkAlphaType>());
+ return ConstantOutputForConstantInput(this->childProcessor(0), fColor);
}
- GrColor4f fColor;
+ SkPMColor4f fColor;
typedef GrFragmentProcessor INHERITED;
};
diff --git a/src/gpu/GrFragmentProcessor.h b/src/gpu/GrFragmentProcessor.h
index 19ce61b..6371950 100644
--- a/src/gpu/GrFragmentProcessor.h
+++ b/src/gpu/GrFragmentProcessor.h
@@ -64,7 +64,7 @@
* child.
*/
static std::unique_ptr<GrFragmentProcessor> OverrideInput(std::unique_ptr<GrFragmentProcessor>,
- GrColor4f);
+ const SkPMColor4f&);
/**
* Returns a fragment processor that premuls the input before calling the passed in fragment
diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp
index 8f08d6d..f78ef18 100644
--- a/src/gpu/SkGr.cpp
+++ b/src/gpu/SkGr.cpp
@@ -254,15 +254,6 @@
///////////////////////////////////////////////////////////////////////////////
-GrColor4f SkColorToPremulGrColor4f(SkColor c, const GrColorSpaceInfo& colorSpaceInfo) {
- // We want to premultiply after color space conversion, so this is easy:
- return SkColor4fToUnpremulGrColor4f(SkColor4f::FromColor(c), colorSpaceInfo).premul();
-}
-
-GrColor4f SkColor4fToPremulGrColor4fLegacy(SkColor4f c) {
- return GrColor4f::FromRGBA4f(c.premul());
-}
-
GrColor4f SkColor4fToUnpremulGrColor4f(SkColor4f c, const GrColorSpaceInfo& colorSpaceInfo) {
GrColor4f color = GrColor4f::FromRGBA4f(c);
if (auto* xform = colorSpaceInfo.colorSpaceXformFromSRGB()) {
@@ -405,7 +396,7 @@
// The geometry processor will insert the primitive color to start the color chain, so
// the GrPaint color will be ignored.
- GrColor4f shaderInput = origColor.opaque();
+ SkPMColor4f shaderInput = origColor.opaque().asRGBA4f<kPremul_SkAlphaType>();
shaderFP = GrFragmentProcessor::OverrideInput(std::move(shaderFP), shaderInput);
shaderFP = GrXfermodeFragmentProcessor::MakeFromSrcProcessor(std::move(shaderFP),
*primColorMode);
diff --git a/src/gpu/SkGr.h b/src/gpu/SkGr.h
index cdc885a..2159cd9 100644
--- a/src/gpu/SkGr.h
+++ b/src/gpu/SkGr.h
@@ -59,8 +59,6 @@
/** Transform an SkColor (sRGB bytes) or SkColor4f (sRGB floats) to GrColor4f
for the specified color space info. */
-GrColor4f SkColorToPremulGrColor4f(SkColor, const GrColorSpaceInfo&);
-GrColor4f SkColor4fToPremulGrColor4fLegacy(SkColor4f);
GrColor4f SkColor4fToUnpremulGrColor4f(SkColor4f, const GrColorSpaceInfo&);
/** Similar, but using SkPMColor4f. */
@@ -166,8 +164,6 @@
GR_STATIC_ASSERT((int)kIDA_GrBlendCoeff == (int)SkBlendModeCoeff::kIDA);
//GR_STATIC_ASSERT(SkXfermode::kCoeffCount == 10);
-#define SkXfermodeCoeffToGrBlendCoeff(X) ((GrBlendCoeff)(X))
-
////////////////////////////////////////////////////////////////////////////////
// Texture management