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