| /* |
| * Copyright 2015 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "include/core/SkTypes.h" |
| #include "include/private/GrContext_Base.h" |
| #include "include/utils/SkRandom.h" |
| #include "src/gpu/GrBaseContextPriv.h" |
| #include "src/gpu/GrCaps.h" |
| #include "src/gpu/GrDrawOpTest.h" |
| #include "src/gpu/GrUserStencilSettings.h" |
| |
| #if GR_TEST_UTILS |
| |
| const GrUserStencilSettings* GrGetRandomStencil(SkRandom* random, GrContext_Base* context) { |
| if (context->priv().caps()->avoidStencilBuffers()) { |
| return &GrUserStencilSettings::kUnused; |
| } |
| static constexpr GrUserStencilSettings kReads( |
| GrUserStencilSettings::StaticInit< |
| 0x8080, |
| GrUserStencilTest::kLess, |
| 0xffff, |
| GrUserStencilOp::kKeep, |
| GrUserStencilOp::kKeep, |
| 0xffff>() |
| ); |
| static constexpr GrUserStencilSettings kWrites( |
| GrUserStencilSettings::StaticInit< |
| 0xffff, |
| GrUserStencilTest::kAlways, |
| 0xffff, |
| GrUserStencilOp::kReplace, |
| GrUserStencilOp::kReplace, |
| 0xffff>() |
| ); |
| static constexpr GrUserStencilSettings kReadsAndWrites( |
| GrUserStencilSettings::StaticInit< |
| 0x8000, |
| GrUserStencilTest::kEqual, |
| 0x6000, |
| GrUserStencilOp::kIncWrap, |
| GrUserStencilOp::kInvert, |
| 0x77ff>() |
| ); |
| |
| static const GrUserStencilSettings* kStencilSettings[] = { |
| &GrUserStencilSettings::kUnused, |
| &kReads, |
| &kWrites, |
| &kReadsAndWrites, |
| }; |
| return kStencilSettings[random->nextULessThan(SK_ARRAY_COUNT(kStencilSettings))]; |
| } |
| |
| #endif |