| /* |
| * 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; |
| |
| 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; |
| |
| 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 |