blob: d14e5b53d7dd451ac755c08202d846c2cce5196d [file] [log] [blame]
Brian Salomon5ec9def2016-12-20 15:34:05 -05001/*
2 * Copyright 2015 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 "GrDrawOpTest.h"
Brian Salomon17726632017-05-12 14:09:46 -04009#include "GrCaps.h"
10#include "GrContext.h"
Brian Salomonc7fe0f72018-05-11 10:14:21 -040011#include "GrContextPriv.h"
Brian Salomon17726632017-05-12 14:09:46 -040012#include "GrUserStencilSettings.h"
Brian Salomon5ec9def2016-12-20 15:34:05 -050013#include "SkRandom.h"
14#include "SkTypes.h"
15
Hal Canary6f6961e2017-01-31 13:50:44 -050016#if GR_TEST_UTILS
Brian Salomon5ec9def2016-12-20 15:34:05 -050017
Brian Salomon17726632017-05-12 14:09:46 -040018const GrUserStencilSettings* GrGetRandomStencil(SkRandom* random, GrContext* context) {
Brian Salomonc7fe0f72018-05-11 10:14:21 -040019 if (context->contextPriv().caps()->avoidStencilBuffers()) {
Brian Salomon17726632017-05-12 14:09:46 -040020 return &GrUserStencilSettings::kUnused;
21 }
22 static constexpr GrUserStencilSettings kReads(
23 GrUserStencilSettings::StaticInit<
24 0x8080,
25 GrUserStencilTest::kLess,
26 0xffff,
27 GrUserStencilOp::kKeep,
28 GrUserStencilOp::kKeep,
29 0xffff>()
30 );
31 static constexpr GrUserStencilSettings kWrites(
32 GrUserStencilSettings::StaticInit<
33 0xffff,
34 GrUserStencilTest::kAlways,
35 0xffff,
36 GrUserStencilOp::kReplace,
37 GrUserStencilOp::kReplace,
38 0xffff>()
39 );
40 static constexpr GrUserStencilSettings kReadsAndWrites(
41 GrUserStencilSettings::StaticInit<
42 0x8000,
43 GrUserStencilTest::kEqual,
44 0x6000,
45 GrUserStencilOp::kIncWrap,
46 GrUserStencilOp::kInvert,
47 0x77ff>()
48 );
Brian Salomon5ec9def2016-12-20 15:34:05 -050049
Brian Salomon17726632017-05-12 14:09:46 -040050 static const GrUserStencilSettings* kStencilSettings[] = {
51 &GrUserStencilSettings::kUnused,
52 &kReads,
53 &kWrites,
54 &kReadsAndWrites,
Brian Salomon5ec9def2016-12-20 15:34:05 -050055 };
Brian Salomon17726632017-05-12 14:09:46 -040056 return kStencilSettings[random->nextULessThan(SK_ARRAY_COUNT(kStencilSettings))];
Brian Salomon5ec9def2016-12-20 15:34:05 -050057}
Brian Salomon17726632017-05-12 14:09:46 -040058
Brian Salomon5ec9def2016-12-20 15:34:05 -050059#endif