&fColorUniform);
// Setup position
- this->setupPosition(pb, gpArgs, qe.inPosition()->fName, qe.viewMatrix());
+ this->setupPosition(pb, gpArgs, qe.inPosition()->fName);
// emit transforms
this->emitTransforms(args.fPB, gpArgs->fPositionVar, qe.inPosition()->fName,
const BatchTracker& local = bt.cast<BatchTracker>();
uint32_t key = local.fInputColorType << 16;
key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x1 : 0x0;
- key |= ComputePosKey(gp.viewMatrix()) << 1;
b->add32(key);
}
virtual void setData(const GrGLProgramDataManager& pdman,
const GrPrimitiveProcessor& gp,
const GrBatchTracker& bt) override {
- this->setUniformViewMatrix(pdman, gp.viewMatrix());
-
const BatchTracker& local = bt.cast<BatchTracker>();
if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) {
GrGLfloat c[4];
private:
QuadEdgeEffect(GrColor color, const SkMatrix& localMatrix)
- : INHERITED(SkMatrix::I(), localMatrix)
+ : INHERITED(localMatrix)
, fColor(color) {
this->initClassID<QuadEdgeEffect>();
fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertexAttribType));
const Attribute* inLocalCoords() const { return fInLocalCoords; }
const Attribute* inCoverage() const { return fInCoverage; }
GrColor color() const { return fColor; }
+ const SkMatrix& viewMatrix() const { return fViewMatrix; }
uint8_t coverage() const { return fCoverage; }
void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override {
uint32_t key = def.fFlags;
key |= local.fInputColorType << 8 | local.fInputCoverageType << 16;
key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x1 << 24 : 0x0;
- key |= ComputePosKey(gp.viewMatrix()) << 25;
+ key |= ComputePosKey(def.viewMatrix()) << 25;
b->add32(key);
}
virtual void setData(const GrGLProgramDataManager& pdman,
const GrPrimitiveProcessor& gp,
const GrBatchTracker& bt) override {
- this->setUniformViewMatrix(pdman, gp.viewMatrix());
+ const DefaultGeoProc& dgp = gp.cast<DefaultGeoProc>();
+ this->setUniformViewMatrix(pdman, dgp.viewMatrix());
const BatchTracker& local = bt.cast<BatchTracker>();
if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) {
const SkMatrix& viewMatrix,
const SkMatrix& localMatrix,
uint8_t coverage)
- : INHERITED(viewMatrix, localMatrix)
+ : INHERITED(localMatrix)
, fInPosition(NULL)
, fInColor(NULL)
, fInLocalCoords(NULL)
, fInCoverage(NULL)
, fColor(color)
+ , fViewMatrix(viewMatrix)
, fCoverage(coverage)
, fFlags(gpTypeFlags) {
this->initClassID<DefaultGeoProc>();
const Attribute* fInLocalCoords;
const Attribute* fInCoverage;
GrColor fColor;
+ SkMatrix fViewMatrix;
uint8_t fCoverage;
uint32_t fFlags;
*/
class GrGeometryProcessor : public GrPrimitiveProcessor {
public:
- GrGeometryProcessor(const SkMatrix& viewMatrix = SkMatrix::I(),
- const SkMatrix& localMatrix = SkMatrix::I())
- : INHERITED(viewMatrix, localMatrix, false)
+ GrGeometryProcessor(const SkMatrix& localMatrix = SkMatrix::I())
+ : INHERITED(localMatrix, false)
, fWillUseGeoShader(false)
, fHasLocalCoords(false) {}
&fColorUniform);
// Setup position
- this->setupPosition(pb, gpArgs, ce.inPosition()->fName, ce.viewMatrix());
+ this->setupPosition(pb, gpArgs, ce.inPosition()->fName);
// emit transforms
this->emitTransforms(args.fPB, gpArgs->fPositionVar, ce.inPosition()->fName,
const CircleEdgeEffect& circleEffect = gp.cast<CircleEdgeEffect>();
uint16_t key = circleEffect.isStroked() ? 0x1 : 0x0;
key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x2 : 0x0;
- key |= ComputePosKey(gp.viewMatrix()) << 2;
b->add32(key << 16 | local.fInputColorType);
}
virtual void setData(const GrGLProgramDataManager& pdman,
const GrPrimitiveProcessor& gp,
const GrBatchTracker& bt) override {
- this->setUniformViewMatrix(pdman, gp.viewMatrix());
-
const BatchTracker& local = bt.cast<BatchTracker>();
if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) {
GrGLfloat c[4];
private:
CircleEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix)
- : INHERITED(SkMatrix::I(), localMatrix)
+ : INHERITED(localMatrix)
, fColor(color) {
this->initClassID<CircleEdgeEffect>();
fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertexAttribType));
&fColorUniform);
// Setup position
- this->setupPosition(pb, gpArgs, ee.inPosition()->fName, ee.viewMatrix());
+ this->setupPosition(pb, gpArgs, ee.inPosition()->fName);
// emit transforms
this->emitTransforms(args.fPB, gpArgs->fPositionVar, ee.inPosition()->fName,
const EllipseEdgeEffect& ellipseEffect = gp.cast<EllipseEdgeEffect>();
uint16_t key = ellipseEffect.isStroked() ? 0x1 : 0x0;
key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x2 : 0x0;
- key |= ComputePosKey(gp.viewMatrix()) << 2;
b->add32(key << 16 | local.fInputColorType);
}
virtual void setData(const GrGLProgramDataManager& pdman,
const GrPrimitiveProcessor& gp,
const GrBatchTracker& bt) override {
- this->setUniformViewMatrix(pdman, gp.viewMatrix());
const BatchTracker& local = bt.cast<BatchTracker>();
if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) {
private:
EllipseEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix)
- : INHERITED(SkMatrix::I(), localMatrix)
+ : INHERITED(localMatrix)
, fColor(color) {
this->initClassID<EllipseEdgeEffect>();
fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertexAttribType));
const Attribute* inEllipseOffsets0() const { return fInEllipseOffsets0; }
const Attribute* inEllipseOffsets1() const { return fInEllipseOffsets1; }
GrColor color() const { return fColor; }
+ const SkMatrix& viewMatrix() const { return fViewMatrix; }
inline Mode getMode() const { return fMode; }
const DIEllipseEdgeEffect& ellipseEffect = gp.cast<DIEllipseEdgeEffect>();
uint16_t key = ellipseEffect.getMode();
key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x1 << 8 : 0x0;
- key |= ComputePosKey(gp.viewMatrix()) << 9;
+ key |= ComputePosKey(ellipseEffect.viewMatrix()) << 9;
b->add32(key << 16 | local.fInputColorType);
}
virtual void setData(const GrGLProgramDataManager& pdman,
const GrPrimitiveProcessor& gp,
const GrBatchTracker& bt) override {
- this->setUniformViewMatrix(pdman, gp.viewMatrix());
+ const DIEllipseEdgeEffect& dee = gp.cast<DIEllipseEdgeEffect>();
+ this->setUniformViewMatrix(pdman, dee.viewMatrix());
const BatchTracker& local = bt.cast<BatchTracker>();
if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) {
private:
DIEllipseEdgeEffect(GrColor color, const SkMatrix& viewMatrix, Mode mode)
- : INHERITED(viewMatrix)
- , fColor(color) {
+ : fColor(color)
+ , fViewMatrix(viewMatrix) {
this->initClassID<DIEllipseEdgeEffect>();
fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertexAttribType));
fInEllipseOffsets0 = &this->addVertexAttrib(Attribute("inEllipseOffsets0",
const Attribute* fInEllipseOffsets0;
const Attribute* fInEllipseOffsets1;
GrColor fColor;
+ SkMatrix fViewMatrix;
Mode fMode;
GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
GrPathProcessor::GrPathProcessor(GrColor color,
const SkMatrix& viewMatrix,
const SkMatrix& localMatrix)
- : INHERITED(viewMatrix, localMatrix, true)
+ : INHERITED(localMatrix, true)
+ , fViewMatrix(viewMatrix)
, fColor(color) {
this->initClassID<GrPathProcessor>();
}
return false;
}
- if (!this->viewMatrix().cheapEqualTo(that.viewMatrix())) {
+ const GrPathProcessor& other = that.cast<GrPathProcessor>();
+ if (!this->viewMatrix().cheapEqualTo(other.viewMatrix())) {
return false;
}
const char* name() const override { return "PathProcessor"; }
+ const SkMatrix& viewMatrix() const { return fViewMatrix; }
GrColor color() const { return fColor; }
void getInvariantOutputColor(GrInitInvariantOutput* out) const override;
virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt,
const GrGLSLCaps& caps) const override;
-protected:
- GrPathProcessor(GrColor color, const SkMatrix& viewMatrix, const SkMatrix& localMatrix);
-
private:
+ GrPathProcessor(GrColor color, const SkMatrix& viewMatrix, const SkMatrix& localMatrix);
bool hasExplicitLocalCoords() const override { return false; }
+ const SkMatrix fViewMatrix;
GrColor fColor;
typedef GrPrimitiveProcessor INHERITED;
public:
// TODO let the PrimProc itself set this in its setData call, this should really live on the
// bundle of primitive data
- const SkMatrix& viewMatrix() const { return fViewMatrix; }
const SkMatrix& localMatrix() const { return fLocalMatrix; }
virtual void initBatchTracker(GrBatchTracker*, const GrPipelineInfo&) const = 0;
bool isPathRendering() const { return fIsPathRendering; }
protected:
- GrPrimitiveProcessor(const SkMatrix& viewMatrix, const SkMatrix& localMatrix,
- bool isPathRendering)
+ GrPrimitiveProcessor(const SkMatrix& localMatrix, bool isPathRendering)
: fNumAttribs(0)
, fVertexStride(0)
- , fViewMatrix(viewMatrix)
, fLocalMatrix(localMatrix)
, fIsPathRendering(isPathRendering) {}
private:
virtual bool hasExplicitLocalCoords() const = 0;
- const SkMatrix fViewMatrix;
SkMatrix fLocalMatrix;
bool fIsPathRendering;
virtual void setData(const GrGLProgramDataManager& pdman,
const GrPrimitiveProcessor& primProc,
const GrBatchTracker& bt) override {
- this->setUniformViewMatrix(pdman, primProc.viewMatrix());
+ const GrConicEffect& ce = primProc.cast<GrConicEffect>();
+ this->setUniformViewMatrix(pdman, ce.viewMatrix());
const ConicBatchTracker& local = bt.cast<ConicBatchTracker>();
if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) {
key |= kUniform_GrGPInput == local.fInputColorType ? 0x4 : 0x0;
key |= 0xff != local.fCoverageScale ? 0x8 : 0x0;
key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x10 : 0x0;
- key |= ComputePosKey(gp.viewMatrix()) << 5;
+ key |= ComputePosKey(ce.viewMatrix()) << 5;
b->add32(key);
}
GrConicEffect::GrConicEffect(GrColor color, const SkMatrix& viewMatrix, uint8_t coverage,
GrPrimitiveEdgeType edgeType, const SkMatrix& localMatrix)
- : INHERITED(viewMatrix, localMatrix)
+ : INHERITED(localMatrix)
, fColor(color)
+ , fViewMatrix(viewMatrix)
, fCoverageScale(coverage)
, fEdgeType(edgeType) {
this->initClassID<GrConicEffect>();
virtual void setData(const GrGLProgramDataManager& pdman,
const GrPrimitiveProcessor& primProc,
const GrBatchTracker& bt) override {
- this->setUniformViewMatrix(pdman, primProc.viewMatrix());
+ const GrQuadEffect& qe = primProc.cast<GrQuadEffect>();
+ this->setUniformViewMatrix(pdman, qe.viewMatrix());
const QuadBatchTracker& local = bt.cast<QuadBatchTracker>();
if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) {
key |= kUniform_GrGPInput == local.fInputColorType ? 0x4 : 0x0;
key |= 0xff != local.fCoverageScale ? 0x8 : 0x0;
key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x10 : 0x0;
- key |= ComputePosKey(gp.viewMatrix()) << 5;
+ key |= ComputePosKey(ce.viewMatrix()) << 5;
b->add32(key);
}
GrQuadEffect::GrQuadEffect(GrColor color, const SkMatrix& viewMatrix, uint8_t coverage,
GrPrimitiveEdgeType edgeType, const SkMatrix& localMatrix)
- : INHERITED(viewMatrix, localMatrix)
+ : INHERITED(localMatrix)
, fColor(color)
+ , fViewMatrix(viewMatrix)
, fCoverageScale(coverage)
, fEdgeType(edgeType) {
this->initClassID<GrQuadEffect>();
virtual void setData(const GrGLProgramDataManager& pdman,
const GrPrimitiveProcessor& primProc,
const GrBatchTracker& bt) override {
- this->setUniformViewMatrix(pdman, primProc.viewMatrix());
+ const GrCubicEffect& ce = primProc.cast<GrCubicEffect>();
+ this->setUniformViewMatrix(pdman, ce.viewMatrix());
const CubicBatchTracker& local = bt.cast<CubicBatchTracker>();
if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) {
uint32_t key = ce.isAntiAliased() ? (ce.isFilled() ? 0x0 : 0x1) : 0x2;
key |= kUniform_GrGPInput == local.fInputColorType ? 0x4 : 0x8;
key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x10 : 0x0;
- key |= ComputePosKey(gp.viewMatrix()) << 5;
+ key |= ComputePosKey(ce.viewMatrix()) << 5;
b->add32(key);
}
GrCubicEffect::GrCubicEffect(GrColor color, const SkMatrix& viewMatrix,
GrPrimitiveEdgeType edgeType)
- : INHERITED(viewMatrix)
- , fColor(color)
+ : fColor(color)
+ , fViewMatrix(viewMatrix)
, fEdgeType(edgeType) {
this->initClassID<GrCubicEffect>();
fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertexAttribType));
inline bool isFilled() const { return GrProcessorEdgeTypeIsFill(fEdgeType); }
inline GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; }
GrColor color() const { return fColor; }
+ const SkMatrix& viewMatrix() const { return fViewMatrix; }
virtual void getGLProcessorKey(const GrBatchTracker& bt,
const GrGLSLCaps& caps,
const SkMatrix& localMatrix);
GrColor fColor;
+ SkMatrix fViewMatrix;
uint8_t fCoverageScale;
GrPrimitiveEdgeType fEdgeType;
const Attribute* fInPosition;
inline bool isFilled() const { return GrProcessorEdgeTypeIsFill(fEdgeType); }
inline GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; }
GrColor color() const { return fColor; }
+ const SkMatrix& viewMatrix() const { return fViewMatrix; }
virtual void getGLProcessorKey(const GrBatchTracker& bt,
const GrGLSLCaps& caps,
const SkMatrix& localMatrix);
GrColor fColor;
+ SkMatrix fViewMatrix;
uint8_t fCoverageScale;
GrPrimitiveEdgeType fEdgeType;
const Attribute* fInPosition;
inline bool isFilled() const { return GrProcessorEdgeTypeIsFill(fEdgeType); }
inline GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; }
GrColor color() const { return fColor; }
+ const SkMatrix& viewMatrix() const { return fViewMatrix; }
virtual void getGLProcessorKey(const GrBatchTracker& bt,
const GrGLSLCaps& caps,
GrCubicEffect(GrColor, const SkMatrix& viewMatrix, GrPrimitiveEdgeType);
GrColor fColor;
+ SkMatrix fViewMatrix;
GrPrimitiveEdgeType fEdgeType;
const Attribute* fInPosition;
const Attribute* fInCubicCoeffs;
&fColorUniform);
// Setup position
- this->setupPosition(pb, gpArgs, cte.inPosition()->fName, cte.viewMatrix());
+ this->setupPosition(pb, gpArgs, cte.inPosition()->fName);
// emit transforms
this->emitTransforms(args.fPB, gpArgs->fPositionVar, cte.inPosition()->fName,
virtual void setData(const GrGLProgramDataManager& pdman,
const GrPrimitiveProcessor& gp,
const GrBatchTracker& bt) override {
- this->setUniformViewMatrix(pdman, gp.viewMatrix());
-
const BitmapTextBatchTracker& local = bt.cast<BitmapTextBatchTracker>();
if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) {
GrGLfloat c[4];
key |= SkToBool(gp.inColor()) ? 0x1 : 0x0;
key |= local.fUsesLocalCoords && proc.localMatrix().hasPerspective() ? 0x2 : 0x0;
key |= gp.maskFormat() == kARGB_GrMaskFormat ? 0x4 : 0x0;
- key |= ComputePosKey(gp.viewMatrix()) << 3;
b->add32(local.fInputColorType << 16 | key);
}
GrBitmapTextGeoProc::GrBitmapTextGeoProc(GrColor color, GrTexture* texture,
const GrTextureParams& params, GrMaskFormat format,
const SkMatrix& localMatrix)
- : INHERITED(SkMatrix::I(), localMatrix)
+ : INHERITED(localMatrix)
, fColor(color)
, fTextureAccess(texture, params)
, fInColor(NULL)
this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor, NULL, &fColorUniform);
// Setup position
- this->setupPosition(pb, gpArgs, dce.inPosition()->fName, dce.viewMatrix());
+ this->setupPosition(pb, gpArgs, dce.inPosition()->fName);
// emit transforms
this->emitTransforms(args.fPB, gpArgs->fPositionVar, dce.inPosition()->fName, dce.localMatrix(),
void GLDashingCircleEffect::setData(const GrGLProgramDataManager& pdman,
const GrPrimitiveProcessor& processor,
const GrBatchTracker& bt) {
- this->setUniformViewMatrix(pdman, processor.viewMatrix());
-
const DashingCircleBatchTracker& local = bt.cast<DashingCircleBatchTracker>();
if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) {
GrGLfloat c[4];
const DashingCircleEffect& dce = gp.cast<DashingCircleEffect>();
uint32_t key = 0;
key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x1 : 0x0;
- key |= ComputePosKey(gp.viewMatrix()) << 1;
key |= dce.aaMode() << 8;
b->add32(key << 16 | local.fInputColorType);
}
DashingCircleEffect::DashingCircleEffect(GrColor color,
DashAAMode aaMode,
const SkMatrix& localMatrix)
- : INHERITED(SkMatrix::I(), localMatrix)
+ : INHERITED(localMatrix)
, fColor(color)
, fAAMode(aaMode) {
this->initClassID<DashingCircleEffect>();
this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor, NULL, &fColorUniform);
// Setup position
- this->setupPosition(pb, gpArgs, de.inPosition()->fName, de.viewMatrix());
+ this->setupPosition(pb, gpArgs, de.inPosition()->fName);
// emit transforms
this->emitTransforms(args.fPB, gpArgs->fPositionVar, de.inPosition()->fName, de.localMatrix(),
void GLDashingLineEffect::setData(const GrGLProgramDataManager& pdman,
const GrPrimitiveProcessor& processor,
const GrBatchTracker& bt) {
- this->setUniformViewMatrix(pdman, processor.viewMatrix());
-
const DashingLineBatchTracker& local = bt.cast<DashingLineBatchTracker>();
if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) {
GrGLfloat c[4];
const DashingLineEffect& de = gp.cast<DashingLineEffect>();
uint32_t key = 0;
key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x1 : 0x0;
- key |= ComputePosKey(gp.viewMatrix()) << 1;
key |= de.aaMode() << 8;
b->add32(key << 16 | local.fInputColorType);
}
DashingLineEffect::DashingLineEffect(GrColor color,
DashAAMode aaMode,
const SkMatrix& localMatrix)
- : INHERITED(SkMatrix::I(), localMatrix)
+ : INHERITED(localMatrix)
, fColor(color)
, fAAMode(aaMode) {
this->initClassID<DashingLineEffect>();
}
#endif
- this->setUniformViewMatrix(pdman, proc.viewMatrix());
+ const GrDistanceFieldA8TextGeoProc& dfa8gp = proc.cast<GrDistanceFieldA8TextGeoProc>();
+ this->setUniformViewMatrix(pdman, dfa8gp.viewMatrix());
const DistanceFieldBatchTracker& local = bt.cast<DistanceFieldBatchTracker>();
if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) {
uint32_t key = dfTexEffect.getFlags();
key |= local.fInputColorType << 16;
key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x1 << 24: 0x0;
- key |= ComputePosKey(gp.viewMatrix()) << 25;
+ key |= ComputePosKey(dfTexEffect.viewMatrix()) << 25;
b->add32(key);
}
float distanceAdjust,
#endif
uint32_t flags)
- : INHERITED(viewMatrix, SkMatrix::I())
+ : INHERITED(SkMatrix::I())
, fColor(color)
+ , fViewMatrix(viewMatrix)
, fTextureAccess(texture, params)
#ifdef SK_GAMMA_APPLY_TO_A8
, fDistanceAdjust(distanceAdjust)
SkIntToScalar(fTextureSize.height()));
}
- this->setUniformViewMatrix(pdman, proc.viewMatrix());
+ const GrDistanceFieldPathGeoProc& dfpgp = proc.cast<GrDistanceFieldPathGeoProc>();
+ this->setUniformViewMatrix(pdman, dfpgp.viewMatrix());
const DistanceFieldPathBatchTracker& local = bt.cast<DistanceFieldPathBatchTracker>();
if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) {
uint32_t key = dfTexEffect.getFlags();
key |= local.fInputColorType << 16;
key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x1 << 24: 0x0;
- key |= ComputePosKey(gp.viewMatrix()) << 25;
+ key |= ComputePosKey(dfTexEffect.viewMatrix()) << 25;
b->add32(key);
}
GrTexture* texture,
const GrTextureParams& params,
uint32_t flags)
- : INHERITED(viewMatrix, SkMatrix::I())
+ : INHERITED(SkMatrix::I())
, fColor(color)
+ , fViewMatrix(viewMatrix)
, fTextureAccess(texture, params)
, fFlags(flags & kNonLCD_DistanceFieldEffectMask)
, fInColor(NULL) {
fDistanceAdjust = wa;
}
- this->setUniformViewMatrix(pdman, processor.viewMatrix());
+ this->setUniformViewMatrix(pdman, dfTexEffect.viewMatrix());
const DistanceFieldLCDBatchTracker& local = bt.cast<DistanceFieldLCDBatchTracker>();
if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) {
uint32_t key = dfTexEffect.getFlags();
key |= local.fInputColorType << 16;
key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x1 << 24: 0x0;
- key |= ComputePosKey(gp.viewMatrix()) << 25;
+ key |= ComputePosKey(dfTexEffect.viewMatrix()) << 25;
b->add32(key);
}
GrTexture* texture, const GrTextureParams& params,
DistanceAdjust distanceAdjust,
uint32_t flags)
- : INHERITED(viewMatrix, SkMatrix::I())
+ : INHERITED(SkMatrix::I())
, fColor(color)
+ , fViewMatrix(viewMatrix)
, fTextureAccess(texture, params)
, fDistanceAdjust(distanceAdjust)
, fFlags(flags & kLCD_DistanceFieldEffectMask){
const Attribute* inColor() const { return fInColor; }
const Attribute* inTextureCoords() const { return fInTextureCoords; }
GrColor color() const { return fColor; }
+ const SkMatrix& viewMatrix() const { return fViewMatrix; }
#ifdef SK_GAMMA_APPLY_TO_A8
float getDistanceAdjust() const { return fDistanceAdjust; }
#endif
uint32_t flags);
GrColor fColor;
+ SkMatrix fViewMatrix;
GrTextureAccess fTextureAccess;
#ifdef SK_GAMMA_APPLY_TO_A8
float fDistanceAdjust;
const Attribute* inColor() const { return fInColor; }
const Attribute* inTextureCoords() const { return fInTextureCoords; }
GrColor color() const { return fColor; }
+ const SkMatrix& viewMatrix() const { return fViewMatrix; }
uint32_t getFlags() const { return fFlags; }
virtual void getGLProcessorKey(const GrBatchTracker& bt,
const GrTextureParams& params, uint32_t flags);
GrColor fColor;
+ SkMatrix fViewMatrix;
GrTextureAccess fTextureAccess;
uint32_t fFlags;
const Attribute* fInPosition;
const Attribute* inTextureCoords() const { return fInTextureCoords; }
DistanceAdjust getDistanceAdjust() const { return fDistanceAdjust; }
GrColor color() const { return fColor; }
+ const SkMatrix& viewMatrix() const { return fViewMatrix; }
uint32_t getFlags() const { return fFlags; }
virtual void getGLProcessorKey(const GrBatchTracker& bt,
DistanceAdjust wa, uint32_t flags);
GrColor fColor;
+ SkMatrix fViewMatrix;
GrTextureAccess fTextureAccess;
DistanceAdjust fDistanceAdjust;
uint32_t fFlags;
void setupPosition(GrGLGPBuilder* pb,
GrGPArgs* gpArgs,
const char* posName,
- const SkMatrix& mat);
+ const SkMatrix& mat = SkMatrix::I());
static uint32_t ComputePosKey(const SkMatrix& mat) {
if (mat.isIdentity()) {
const GrRenderTarget* rt = pipeline.getRenderTarget();
SkISize size;
size.set(rt->width(), rt->height());
- fGpu->glPathRendering()->setProjectionMatrix(primProc.viewMatrix(),
+ const GrPathProcessor& pathProc = primProc.cast<GrPathProcessor>();
+ fGpu->glPathRendering()->setProjectionMatrix(pathProc.viewMatrix(),
size, rt->origin());
}