Chromium Code Reviews| Index: src/gpu/GrDefaultGeoProcFactory.h |
| diff --git a/src/gpu/GrDefaultGeoProcFactory.h b/src/gpu/GrDefaultGeoProcFactory.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e35a6ecec0c3ca553c3135ac3caf45c0090a6834 |
| --- /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 PositionUVAttr { |
| + SkPoint fPosition; |
| + SkPoint fUV; |
| + }; |
| + |
| + struct PositionUVCoverageAttr { |
| + SkPoint fPosition; |
| + SkPoint fUV; |
| + GrColor fCoverage; |
| + }; |
| + |
| + struct PositionColorUVAttr { |
| + SkPoint fPosition; |
| + GrColor fColor; |
| + SkPoint fUV; |
| + }; |
| + |
| + struct PositionColorUVCoverage { |
| + SkPoint fPosition; |
| + GrColor fColor; |
| + SkPoint fUV; |
| + GrColor fCoverage; |
| + }; |
| + |
| + enum GPType { |
| + kPosition_GPType = 0x0, // we ALWAYS have position |
| + kColor_GPType = 0x01, |
| + kUV_GPType = 0x02, |
|
bsalomon
2014/10/27 13:43:43
Is this local coords? "UV" doesn't seem right to m
|
| + kCoverage_GPType= 0x04, |
| + kLastGPType = kCoverage_GPType |
| + }; |
| + |
| + // YOU MUST UNREF |
| + static const GrGeometryProcessor* CreateAndSetAttribs(GrDrawState*, uint32_t GPTypeFlags); |
| + static const GrGeometryProcessor* Create(); |
| +}; |
| + |
| +#endif |