| Index: include/gpu/GrXferProcessor.h
|
| diff --git a/include/gpu/GrXferProcessor.h b/include/gpu/GrXferProcessor.h
|
| index b7d0bdd9fa9ef7717471a3857b9e788e95793378..10ecf54c758c25e938cb9b1b7fe549f016a9e727 100644
|
| --- a/include/gpu/GrXferProcessor.h
|
| +++ b/include/gpu/GrXferProcessor.h
|
| @@ -13,8 +13,6 @@
|
| #include "GrTypes.h"
|
| #include "SkXfermode.h"
|
|
|
| -class GrProcOptInfo;
|
| -
|
| /**
|
| * GrXferProcessor is responsible for implementing the xfer mode that blends the src color and dst
|
| * color. It does this by emitting fragment shader code and controlling the fixed-function blend
|
| @@ -29,82 +27,10 @@
|
| * GrXPFactory once we have finalized the state of our draw.
|
| */
|
| class GrXferProcessor : public GrFragmentProcessor {
|
| -public:
|
| - /**
|
| - * Optimizations for blending / coverage that an OptDrawState should apply to itself.
|
| - */
|
| - enum OptFlags {
|
| - /**
|
| - * No optimizations needed
|
| - */
|
| - kNone_Opt = 0,
|
| - /**
|
| - * The draw can be skipped completely.
|
| - */
|
| - kSkipDraw_OptFlag = 0x1,
|
| - /**
|
| - * Clear color stages, remove color vertex attribs, and use input color
|
| - */
|
| - kClearColorStages_OptFlag = 0x2,
|
| - /**
|
| - * Clear coverage stages, remove coverage vertex attribs, and use input coverage
|
| - */
|
| - kClearCoverageStages_OptFlag = 0x4,
|
| - /**
|
| - * Set CoverageDrawing_StateBit
|
| - */
|
| - kSetCoverageDrawing_OptFlag = 0x8,
|
| - };
|
| -
|
| - GR_DECL_BITFIELD_OPS_FRIENDS(OptFlags);
|
| -
|
| - /**
|
| - * Determines which optimizations (as described by the ptFlags above) can be performed by
|
| - * the draw with this xfer processor. If this function is called, the xfer processor may change
|
| - * its state to reflected the given blend optimizations. It will also set the output parameters,
|
| - * color and coverage, to specific values if it decides to remove all color or coverage stages.
|
| - * A caller who calls this function on a XP is required to honor the returned OptFlags
|
| - * and color/coverage values for its draw.
|
| - */
|
| - // TODO: remove need for isCoverageDrawing once coverageDrawing is its own XP.
|
| - // TODO: remove need for colorWriteDisabled once colorWriteDisabled is its own XP.
|
| - virtual OptFlags getOptimizations(const GrProcOptInfo& colorPOI,
|
| - const GrProcOptInfo& coveragePOI,
|
| - bool isCoverageDrawing,
|
| - bool colorWriteDisabled,
|
| - bool doesStencilWrite,
|
| - GrColor* color,
|
| - uint8_t* coverage) = 0;
|
| -
|
| - struct BlendInfo {
|
| - GrBlendCoeff fSrcBlend;
|
| - GrBlendCoeff fDstBlend;
|
| - GrColor fBlendConstant;
|
| - };
|
| -
|
| - virtual void getBlendInfo(BlendInfo* blendInfo) const = 0;
|
| -
|
| - /** Will this prceossor read the destination pixel value? */
|
| - bool willReadDstColor() const { return fWillReadDstColor; }
|
| -
|
| -protected:
|
| - GrXferProcessor() : fWillReadDstColor(false) {}
|
| -
|
| - /**
|
| - * If the prceossor subclass will read the destination pixel value then it must call this
|
| - * function from its constructor. Otherwise, when its generated backend-specific prceossor class
|
| - * attempts to generate code that reads the destination pixel it will fail.
|
| - */
|
| - void setWillReadDstColor() { fWillReadDstColor = true; }
|
| -
|
| private:
|
| -
|
| - bool fWillReadDstColor;
|
|
|
| typedef GrFragmentProcessor INHERITED;
|
| };
|
| -
|
| -GR_MAKE_BITFIELD_OPS(GrXferProcessor::OptFlags);
|
|
|
| /**
|
| * We install a GrXPFactory (XPF) early on in the pipeline before all the final draw information is
|
| @@ -119,8 +45,7 @@
|
| */
|
| class GrXPFactory : public SkRefCnt {
|
| public:
|
| - virtual GrXferProcessor* createXferProcessor(const GrProcOptInfo& colorPOI,
|
| - const GrProcOptInfo& coveragePOI) const = 0;
|
| + virtual const GrXferProcessor* createXferProcessor() const = 0;
|
|
|
| /**
|
| * This function returns true if the GrXferProcessor generated from this factory will be able to
|
| @@ -128,40 +53,6 @@
|
| * final computed color from the color stages.
|
| */
|
| virtual bool supportsRGBCoverage(GrColor knownColor, uint32_t knownColorFlags) const = 0;
|
| -
|
| - /**
|
| - * Depending on color blend mode requested it may or may not be possible to correctly blend with
|
| - * fractional pixel coverage generated by the fragment shader.
|
| - *
|
| - * This function considers the known color and coverage input into the xfer processor and
|
| - * certain state information (isCoverageDrawing and colorWriteDisabled) to determine whether
|
| - * coverage can be handled correctly.
|
| - */
|
| - // TODO: remove need for isCoverageDrawing once coverageDrawing is its own XP.
|
| - // TODO: remove need for colorWriteDisabled once colorWriteDisabled is its own XP.
|
| - virtual bool canApplyCoverage(const GrProcOptInfo& colorPOI, const GrProcOptInfo& coveragePOI,
|
| - bool isCoverageDrawing, bool colorWriteDisabled) const = 0;
|
| -
|
| - /**
|
| - * This function returns true if the destination pixel values will be read for blending during
|
| - * draw.
|
| - */
|
| - // TODO: remove need for isCoverageDrawing once coverageDrawing is its own XP.
|
| - // TODO: remove need for colorWriteDisabled once only XP can read dst.
|
| - virtual bool willBlendWithDst(const GrProcOptInfo& colorPOI, const GrProcOptInfo& coveragePOI,
|
| - bool isCoverageDrawing, bool colorWriteDisabled) const = 0;
|
| -
|
| - /**
|
| - * Determines whether multiplying the computed per-pixel color by the pixel's fractional
|
| - * coverage before the blend will give the correct final destination color. In general it
|
| - * will not as coverage is applied after blending.
|
| - */
|
| - // TODO: remove need for isCoverageDrawing once coverageDrawing is its own XP.
|
| - virtual bool canTweakAlphaForCoverage(bool isCoverageDrawing) const = 0;
|
| -
|
| - virtual bool getOpaqueAndKnownColor(const GrProcOptInfo& colorPOI,
|
| - const GrProcOptInfo& coveragePOI, GrColor* solidColor,
|
| - uint32_t* solidColorKnownComponents) const = 0;
|
|
|
| bool isEqual(const GrXPFactory& that) const {
|
| if (this->classID() != that.classID()) {
|
|
|