Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(845)

Unified Diff: src/gpu/GrImmediateDrawTarget.h

Issue 1126043007: Adding immediate mode draw target for debug (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: tweaks Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/GrContext.cpp ('k') | src/gpu/GrImmediateDrawTarget.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/GrImmediateDrawTarget.h
diff --git a/src/gpu/GrImmediateDrawTarget.h b/src/gpu/GrImmediateDrawTarget.h
new file mode 100644
index 0000000000000000000000000000000000000000..d04c08199e9a3c69c5a5bc68adeba0da554800b2
--- /dev/null
+++ b/src/gpu/GrImmediateDrawTarget.h
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2015 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef GrImmediateDrawTarget_DEFINED
+#define GrImmediateDrawTarget_DEFINED
+
+#include "GrDrawTarget.h"
+
+#include "GrBatchTarget.h"
+
+/**
+ * A debug GrDrawTarget which immediately flushes every command it receives
+ */
+class GrImmediateDrawTarget : public GrClipTarget {
+public:
+
+ /**
+ * Creates a GrImmediateDrawTarget
+ *
+ * @param context the context object that owns this draw buffer.
+ */
+ GrImmediateDrawTarget(GrContext* context);
+
+ ~GrImmediateDrawTarget() override;
+
+ // tracking for draws
+ DrawToken getCurrentDrawToken() override { return DrawToken(this, fDrawID); }
+
+ void clearStencilClip(const SkIRect& rect,
+ bool insideClip,
+ GrRenderTarget* renderTarget) override;
+
+ void discard(GrRenderTarget*) override;
+
+private:
+ void onReset() override;
+ void onFlush() override;
+
+ // overrides from GrDrawTarget
+ void onDrawBatch(GrBatch*, const PipelineInfo&) override;
+ void onStencilPath(const GrPipelineBuilder&,
+ const GrPathProcessor*,
+ const GrPath*,
+ const GrScissorState&,
+ const GrStencilSettings&) override {
+ SkFAIL("Only batch implemented\n");
+ }
+ void onDrawPath(const GrPathProcessor*,
+ const GrPath*,
+ const GrStencilSettings&,
+ const PipelineInfo&) override {
+ SkFAIL("Only batch implemented\n");
+ }
+ void onDrawPaths(const GrPathProcessor*,
+ const GrPathRange*,
+ const void* indices,
+ PathIndexType,
+ const float transformValues[],
+ PathTransformType,
+ int count,
+ const GrStencilSettings&,
+ const PipelineInfo&) override {
+ SkFAIL("Only batch implemented\n");
+ }
+ void onClear(const SkIRect* rect,
+ GrColor color,
+ bool canIgnoreRect,
+ GrRenderTarget* renderTarget) override;
+ void onCopySurface(GrSurface* dst,
+ GrSurface* src,
+ const SkIRect& srcRect,
+ const SkIPoint& dstPoint) override;
+
+ bool isIssued(uint32_t drawID) override { return drawID != fDrawID; }
+
+ bool SK_WARN_UNUSED_RESULT setupPipelineAndShouldDraw(GrPipeline*,
+ const GrDrawTarget::PipelineInfo&);
+
+ void recordXferBarrierIfNecessary(const GrPipeline*);
+
+ GrBatchTarget fBatchTarget;
+ uint32_t fDrawID;
+
+ typedef GrClipTarget INHERITED;
+};
+
+#endif
« no previous file with comments | « src/gpu/GrContext.cpp ('k') | src/gpu/GrImmediateDrawTarget.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698