| Index: src/gpu/GrGeometryProcessor.h
|
| diff --git a/src/gpu/GrGeometryProcessor.h b/src/gpu/GrGeometryProcessor.h
|
| index 17344d2bb4c251df6469aff20512bb4ba98fdf13..27383a4df49df6dd3e618f24f72fed5a5e745a1d 100644
|
| --- a/src/gpu/GrGeometryProcessor.h
|
| +++ b/src/gpu/GrGeometryProcessor.h
|
| @@ -12,6 +12,30 @@
|
| #include "GrProcessor.h"
|
| #include "GrShaderVar.h"
|
|
|
| +/*
|
| + * A struct for tracking batching decisions. While this lives on GrOptState, it is managed
|
| + * entirely by the derived classes of the GP.
|
| + */
|
| +class GrBatchTracker {
|
| +public:
|
| + template <typename T> const T& cast() const {
|
| + SkASSERT(sizeof(T) <= kMaxSize);
|
| + return *reinterpret_cast<const T*>(fData);
|
| + }
|
| +
|
| + template <typename T> T* cast() {
|
| + SkASSERT(sizeof(T) <= kMaxSize);
|
| + return reinterpret_cast<T*>(fData);
|
| + }
|
| +
|
| + static const size_t kMaxSize = 32;
|
| +
|
| +private:
|
| + uint8_t fData[kMaxSize];
|
| +};
|
| +
|
| +class GrOptDrawState;
|
| +
|
| /**
|
| * A GrGeometryProcessor is used to perform computation in the vertex shader and
|
| * add support for custom vertex attributes. A GrGemeotryProcessor is typically
|
| @@ -73,6 +97,15 @@ public:
|
| return this->onIsEqual(that);
|
| }
|
|
|
| + struct InitBT {
|
| + bool fOutputColor;
|
| + bool fOutputCoverage;
|
| + GrColor fColor;
|
| + GrColor fCoverage;
|
| + };
|
| +
|
| + virtual void initBatchTracker(GrBatchTracker*, const InitBT&) const {}
|
| +
|
| // TODO this is a total hack until the gp can own whether or not it uses uniform
|
| // color / coverage
|
| bool hasVertexColor() const { return fHasVertexColor; }
|
|
|