Home | History | Annotate | Download | only in gl
      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