aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrOpFlushState.h
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2017-05-03 17:06:09 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-05-03 21:41:38 +0000
commit6d4b65e9dad972a09aa1928d28a1739ab6c77d4c (patch)
treeac3423d10f2b22b821db98e9a3f8c6e445e2d871 /src/gpu/GrOpFlushState.h
parentcc413b0cf1ea22e8ca80b7289b8c0a0278dbc083 (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.h40
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;