1 /* 2 * Copyright 2017 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #include "GrGLGpuCommandBuffer.h" 9 10 #include "GrContextPriv.h" 11 #include "GrFixedClip.h" 12 #include "GrRenderTargetPriv.h" 13 14 void GrGLGpuRTCommandBuffer::begin() { 15 if (GrLoadOp::kClear == fColorLoadAndStoreInfo.fLoadOp) { 16 fGpu->clear(GrFixedClip::Disabled(), fColorLoadAndStoreInfo.fClearColor, 17 fRenderTarget, fOrigin); 18 } 19 if (GrLoadOp::kClear == fStencilLoadAndStoreInfo.fLoadOp) { 20 GrStencilAttachment* sb = fRenderTarget->renderTargetPriv().getStencilAttachment(); 21 if (sb && (sb->isDirty() || fRenderTarget->alwaysClearStencil())) { 22 fGpu->clearStencil(fRenderTarget, 0x0); 23 } 24 } 25 } 26 27 void GrGLGpuRTCommandBuffer::set(GrRenderTarget* rt, GrSurfaceOrigin origin, 28 const GrGpuRTCommandBuffer::LoadAndStoreInfo& colorInfo, 29 const GrGpuRTCommandBuffer::StencilLoadAndStoreInfo& stencilInfo) { 30 SkASSERT(fGpu); 31 SkASSERT(!fRenderTarget); 32 SkASSERT(fGpu == rt->getContext()->priv().getGpu()); 33 34 this->INHERITED::set(rt, origin); 35 fColorLoadAndStoreInfo = colorInfo; 36 fStencilLoadAndStoreInfo = stencilInfo; 37 } 38