15346983b2e0726b4009cc546b01c58a8919e6c36bsalomon/* 25346983b2e0726b4009cc546b01c58a8919e6c36bsalomon * Copyright 2015 Google Inc. 35346983b2e0726b4009cc546b01c58a8919e6c36bsalomon * 45346983b2e0726b4009cc546b01c58a8919e6c36bsalomon * Use of this source code is governed by a BSD-style license that can be 55346983b2e0726b4009cc546b01c58a8919e6c36bsalomon * found in the LICENSE file. 65346983b2e0726b4009cc546b01c58a8919e6c36bsalomon */ 75346983b2e0726b4009cc546b01c58a8919e6c36bsalomon 87dae46a6783de5f6bc461870306eb7d648386980Brian Salomon#ifndef GrDiscardOp_DEFINED 97dae46a6783de5f6bc461870306eb7d648386980Brian Salomon#define GrDiscardOp_DEFINED 105346983b2e0726b4009cc546b01c58a8919e6c36bsalomon 11466c7d65974a055ad361430e57f92584b09af0bdHal Canary#include "GrGpuCommandBuffer.h" 1225a880960a9a689a745a01071ecba3fe494b5940Brian Salomon#include "GrOp.h" 13742e31de1599f3902810aecdf2e2e3eed3b40a09Brian Salomon#include "GrOpFlushState.h" 14955235fa13db6cfd615dd6120e7f5060761fa3d1Robert Phillips#include "GrRenderTargetProxy.h" 155346983b2e0726b4009cc546b01c58a8919e6c36bsalomon 167dae46a6783de5f6bc461870306eb7d648386980Brian Salomonclass GrDiscardOp final : public GrOp { 175346983b2e0726b4009cc546b01c58a8919e6c36bsalomonpublic: 1825a880960a9a689a745a01071ecba3fe494b5940Brian Salomon DEFINE_OP_CLASS_ID 191119dc366e15ef737d05d3a087410ea40c508101Robert Phillips 20955235fa13db6cfd615dd6120e7f5060761fa3d1Robert Phillips static std::unique_ptr<GrOp> Make(GrRenderTargetProxy* proxy) { 21955235fa13db6cfd615dd6120e7f5060761fa3d1Robert Phillips return std::unique_ptr<GrOp>(new GrDiscardOp(proxy)); 22f8334781914363caf537f22f012fcd5c03c60dadBrian Salomon } 235346983b2e0726b4009cc546b01c58a8919e6c36bsalomon 245346983b2e0726b4009cc546b01c58a8919e6c36bsalomon const char* name() const override { return "Discard"; } 255346983b2e0726b4009cc546b01c58a8919e6c36bsalomon 269dc2a9a972b1eb5c3bc8ee5952676250084c68b5Brian Salomon SkString dumpInfo() const override { 275346983b2e0726b4009cc546b01c58a8919e6c36bsalomon SkString string; 2844fbc79e069c28103a44387d11c62e049ef2967drobertphillips string.append(INHERITED::dumpInfo()); 295346983b2e0726b4009cc546b01c58a8919e6c36bsalomon return string; 305346983b2e0726b4009cc546b01c58a8919e6c36bsalomon } 315346983b2e0726b4009cc546b01c58a8919e6c36bsalomon 325346983b2e0726b4009cc546b01c58a8919e6c36bsalomonprivate: 332f4ddf6964edba1b8d2fdf50e328b60d10ce6ddfRobert Phillips GrDiscardOp(GrRenderTargetProxy* proxy) : INHERITED(ClassID()) { 34955235fa13db6cfd615dd6120e7f5060761fa3d1Robert Phillips this->setBounds(SkRect::MakeIWH(proxy->width(), proxy->height()), 35955235fa13db6cfd615dd6120e7f5060761fa3d1Robert Phillips HasAABloat::kNo, IsZeroArea::kNo); 362790c52e36ddd8c46d8238f3c92f47779f79fb69Brian Salomon } 372790c52e36ddd8c46d8238f3c92f47779f79fb69Brian Salomon 38955235fa13db6cfd615dd6120e7f5060761fa3d1Robert Phillips bool onCombineIfPossible(GrOp* that, const GrCaps& caps) override { return false; } 395346983b2e0726b4009cc546b01c58a8919e6c36bsalomon 40742e31de1599f3902810aecdf2e2e3eed3b40a09Brian Salomon void onPrepare(GrOpFlushState*) override {} 415346983b2e0726b4009cc546b01c58a8919e6c36bsalomon 429e50f7b11e9a9d3dc23c924bbb0f0b85c6f1d6cbBrian Salomon void onExecute(GrOpFlushState* state) override { 432f4ddf6964edba1b8d2fdf50e328b60d10ce6ddfRobert Phillips SkASSERT(state->drawOpArgs().fRenderTarget); 44955235fa13db6cfd615dd6120e7f5060761fa3d1Robert Phillips 452f4ddf6964edba1b8d2fdf50e328b60d10ce6ddfRobert Phillips state->commandBuffer()->discard(state->drawOpArgs().fRenderTarget); 465346983b2e0726b4009cc546b01c58a8919e6c36bsalomon } 475346983b2e0726b4009cc546b01c58a8919e6c36bsalomon 4825a880960a9a689a745a01071ecba3fe494b5940Brian Salomon typedef GrOp INHERITED; 495346983b2e0726b4009cc546b01c58a8919e6c36bsalomon}; 505346983b2e0726b4009cc546b01c58a8919e6c36bsalomon 515346983b2e0726b4009cc546b01c58a8919e6c36bsalomon#endif 52