/* * Copyright 2017 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "GrGLGpuCommandBuffer.h" #include "GrFixedClip.h" #include "GrRenderTargetPriv.h" void GrGLGpuRTCommandBuffer::begin() { if (GrLoadOp::kClear == fColorLoadAndStoreInfo.fLoadOp) { fGpu->clear(GrFixedClip::Disabled(), fColorLoadAndStoreInfo.fClearColor, fRenderTarget, fOrigin); } if (GrLoadOp::kClear == fStencilLoadAndStoreInfo.fLoadOp) { GrStencilAttachment* sb = fRenderTarget->renderTargetPriv().getStencilAttachment(); if (sb && (sb->isDirty() || fRenderTarget->alwaysClearStencil())) { fGpu->clearStencil(fRenderTarget, 0x0); } } } void GrGLGpuRTCommandBuffer::set(GrRenderTarget* rt, GrSurfaceOrigin origin, const GrGpuRTCommandBuffer::LoadAndStoreInfo& colorInfo, const GrGpuRTCommandBuffer::StencilLoadAndStoreInfo& stencilInfo) { SkASSERT(fGpu); SkASSERT(!fRenderTarget); SkASSERT(fGpu == rt->getContext()->contextPriv().getGpu()); this->INHERITED::set(rt, origin); fColorLoadAndStoreInfo = colorInfo; fStencilLoadAndStoreInfo = stencilInfo; }