diff options
author | 2015-01-27 15:39:06 -0800 | |
---|---|---|
committer | 2015-01-27 15:39:06 -0800 | |
commit | d5a7db4a867c7e6ccf8451a053d987b470099198 (patch) | |
tree | fb313f7c8f594e6b27ed2a17bf5d1eba2f34de47 /src/gpu/GrGeometryProcessor.h | |
parent | 95faa61d63a6f62916f6f7be58c4624da8357e3b (diff) |
GrBatchPrototype
BUG=skia:
Committed: https://skia.googlesource.com/skia/+/d15e4e45374275c045572b304c229237c4a82be4
Review URL: https://codereview.chromium.org/845103005
Diffstat (limited to 'src/gpu/GrGeometryProcessor.h')
-rw-r--r-- | src/gpu/GrGeometryProcessor.h | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/src/gpu/GrGeometryProcessor.h b/src/gpu/GrGeometryProcessor.h index c55b9afc79..a7fea765ab 100644 --- a/src/gpu/GrGeometryProcessor.h +++ b/src/gpu/GrGeometryProcessor.h @@ -9,7 +9,6 @@ #define GrGeometryProcessor_DEFINED #include "GrColor.h" -#include "GrGeometryData.h" #include "GrProcessor.h" #include "GrShaderVar.h" @@ -46,6 +45,8 @@ /* * A struct for tracking batching decisions. While this lives on GrOptState, it is managed * entirely by the derived classes of the GP. + * // TODO this was an early attempt at handling out of order batching. It should be + * used carefully as it is being replaced by GrBatch */ class GrBatchTracker { public: @@ -65,12 +66,24 @@ private: SkAlignedSStorage<kMaxSize> fData; }; +class GrIndexBufferAllocPool; class GrGLCaps; class GrGLPrimitiveProcessor; -class GrOptDrawState; +class GrVertexBufferAllocPool; struct GrInitInvariantOutput; +/* + * This struct allows the GrPipeline to communicate information about the pipeline. Most of this + * is overrides, but some of it is general information. Logically it should live in GrPipeline.h, + * but this is problematic due to circular dependencies. + */ +struct GrPipelineInfo { + bool fColorIgnored; + bool fCoverageIgnored; + GrColor fOverrideColor; + bool fUsesLocalCoords; +}; /* * This enum is shared by GrPrimitiveProcessors and GrGLPrimitiveProcessors to coordinate shaders @@ -95,17 +108,7 @@ public: const SkMatrix& viewMatrix() const { return fViewMatrix; } const SkMatrix& localMatrix() const { return fLocalMatrix; } - /* - * This struct allows the optstate to communicate requirements to the GrPrimitiveProcessor. - */ - struct InitBT { - bool fColorIgnored; - bool fCoverageIgnored; - GrColor fOverrideColor; - bool fUsesLocalCoords; - }; - - virtual void initBatchTracker(GrBatchTracker*, const InitBT&) const = 0; + virtual void initBatchTracker(GrBatchTracker*, const GrPipelineInfo&) const = 0; virtual bool canMakeEqual(const GrBatchTracker& mine, const GrPrimitiveProcessor& that, @@ -304,7 +307,8 @@ protected: * TODO this function changes quite a bit with deferred geometry. There the GrGeometryProcessor * can upload a new color via attribute if needed. */ - static GrGPInput GetColorInputType(GrColor* color, GrColor primitiveColor, const InitBT& init, + static GrGPInput GetColorInputType(GrColor* color, GrColor primitiveColor, + const GrPipelineInfo& init, bool hasVertexColor) { if (init.fColorIgnored) { *color = GrColor_ILLEGAL; @@ -378,7 +382,7 @@ public: return SkNEW_ARGS(GrPathProcessor, (color, viewMatrix, localMatrix)); } - void initBatchTracker(GrBatchTracker*, const InitBT&) const SK_OVERRIDE; + void initBatchTracker(GrBatchTracker*, const GrPipelineInfo&) const SK_OVERRIDE; bool canMakeEqual(const GrBatchTracker& mine, const GrPrimitiveProcessor& that, |