Index: src/gpu/GrGeometryProcessor.h |
diff --git a/src/gpu/GrGeometryProcessor.h b/src/gpu/GrGeometryProcessor.h |
index ea4e890ee1a424a71adf36a6ebf6af133e9cebbd..0cb996e7abd8c480ef18817045729872d3a88f98 100644 |
--- a/src/gpu/GrGeometryProcessor.h |
+++ b/src/gpu/GrGeometryProcessor.h |
@@ -22,7 +22,8 @@ public: |
GrGeometryProcessor() |
: INHERITED(false) |
, fWillUseGeoShader(false) |
- , fHasLocalCoords(false) {} |
+ , fHasExplicitLocalCoords(false) |
+ , fHasTransformedLocalCoords(false) {} |
bool willUseGeoShader() const override { return fWillUseGeoShader; } |
@@ -45,6 +46,10 @@ public: |
SkFAIL("Unsupported\n"); |
} |
+ bool hasTransformedLocalCoords() const override { return fHasTransformedLocalCoords; } |
bsalomon
2015/08/05 15:17:02
should we be using enums rather than a set of bool
|
+ |
+ bool hasExplicitLocalCoords() const override { return fHasExplicitLocalCoords; } |
+ |
protected: |
/** |
* Subclasses call this from their constructor to register vertex attributes. Attributes |
@@ -64,14 +69,26 @@ protected: |
void setWillUseGeoShader() { fWillUseGeoShader = true; } |
- // TODO hack see above |
- void setHasLocalCoords() { fHasLocalCoords = true; } |
+ /** |
+ * If a GrFragmentProcessor in the GrPipeline needs localCoods, we will provide them in one of |
+ * three ways |
+ * 1) LocalCoordTransform * Position - in Shader |
+ * 2) LocalCoordTransform * ExplicitLocalCoords- in Shader |
+ * 3) A transformation on the CPU uploaded via vertex attribute |
+ */ |
+ void setHasExplicitLocalCoords() { |
+ SkASSERT(!fHasTransformedLocalCoords); |
+ fHasExplicitLocalCoords = true; |
+ } |
+ void setHasTransformedLocalCoords() { |
+ SkASSERT(!fHasExplicitLocalCoords); |
+ fHasTransformedLocalCoords = true; |
+ } |
private: |
- bool hasExplicitLocalCoords() const override { return fHasLocalCoords; } |
- |
bool fWillUseGeoShader; |
- bool fHasLocalCoords; |
+ bool fHasExplicitLocalCoords; |
+ bool fHasTransformedLocalCoords; |
typedef GrPrimitiveProcessor INHERITED; |
}; |