return &fGeometry;
}
+ const Geometry* geoData(int index) const override {
+ SkASSERT(0 == index);
+ return &fGeometry;
+ }
+
void onGenerateGeometry(GrBatchTarget* batchTarget, const GrPipeline* pipeline) override {
QuadHelper helper;
size_t vertexStride = this->geometryProcessor()->getVertexStride();
SkScalar h = SkIntToScalar(rt->height()) / numRows;
int row = 0;
int col = 0;
+ static const GrColor color = 0xff000000;
for (int i = 0; i < kNumCubics; ++i) {
SkPoint baseControlPts[] = {
continue;
}
GrPrimitiveEdgeType et = (GrPrimitiveEdgeType)edgeType;
- gp.reset(GrCubicEffect::Create(0xff000000, SkMatrix::I(), et,
+ gp.reset(GrCubicEffect::Create(color, SkMatrix::I(), et,
*tt.target()->caps()));
if (!gp) {
continue;
pipelineBuilder.setRenderTarget(rt);
BezierCubicOrConicTestBatch::Geometry geometry;
- geometry.fColor = gp->color();
+ geometry.fColor = color;
geometry.fBounds = bounds;
SkAutoTUnref<GrBatch> batch(
SkScalar h = SkIntToScalar(rt->height()) / numRows;
int row = 0;
int col = 0;
+ static const GrColor color = 0xff000000;
for (int i = 0; i < kNumConics; ++i) {
SkPoint baseControlPts[] = {
continue;
}
GrPrimitiveEdgeType et = (GrPrimitiveEdgeType)edgeType;
- gp.reset(GrConicEffect::Create(0xff000000, SkMatrix::I(), et,
+ gp.reset(GrConicEffect::Create(color, SkMatrix::I(), et,
*tt.target()->caps(), SkMatrix::I()));
if (!gp) {
continue;
pipelineBuilder.setRenderTarget(rt);
BezierCubicOrConicTestBatch::Geometry geometry;
- geometry.fColor = gp->color();
+ geometry.fColor = color;
geometry.fBounds = bounds;
SkAutoTUnref<GrBatch> batch(
return &fGeometry;
}
+ const Geometry* geoData(int index) const override {
+ SkASSERT(0 == index);
+ return &fGeometry;
+ }
+
void onGenerateGeometry(GrBatchTarget* batchTarget, const GrPipeline* pipeline) override {
QuadHelper helper;
size_t vertexStride = this->geometryProcessor()->getVertexStride();
SkScalar h = SkIntToScalar(rt->height()) / numRows;
int row = 0;
int col = 0;
+ static const GrColor color = 0xff000000;
for (int i = 0; i < kNumQuads; ++i) {
SkPoint baseControlPts[] = {
continue;
}
GrPrimitiveEdgeType et = (GrPrimitiveEdgeType)edgeType;
- gp.reset(GrQuadEffect::Create(0xff000000, SkMatrix::I(), et,
+ gp.reset(GrQuadEffect::Create(color, SkMatrix::I(), et,
*tt.target()->caps(), SkMatrix::I()));
if (!gp) {
continue;
GrPathUtils::QuadUVMatrix DevToUV(pts);
BezierQuadTestBatch::Geometry geometry;
- geometry.fColor = gp->color();
+ geometry.fColor = color;
geometry.fBounds = bounds;
SkAutoTUnref<GrBatch> batch(BezierQuadTestBatch::Create(gp, geometry, DevToUV));
return &fGeometry;
}
+ const Geometry* geoData(int index) const override {
+ SkASSERT(0 == index);
+ return &fGeometry;
+ }
+
void onGenerateGeometry(GrBatchTarget* batchTarget, const GrPipeline* pipeline) override {
size_t vertexStride = this->geometryProcessor()->getVertexStride();
SkASSERT(vertexStride == sizeof(SkPoint));
return;
}
+ static const GrColor color = 0xff000000;
SkAutoTUnref<const GrGeometryProcessor> gp(
- GrDefaultGeoProcFactory::Create(GrDefaultGeoProcFactory::kPosition_GPType,
- 0xff000000));
+ GrDefaultGeoProcFactory::Create(GrDefaultGeoProcFactory::kPosition_GPType, color));
SkScalar y = 0;
for (SkTLList<SkPath>::Iter iter(fPaths, SkTLList<SkPath>::Iter::kHead_IterStart);
pipelineBuilder.setRenderTarget(rt);
ConvexPolyTestBatch::Geometry geometry;
- geometry.fColor = gp->color();
+ geometry.fColor = color;
geometry.fBounds = p.getBounds();
SkAutoTUnref<GrBatch> batch(ConvexPolyTestBatch::Create(gp, geometry));
pipelineBuilder.setRenderTarget(rt);
ConvexPolyTestBatch::Geometry geometry;
- geometry.fColor = gp->color();
+ geometry.fColor = color;
geometry.fBounds = rect;
SkAutoTUnref<GrBatch> batch(ConvexPolyTestBatch::Create(gp, geometry));
const Attribute* inPosition() const { return fInPosition; }
const Attribute* inQuadEdge() const { return fInQuadEdge; }
+ GrColor color() const { return fColor; }
class GLProcessor : public GrGLGeometryProcessor {
public:
private:
QuadEdgeEffect(GrColor color, const SkMatrix& localMatrix)
- : INHERITED(color, SkMatrix::I(), localMatrix) {
+ : INHERITED(SkMatrix::I(), localMatrix)
+ , fColor(color) {
this->initClassID<QuadEdgeEffect>();
fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertexAttribType));
fInQuadEdge = &this->addVertexAttrib(Attribute("inQuadEdge", kVec4f_GrVertexAttribType));
const Attribute* fInPosition;
const Attribute* fInQuadEdge;
+ GrColor fColor;
GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
const Attribute* inColor() const { return fInColor; }
const Attribute* inLocalCoords() const { return fInLocalCoords; }
const Attribute* inCoverage() const { return fInCoverage; }
+ GrColor color() const { return fColor; }
uint8_t coverage() const { return fCoverage; }
void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override {
const SkMatrix& viewMatrix,
const SkMatrix& localMatrix,
uint8_t coverage)
- : INHERITED(color, viewMatrix, localMatrix)
+ : INHERITED(viewMatrix, localMatrix)
, fInPosition(NULL)
, fInColor(NULL)
, fInLocalCoords(NULL)
, fInCoverage(NULL)
+ , fColor(color)
, fCoverage(coverage)
, fFlags(gpTypeFlags) {
this->initClassID<DefaultGeoProc>();
const Attribute* fInColor;
const Attribute* fInLocalCoords;
const Attribute* fInCoverage;
+ GrColor fColor;
uint8_t fCoverage;
uint32_t fFlags;
*/
class GrGeometryProcessor : public GrPrimitiveProcessor {
public:
- // TODO the Hint can be handled in a much more clean way when we have deferred geometry or
- // atleast bundles
- GrGeometryProcessor(GrColor color,
- const SkMatrix& viewMatrix = SkMatrix::I(),
+ GrGeometryProcessor(const SkMatrix& viewMatrix = SkMatrix::I(),
const SkMatrix& localMatrix = SkMatrix::I())
: INHERITED(viewMatrix, localMatrix, false)
- , fColor(color)
, fWillUseGeoShader(false)
, fHasLocalCoords(false) {}
SkFAIL("Unsupported\n");
return false;
}
-
- // TODO we can remove color from the GrGeometryProcessor base class once we have bundles of
- // primitive data
- GrColor color() const { return fColor; }
// TODO Delete when paths are in batch
void getInvariantOutputColor(GrInitInvariantOutput* out) const override {
private:
bool hasExplicitLocalCoords() const override { return fHasLocalCoords; }
- GrColor fColor;
bool fWillUseGeoShader;
bool fHasLocalCoords;
const Attribute* inPosition() const { return fInPosition; }
const Attribute* inCircleEdge() const { return fInCircleEdge; }
+ GrColor color() const { return fColor; }
virtual ~CircleEdgeEffect() {}
const char* name() const override { return "CircleEdge"; }
private:
CircleEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix)
- : INHERITED(color, SkMatrix::I(), localMatrix) {
+ : INHERITED(SkMatrix::I(), localMatrix)
+ , fColor(color) {
this->initClassID<CircleEdgeEffect>();
fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertexAttribType));
fInCircleEdge = &this->addVertexAttrib(Attribute("inCircleEdge",
bool fUsesLocalCoords;
};
+ GrColor fColor;
const Attribute* fInPosition;
const Attribute* fInCircleEdge;
bool fStroke;
const Attribute* inPosition() const { return fInPosition; }
const Attribute* inEllipseOffset() const { return fInEllipseOffset; }
const Attribute* inEllipseRadii() const { return fInEllipseRadii; }
+ GrColor color() const { return fColor; }
inline bool isStroked() const { return fStroke; }
private:
EllipseEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix)
- : INHERITED(color, SkMatrix::I(), localMatrix) {
+ : INHERITED(SkMatrix::I(), localMatrix)
+ , fColor(color) {
this->initClassID<EllipseEdgeEffect>();
fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertexAttribType));
fInEllipseOffset = &this->addVertexAttrib(Attribute("inEllipseOffset",
const Attribute* fInPosition;
const Attribute* fInEllipseOffset;
const Attribute* fInEllipseRadii;
+ GrColor fColor;
bool fStroke;
GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
const Attribute* inPosition() const { return fInPosition; }
const Attribute* inEllipseOffsets0() const { return fInEllipseOffsets0; }
const Attribute* inEllipseOffsets1() const { return fInEllipseOffsets1; }
+ GrColor color() const { return fColor; }
inline Mode getMode() const { return fMode; }
private:
DIEllipseEdgeEffect(GrColor color, const SkMatrix& viewMatrix, Mode mode)
- : INHERITED(color, viewMatrix) {
+ : INHERITED(viewMatrix)
+ , fColor(color) {
this->initClassID<DIEllipseEdgeEffect>();
fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertexAttribType));
fInEllipseOffsets0 = &this->addVertexAttrib(Attribute("inEllipseOffsets0",
const Attribute* fInPosition;
const Attribute* fInEllipseOffsets0;
const Attribute* fInEllipseOffsets1;
+ GrColor fColor;
Mode fMode;
GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
void getInvariantOutputColor(GrInitInvariantOutput* out) const override {
// When this is called on a batch, there is only one geometry bundle
- out->setKnownFourComponents(fGeometryProcessor->color());
+ out->setKnownFourComponents(this->geoData(0)->fColor);
}
void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override {
private:
virtual Geometry* geoData(int index) = 0;
+ virtual const Geometry* geoData(int index) const = 0;
bool onCombineIfPossible(GrBatch* t) override {
return false;
GrConicEffect::GrConicEffect(GrColor color, const SkMatrix& viewMatrix, uint8_t coverage,
GrPrimitiveEdgeType edgeType, const SkMatrix& localMatrix)
- : INHERITED(color, viewMatrix, localMatrix)
+ : INHERITED(viewMatrix, localMatrix)
+ , fColor(color)
, fCoverageScale(coverage)
, fEdgeType(edgeType) {
this->initClassID<GrConicEffect>();
GrQuadEffect::GrQuadEffect(GrColor color, const SkMatrix& viewMatrix, uint8_t coverage,
GrPrimitiveEdgeType edgeType, const SkMatrix& localMatrix)
- : INHERITED(color, viewMatrix, localMatrix)
+ : INHERITED(viewMatrix, localMatrix)
+ , fColor(color)
, fCoverageScale(coverage)
, fEdgeType(edgeType) {
this->initClassID<GrQuadEffect>();
GrCubicEffect::GrCubicEffect(GrColor color, const SkMatrix& viewMatrix,
GrPrimitiveEdgeType edgeType)
- : INHERITED(color, viewMatrix), fEdgeType(edgeType) {
+ : INHERITED(viewMatrix)
+ , fColor(color)
+ , fEdgeType(edgeType) {
this->initClassID<GrCubicEffect>();
fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertexAttribType));
fInCubicCoeffs = &this->addVertexAttrib(Attribute("inCubicCoeffs",
inline bool isAntiAliased() const { return GrProcessorEdgeTypeIsAA(fEdgeType); }
inline bool isFilled() const { return GrProcessorEdgeTypeIsFill(fEdgeType); }
inline GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; }
+ GrColor color() const { return fColor; }
virtual void getGLProcessorKey(const GrBatchTracker& bt,
const GrGLSLCaps& caps,
GrConicEffect(GrColor, const SkMatrix& viewMatrix, uint8_t coverage, GrPrimitiveEdgeType,
const SkMatrix& localMatrix);
- uint8_t fCoverageScale;
- GrPrimitiveEdgeType fEdgeType;
+ GrColor fColor;
+ uint8_t fCoverageScale;
+ GrPrimitiveEdgeType fEdgeType;
const Attribute* fInPosition;
const Attribute* fInConicCoeffs;
inline bool isAntiAliased() const { return GrProcessorEdgeTypeIsAA(fEdgeType); }
inline bool isFilled() const { return GrProcessorEdgeTypeIsFill(fEdgeType); }
inline GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; }
+ GrColor color() const { return fColor; }
virtual void getGLProcessorKey(const GrBatchTracker& bt,
const GrGLSLCaps& caps,
GrQuadEffect(GrColor, const SkMatrix& viewMatrix, uint8_t coverage, GrPrimitiveEdgeType,
const SkMatrix& localMatrix);
- uint8_t fCoverageScale;
- GrPrimitiveEdgeType fEdgeType;
+ GrColor fColor;
+ uint8_t fCoverageScale;
+ GrPrimitiveEdgeType fEdgeType;
const Attribute* fInPosition;
const Attribute* fInHairQuadEdge;
inline bool isAntiAliased() const { return GrProcessorEdgeTypeIsAA(fEdgeType); }
inline bool isFilled() const { return GrProcessorEdgeTypeIsFill(fEdgeType); }
inline GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; }
+ GrColor color() const { return fColor; }
virtual void getGLProcessorKey(const GrBatchTracker& bt,
const GrGLSLCaps& caps,
private:
GrCubicEffect(GrColor, const SkMatrix& viewMatrix, GrPrimitiveEdgeType);
- GrPrimitiveEdgeType fEdgeType;
+ GrColor fColor;
+ GrPrimitiveEdgeType fEdgeType;
const Attribute* fInPosition;
const Attribute* fInCubicCoeffs;
GrBitmapTextGeoProc::GrBitmapTextGeoProc(GrColor color, GrTexture* texture,
const GrTextureParams& params, GrMaskFormat format,
const SkMatrix& localMatrix)
- : INHERITED(color, SkMatrix::I(), localMatrix)
+ : INHERITED(SkMatrix::I(), localMatrix)
+ , fColor(color)
, fTextureAccess(texture, params)
, fInColor(NULL)
, fMaskFormat(format) {
const Attribute* inColor() const { return fInColor; }
const Attribute* inTextureCoords() const { return fInTextureCoords; }
GrMaskFormat maskFormat() const { return fMaskFormat; }
+ GrColor color() const { return fColor; }
virtual void getGLProcessorKey(const GrBatchTracker& bt,
const GrGLSLCaps& caps,
GrBitmapTextGeoProc(GrColor, GrTexture* texture, const GrTextureParams& params,
GrMaskFormat format, const SkMatrix& localMatrix);
+ GrColor fColor;
GrTextureAccess fTextureAccess;
const Attribute* fInPosition;
const Attribute* fInColor;
DashAAMode aaMode() const { return fAAMode; }
+ GrColor color() const { return fColor; }
+
virtual void getGLProcessorKey(const GrBatchTracker&,
const GrGLSLCaps&,
GrProcessorKeyBuilder* b) const override;
private:
DashingCircleEffect(GrColor, DashAAMode aaMode, const SkMatrix& localMatrix);
+ GrColor fColor;
DashAAMode fAAMode;
const Attribute* fInPosition;
const Attribute* fInDashParams;
DashingCircleEffect::DashingCircleEffect(GrColor color,
DashAAMode aaMode,
const SkMatrix& localMatrix)
- : INHERITED(color, SkMatrix::I(), localMatrix), fAAMode(aaMode) {
+ : INHERITED(SkMatrix::I(), localMatrix)
+ , fColor(color)
+ , fAAMode(aaMode) {
this->initClassID<DashingCircleEffect>();
fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertexAttribType));
fInDashParams = &this->addVertexAttrib(Attribute("inDashParams", kVec3f_GrVertexAttribType));
DashAAMode aaMode() const { return fAAMode; }
+ GrColor color() const { return fColor; }
+
virtual void getGLProcessorKey(const GrBatchTracker& bt,
const GrGLSLCaps& caps,
GrProcessorKeyBuilder* b) const override;
private:
DashingLineEffect(GrColor, DashAAMode aaMode, const SkMatrix& localMatrix);
+ GrColor fColor;
DashAAMode fAAMode;
const Attribute* fInPosition;
const Attribute* fInDashParams;
DashingLineEffect::DashingLineEffect(GrColor color,
DashAAMode aaMode,
const SkMatrix& localMatrix)
- : INHERITED(color, SkMatrix::I(), localMatrix), fAAMode(aaMode) {
+ : INHERITED(SkMatrix::I(), localMatrix)
+ , fColor(color)
+ , fAAMode(aaMode) {
this->initClassID<DashingLineEffect>();
fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertexAttribType));
fInDashParams = &this->addVertexAttrib(Attribute("inDashParams", kVec3f_GrVertexAttribType));
float distanceAdjust,
#endif
uint32_t flags)
- : INHERITED(color, viewMatrix, SkMatrix::I())
+ : INHERITED(viewMatrix, SkMatrix::I())
+ , fColor(color)
, fTextureAccess(texture, params)
#ifdef SK_GAMMA_APPLY_TO_A8
, fDistanceAdjust(distanceAdjust)
GrTexture* texture,
const GrTextureParams& params,
uint32_t flags)
- : INHERITED(color, viewMatrix, SkMatrix::I())
+ : INHERITED(viewMatrix, SkMatrix::I())
+ , fColor(color)
, fTextureAccess(texture, params)
, fFlags(flags & kNonLCD_DistanceFieldEffectMask)
, fInColor(NULL) {
GrTexture* texture, const GrTextureParams& params,
DistanceAdjust distanceAdjust,
uint32_t flags)
- : INHERITED(color, viewMatrix, SkMatrix::I())
+ : INHERITED(viewMatrix, SkMatrix::I())
+ , fColor(color)
, fTextureAccess(texture, params)
, fDistanceAdjust(distanceAdjust)
, fFlags(flags & kLCD_DistanceFieldEffectMask){
const Attribute* inPosition() const { return fInPosition; }
const Attribute* inColor() const { return fInColor; }
const Attribute* inTextureCoords() const { return fInTextureCoords; }
+ GrColor color() const { return fColor; }
#ifdef SK_GAMMA_APPLY_TO_A8
float getDistanceAdjust() const { return fDistanceAdjust; }
#endif
#endif
uint32_t flags);
+ GrColor fColor;
GrTextureAccess fTextureAccess;
#ifdef SK_GAMMA_APPLY_TO_A8
float fDistanceAdjust;
const Attribute* inPosition() const { return fInPosition; }
const Attribute* inColor() const { return fInColor; }
const Attribute* inTextureCoords() const { return fInTextureCoords; }
+ GrColor color() const { return fColor; }
uint32_t getFlags() const { return fFlags; }
virtual void getGLProcessorKey(const GrBatchTracker& bt,
GrDistanceFieldPathGeoProc(GrColor, const SkMatrix& viewMatrix, GrTexture* texture,
const GrTextureParams& params, uint32_t flags);
- GrTextureAccess fTextureAccess;
- uint32_t fFlags;
+ GrColor fColor;
+ GrTextureAccess fTextureAccess;
+ uint32_t fFlags;
const Attribute* fInPosition;
const Attribute* fInColor;
const Attribute* fInTextureCoords;
const Attribute* inPosition() const { return fInPosition; }
const Attribute* inTextureCoords() const { return fInTextureCoords; }
DistanceAdjust getDistanceAdjust() const { return fDistanceAdjust; }
+ GrColor color() const { return fColor; }
uint32_t getFlags() const { return fFlags; }
virtual void getGLProcessorKey(const GrBatchTracker& bt,
GrTexture* texture, const GrTextureParams& params,
DistanceAdjust wa, uint32_t flags);
+ GrColor fColor;
GrTextureAccess fTextureAccess;
DistanceAdjust fDistanceAdjust;
uint32_t fFlags;