diff options
author | Brian Salomon <bsalomon@google.com> | 2017-05-03 17:06:09 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-05-03 21:41:38 +0000 |
commit | 6d4b65e9dad972a09aa1928d28a1739ab6c77d4c (patch) | |
tree | ac3423d10f2b22b821db98e9a3f8c6e445e2d871 /src/gpu/GrOpFlushState.h | |
parent | cc413b0cf1ea22e8ca80b7289b8c0a0278dbc083 (diff) |
Revert "Revert "Add a new non-AA rect op that does not inherit from GrLegacyMeshDrawOp.""
This reverts commit 0f353327968530506dd3dd15fca79ef59fe013f1.
Bug: skia:
Change-Id: I8def56fa55bfc70de4386bf0b7a7867f6e91c173
Reviewed-on: https://skia-review.googlesource.com/15251
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/gpu/GrOpFlushState.h')
-rw-r--r-- | src/gpu/GrOpFlushState.h | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/src/gpu/GrOpFlushState.h b/src/gpu/GrOpFlushState.h index 4ba87feebf..0fc7b7f834 100644 --- a/src/gpu/GrOpFlushState.h +++ b/src/gpu/GrOpFlushState.h @@ -10,6 +10,7 @@ #include "GrBufferAllocPool.h" #include "GrGpu.h" +#include "SkArenaAlloc.h" #include "ops/GrMeshDrawOp.h" class GrGpuCommandBuffer; @@ -94,6 +95,7 @@ public: void reset() { fVertexPool.reset(); fIndexPool.reset(); + fPipelines.reset(); } /** Additional data required on a per-op basis when executing GrDrawOps. */ @@ -110,16 +112,22 @@ public: return *fOpArgs; } + template <typename... Args> + GrPipeline* allocPipeline(Args... args) { + return fPipelines.make<GrPipeline>(std::forward<Args>(args)...); + } + private: - GrGpu* fGpu; - GrResourceProvider* fResourceProvider; - GrGpuCommandBuffer* fCommandBuffer; - GrVertexBufferAllocPool fVertexPool; - GrIndexBufferAllocPool fIndexPool; - SkSTArray<4, GrDrawOp::DeferredUploadFn> fAsapUploads; - GrDrawOpUploadToken fLastIssuedToken; - GrDrawOpUploadToken fLastFlushedToken; - DrawOpArgs* fOpArgs; + GrGpu* fGpu; + GrResourceProvider* fResourceProvider; + GrGpuCommandBuffer* fCommandBuffer; + GrVertexBufferAllocPool fVertexPool; + GrIndexBufferAllocPool fIndexPool; + SkSTArray<4, GrDrawOp::DeferredUploadFn> fAsapUploads; + GrDrawOpUploadToken fLastIssuedToken; + GrDrawOpUploadToken fLastFlushedToken; + DrawOpArgs* fOpArgs; + SkArenaAlloc fPipelines{sizeof(GrPipeline) * 100}; }; /** @@ -182,6 +190,7 @@ public: protected: GrDrawOp* op() { return fOp; } GrOpFlushState* state() { return fState; } + const GrOpFlushState* state() const { return fState; } private: GrOpFlushState* fState; @@ -211,6 +220,19 @@ public: this->state()->putBackVertexSpace(vertices * vertexStride); } + GrRenderTarget* renderTarget() const { return this->state()->drawOpArgs().fRenderTarget; } + + const GrAppliedClip* clip() const { return this->state()->drawOpArgs().fAppliedClip; } + + const GrXferProcessor::DstTexture& dstTexture() const { + return this->state()->drawOpArgs().fDstTexture; + } + + template <typename... Args> + GrPipeline* allocPipeline(Args... args) { + return this->state()->allocPipeline(std::forward<Args>(args)...); + } + private: GrMeshDrawOp* meshDrawOp() { return static_cast<GrMeshDrawOp*>(this->op()); } typedef GrDrawOp::Target INHERITED; |