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 "GrFixedClip.h"
     11 #include "GrRenderTargetPriv.h"
     12 
     13 void GrGLGpuRTCommandBuffer::begin() {
     14     if (GrLoadOp::kClear == fColorLoadAndStoreInfo.fLoadOp) {
     15         fGpu->clear(GrFixedClip::Disabled(), fColorLoadAndStoreInfo.fClearColor,
     16                     fRenderTarget, fOrigin);
     17     }
     18     if (GrLoadOp::kClear == fStencilLoadAndStoreInfo.fLoadOp) {
     19         GrStencilAttachment* sb = fRenderTarget->renderTargetPriv().getStencilAttachment();
     20         if (sb && (sb->isDirty() || fRenderTarget->alwaysClearStencil())) {
     21             fGpu->clearStencil(fRenderTarget, 0x0);
     22         }
     23     }
     24 }
     25 
     26 void GrGLGpuRTCommandBuffer::set(GrRenderTarget* rt, GrSurfaceOrigin origin,
     27                                  const GrGpuRTCommandBuffer::LoadAndStoreInfo& colorInfo,
     28                                  const GrGpuRTCommandBuffer::StencilLoadAndStoreInfo& stencilInfo) {
     29     SkASSERT(fGpu);
     30     SkASSERT(!fRenderTarget);
     31     SkASSERT(fGpu == rt->getContext()->contextPriv().getGpu());
     32 
     33     this->INHERITED::set(rt, origin);
     34     fColorLoadAndStoreInfo = colorInfo;
     35     fStencilLoadAndStoreInfo = stencilInfo;
     36 }
     37