blob: dd24c68e39f640a1c468ecfe0817003d14c6f99c [file] [log] [blame]
Robert Phillipscb2e2352017-08-30 16:44:40 -04001/*
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
Greg Daniel2d41d0d2019-08-26 11:08:51 -04008#include "src/gpu/gl/GrGLOpsRenderPass.h"
Robert Phillipscb2e2352017-08-30 16:44:40 -04009
Mike Kleinc0bd9f92019-04-23 12:05:21 -050010#include "src/gpu/GrContextPriv.h"
11#include "src/gpu/GrFixedClip.h"
12#include "src/gpu/GrRenderTargetPriv.h"
Robert Phillipscb2e2352017-08-30 16:44:40 -040013
Greg Daniel2d41d0d2019-08-26 11:08:51 -040014void GrGLOpsRenderPass::begin() {
Michael Ludwig6e17f1d2019-05-15 14:00:20 +000015 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
Greg Daniel2d41d0d2019-08-26 11:08:51 -040027void GrGLOpsRenderPass::set(GrRenderTarget* rt, GrSurfaceOrigin origin,
28 const GrOpsRenderPass::LoadAndStoreInfo& colorInfo,
29 const GrOpsRenderPass::StencilLoadAndStoreInfo& stencilInfo) {
Robert Phillips5b5d84c2018-08-09 15:12:18 -040030 SkASSERT(fGpu);
31 SkASSERT(!fRenderTarget);
Robert Phillips9da87e02019-02-04 13:26:26 -050032 SkASSERT(fGpu == rt->getContext()->priv().getGpu());
Robert Phillips5b5d84c2018-08-09 15:12:18 -040033
34 this->INHERITED::set(rt, origin);
35 fColorLoadAndStoreInfo = colorInfo;
36 fStencilLoadAndStoreInfo = stencilInfo;
37}