Index: src/gpu/GrDefaultGeoProcFactory.h |
diff --git a/src/gpu/GrDefaultGeoProcFactory.h b/src/gpu/GrDefaultGeoProcFactory.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..26ce66249a7d8dce1ef3b3d81c8d434d985a572f |
--- /dev/null |
+++ b/src/gpu/GrDefaultGeoProcFactory.h |
@@ -0,0 +1,83 @@ |
+/* |
+ * Copyright 2014 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+#ifndef GrDefaultGeoProcFactory_DEFINED |
+#define GrDefaultGeoProcFactory_DEFINED |
+ |
+#include "GrGeometryProcessor.h" |
+ |
+class GrDrawState; |
+ |
+/* |
+ * A factory for creating default Geometry Processors which simply multiply position by the uniform |
+ * view matrix and wire through color, coverage, UV coords if requested. Right now this is only |
+ * used in the creation of optimized draw states because adding default GPs to the drawstate can |
+ * interfere with batching due to updating the drawstate. |
+ * TODO When we track geometry state separately from the draw state, we should be able use a default |
+ * GP with every draw call |
+ */ |
+class GrDefaultGeoProcFactory { |
+public: |
+ // Structs for adding vertex attributes |
+ struct PositionAttr { |
+ SkPoint fPosition; |
+ }; |
+ |
+ struct PositionCoverageAttr { |
+ SkPoint fPosition; |
+ GrColor fCoverage; |
+ }; |
+ |
+ struct PositionColorAttr { |
+ SkPoint fPosition; |
+ SkColor fColor; |
+ }; |
+ |
+ struct PositionColorCoverageAttr { |
+ SkPoint fPosition; |
+ SkColor fColor; |
+ GrColor fCoverage; |
+ }; |
+ |
+ struct PositionLocalCoordAttr { |
+ SkPoint fPosition; |
+ SkPoint fLocalCoord; |
+ }; |
+ |
+ struct PositionLocalCoordCoverageAttr { |
+ SkPoint fPosition; |
+ SkPoint fLocalCoord; |
+ GrColor fCoverage; |
+ }; |
+ |
+ struct PositionColorLocalCoordAttr { |
+ SkPoint fPosition; |
+ GrColor fColor; |
+ SkPoint fLocalCoord; |
+ }; |
+ |
+ struct PositionColorLocalCoordCoverage { |
+ SkPoint fPosition; |
+ GrColor fColor; |
+ SkPoint fLocalCoord; |
+ GrColor fCoverage; |
+ }; |
+ |
+ enum GPType { |
+ kPosition_GPType = 0x0, // we ALWAYS have position |
+ kColor_GPType = 0x01, |
+ kLocalCoord_GPType = 0x02, |
+ kCoverage_GPType= 0x04, |
+ kLastGPType = kCoverage_GPType |
+ }; |
+ |
+ // YOU MUST UNREF |
+ static const GrGeometryProcessor* CreateAndSetAttribs(GrDrawState*, uint32_t GPTypeFlags); |
+ static const GrGeometryProcessor* Create(); |
+}; |
+ |
+#endif |