| Index: src/gpu/gl/GrGLPathProcessor.h
|
| diff --git a/src/gpu/gl/GrGLPathProcessor.h b/src/gpu/gl/GrGLPathProcessor.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..368f1f9fcdf611eb0da0ab62fc75b9b8d043f879
|
| --- /dev/null
|
| +++ b/src/gpu/gl/GrGLPathProcessor.h
|
| @@ -0,0 +1,113 @@
|
| +/*
|
| + * Copyright 2013 Google Inc.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license that can be
|
| + * found in the LICENSE file.
|
| + */
|
| +
|
| +#ifndef GrGLPathProcessor_DEFINED
|
| +#define GrGLPathProcessor_DEFINED
|
| +
|
| +#include "GrGLPrimitiveProcessor.h"
|
| +
|
| +class GrPathProcessor;
|
| +class GrGLPathRendering;
|
| +class GrGLGpu;
|
| +
|
| +class GrGLPathProcessor : public GrGLPrimitiveProcessor {
|
| +public:
|
| + GrGLPathProcessor(const GrPathProcessor&, const GrBatchTracker&);
|
| +
|
| + static void GenKey(const GrPathProcessor&,
|
| + const GrBatchTracker& bt,
|
| + const GrGLCaps&,
|
| + GrProcessorKeyBuilder* b);
|
| +
|
| + void emitCode(EmitArgs&) SK_OVERRIDE;
|
| +
|
| + virtual void emitTransforms(GrGLGPBuilder*, const TransformsIn&, TransformsOut*) = 0;
|
| +
|
| + virtual void resolveSeparableVaryings(GrGLGpu* gpu, GrGLuint programId) {}
|
| +
|
| + void setData(const GrGLProgramDataManager&,
|
| + const GrPrimitiveProcessor&,
|
| + const GrBatchTracker&) SK_OVERRIDE;
|
| +
|
| + virtual void setTransformData(const GrPrimitiveProcessor&,
|
| + int index,
|
| + const SkTArray<const GrCoordTransform*, true>& transforms,
|
| + GrGLPathRendering*,
|
| + GrGLuint programID) = 0;
|
| +
|
| + virtual void didSetData(GrGLPathRendering*) {}
|
| +
|
| +private:
|
| + UniformHandle fColorUniform;
|
| + GrColor fColor;
|
| +
|
| + typedef GrGLPrimitiveProcessor INHERITED;
|
| +};
|
| +
|
| +class GrGLLegacyPathProcessor : public GrGLPathProcessor {
|
| +public:
|
| + GrGLLegacyPathProcessor(const GrPathProcessor& pathProc, const GrBatchTracker& bt,
|
| + int maxTexCoords)
|
| + : INHERITED(pathProc, bt)
|
| + , fTexCoordSetCnt(0) {
|
| + SkDEBUGCODE(fMaxTexCoords = maxTexCoords;)
|
| + }
|
| +
|
| + int addTexCoordSets(int count) {
|
| + int firstFreeCoordSet = fTexCoordSetCnt;
|
| + fTexCoordSetCnt += count;
|
| + SkASSERT(fMaxTexCoords >= fTexCoordSetCnt);
|
| + return firstFreeCoordSet;
|
| + }
|
| +
|
| + void emitTransforms(GrGLGPBuilder*, const TransformsIn& tin, TransformsOut* tout) SK_OVERRIDE;
|
| +
|
| + void setTransformData(const GrPrimitiveProcessor& primProc,
|
| + int index,
|
| + const SkTArray<const GrCoordTransform*, true>& transforms,
|
| + GrGLPathRendering* glpr,
|
| + GrGLuint) SK_OVERRIDE;
|
| +
|
| + void didSetData(GrGLPathRendering* glpr) SK_OVERRIDE;
|
| +
|
| +private:
|
| + SkDEBUGCODE(int fMaxTexCoords;)
|
| + int fTexCoordSetCnt;
|
| +
|
| + typedef GrGLPathProcessor INHERITED;
|
| +};
|
| +
|
| +class GrGLNormalPathProcessor : public GrGLPathProcessor {
|
| +public:
|
| + GrGLNormalPathProcessor(const GrPathProcessor& pathProc, const GrBatchTracker& bt)
|
| + : INHERITED(pathProc, bt) {}
|
| +
|
| + void emitTransforms(GrGLGPBuilder* pb, const TransformsIn& tin,TransformsOut* tout) SK_OVERRIDE;
|
| +
|
| + void resolveSeparableVaryings(GrGLGpu* gpu, GrGLuint programId);
|
| +
|
| + void setTransformData(const GrPrimitiveProcessor& primProc,
|
| + int index,
|
| + const SkTArray<const GrCoordTransform*, true>& coordTransforms,
|
| + GrGLPathRendering* glpr,
|
| + GrGLuint programID) SK_OVERRIDE;
|
| +
|
| +private:
|
| + struct SeparableVaryingInfo {
|
| + GrSLType fType;
|
| + GrGLShaderVar fVariable;
|
| + GrGLint fLocation;
|
| + };
|
| +
|
| + typedef SkSTArray<8, SeparableVaryingInfo, true> SeparableVaryingInfoArray;
|
| +
|
| + SeparableVaryingInfoArray fSeparableVaryingInfos;
|
| +
|
| + typedef GrGLPathProcessor INHERITED;
|
| +};
|
| +
|
| +#endif
|
|
|