| Index: src/gpu/GrStencilSettings.h
|
| diff --git a/src/gpu/GrStencilSettings.h b/src/gpu/GrStencilSettings.h
|
| deleted file mode 100644
|
| index 15a8cac12fe3f3e8c29c350ffb91dc251fb9d135..0000000000000000000000000000000000000000
|
| --- a/src/gpu/GrStencilSettings.h
|
| +++ /dev/null
|
| @@ -1,121 +0,0 @@
|
| -/*
|
| - * Copyright 2016 Google Inc.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license that can be
|
| - * found in the LICENSE file.
|
| - */
|
| -
|
| -
|
| -#ifndef GrStencilSettings_DEFINED
|
| -#define GrStencilSettings_DEFINED
|
| -
|
| -#include "GrUserStencilSettings.h"
|
| -#include "SkRegion.h"
|
| -
|
| -class GrProcessorKeyBuilder;
|
| -
|
| -enum class GrStencilTest : uint16_t {
|
| - kAlways,
|
| - kNever,
|
| - kGreater,
|
| - kGEqual,
|
| - kLess,
|
| - kLEqual,
|
| - kEqual,
|
| - kNotEqual
|
| -};
|
| -static constexpr int kGrStencilTestCount = 1 + (int)GrStencilTest::kNotEqual;
|
| -
|
| -enum class GrStencilOp : uint8_t {
|
| - kKeep,
|
| - kZero,
|
| - kReplace, // Replace stencil value with fRef (only the bits enabled in fWriteMask).
|
| - kInvert,
|
| - kIncWrap,
|
| - kDecWrap,
|
| - // NOTE: clamping occurs before the write mask. So if the MSB is zero and masked out, stencil
|
| - // values will still wrap when using clamping ops.
|
| - kIncClamp,
|
| - kDecClamp
|
| -};
|
| -static constexpr int kGrStencilOpCount = 1 + (int)GrStencilOp::kDecClamp;
|
| -
|
| -/**
|
| - * This class defines concrete stencil settings that map directly to the underlying hardware. It
|
| - * is deduced from user stencil settings, stencil clip status, and the number of bits in the
|
| - * target stencil buffer.
|
| - */
|
| -class GrStencilSettings {
|
| -public:
|
| - GrStencilSettings() { this->setDisabled(); }
|
| - GrStencilSettings(const GrUserStencilSettings& user, bool hasStencilClip, int numStencilBits) {
|
| - this->reset(user, hasStencilClip, numStencilBits);
|
| - }
|
| - GrStencilSettings(const GrStencilSettings& that) { this->reset(that); }
|
| - GrStencilSettings& operator=(const GrStencilSettings& that) { this->reset(that); return *this; }
|
| -
|
| - void invalidate() { fFlags |= kInvalid_PrivateFlag; }
|
| - void setDisabled() { fFlags = kAll_StencilFlags; }
|
| - void reset(const GrUserStencilSettings&, bool hasStencilClip, int numStencilBits);
|
| - void reset(const GrStencilSettings&);
|
| -
|
| - bool isValid() const { return !(fFlags & kInvalid_PrivateFlag); }
|
| - bool isDisabled() const { SkASSERT(this->isValid()); return fFlags & kDisabled_StencilFlag; }
|
| - bool doesWrite() const { SkASSERT(this->isValid());
|
| - return !(fFlags & kNoModifyStencil_StencilFlag); }
|
| - bool isTwoSided() const { SkASSERT(this->isValid());
|
| - return !(fFlags & kSingleSided_StencilFlag); }
|
| - bool usesWrapOp() const { SkASSERT(this->isValid());
|
| - return !(fFlags & kNoWrapOps_StencilFlag); }
|
| -
|
| - void genKey(GrProcessorKeyBuilder* b) const;
|
| -
|
| - bool operator!=(const GrStencilSettings& that) const { return !(*this == that); }
|
| - bool operator==(const GrStencilSettings&) const;
|
| -
|
| - struct Face : public GrTStencilFaceSettings<GrStencilTest, GrStencilOp> {
|
| - void reset(const GrUserStencilSettings::Face&, bool useStencilClip, int numStencilBits);
|
| - void setDisabled();
|
| - };
|
| -
|
| - const Face& front() const { SkASSERT(!this->isDisabled()); return fFront; }
|
| - const Face& back() const { SkASSERT(this->isTwoSided()); return fBack; }
|
| -
|
| - /**
|
| - * Given a thing to draw into the stencil clip, a fill type, and a set op
|
| - * this function determines:
|
| - * 1. Whether the thing can be draw directly to the stencil clip or
|
| - * needs to be drawn to the client portion of the stencil first.
|
| - * 2. How many passes are needed.
|
| - * 3. What those passes are.
|
| - *
|
| - * @param op the set op to combine this element with the existing clip
|
| - * @param canBeDirect can the caller draw this element directly (without using stencil)?
|
| - * @param invertedFill is this path inverted
|
| - * @param drawDirectToClip out: true if caller should draw the element directly, false if it
|
| - * should draw it into the user stencil bits first.
|
| - *
|
| - * @return a null-terminated array of settings for stencil passes.
|
| - *
|
| - * If drawDirectToClip is false, the caller must first draw the element into the user
|
| - * stencil bits, and then cover the clip area with multiple passes using the returned
|
| - * stencil settings.
|
| - *
|
| - * If drawDirectToClip is true, the returned array will only have one pass and the
|
| - * caller should use those stencil settings while drawing the element directly.
|
| - */
|
| - static GrUserStencilSettings const* const* GetClipPasses(SkRegion::Op op,
|
| - bool canBeDirect,
|
| - bool invertedFill,
|
| - bool* drawDirectToClip);
|
| -
|
| -private:
|
| - // Internal flag for backends to optionally mark their tracked stencil state as invalid.
|
| - enum { kInvalid_PrivateFlag = (kLast_StencilFlag << 1) };
|
| -
|
| - uint32_t fFlags;
|
| - Face fFront;
|
| - Face fBack;
|
| -};
|
| -
|
| -#endif
|
|
|