1 | /* |
---|---|
2 | * Copyright 2019 Google LLC |
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 "src/gpu/GrProgramInfo.h" |
9 | |
10 | #include "src/gpu/GrStencilSettings.h" |
11 | |
12 | GrStencilSettings GrProgramInfo::nonGLStencilSettings() const { |
13 | GrStencilSettings stencil; |
14 | |
15 | if (this->pipeline().isStencilEnabled()) { |
16 | stencil.reset(*this->pipeline().getUserStencil(), |
17 | this->pipeline().hasStencilClip(), |
18 | 8); |
19 | } |
20 | |
21 | return stencil; |
22 | } |
23 | |
24 | #ifdef SK_DEBUG |
25 | #include "src/gpu/GrTexture.h" |
26 | |
27 | void GrProgramInfo::validate(bool flushTime) const { |
28 | if (flushTime) { |
29 | SkASSERT(fPipeline->allProxiesInstantiated()); |
30 | } |
31 | } |
32 | |
33 | void GrProgramInfo::checkAllInstantiated() const { |
34 | this->pipeline().visitProxies([](GrSurfaceProxy* proxy, GrMipmapped) { |
35 | SkASSERT(proxy->isInstantiated()); |
36 | return true; |
37 | }); |
38 | } |
39 | |
40 | void GrProgramInfo::checkMSAAAndMIPSAreResolved() const { |
41 | this->pipeline().visitTextureEffects([](const GrTextureEffect& te) { |
42 | GrTexture* tex = te.texture(); |
43 | SkASSERT(tex); |
44 | |
45 | // Ensure mipmaps were all resolved ahead of time by the DAG. |
46 | if (te.samplerState().mipmapped() == GrMipmapped::kYes && |
47 | (tex->width() != 1 || tex->height() != 1)) { |
48 | // There are some cases where we might be given a non-mipmapped texture with a |
49 | // mipmap filter. See skbug.com/7094. |
50 | SkASSERT(tex->mipmapped() != GrMipmapped::kYes || !tex->mipmapsAreDirty()); |
51 | } |
52 | }); |
53 | } |
54 | |
55 | #endif |
56 |