| Index: src/gpu/instanced/InstancedRenderingTypes.h
 | 
| diff --git a/src/gpu/instanced/InstancedRenderingTypes.h b/src/gpu/instanced/InstancedRenderingTypes.h
 | 
| deleted file mode 100644
 | 
| index ff9471c428488ab7d406daa2bf3ab1e54ec80814..0000000000000000000000000000000000000000
 | 
| --- a/src/gpu/instanced/InstancedRenderingTypes.h
 | 
| +++ /dev/null
 | 
| @@ -1,191 +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 gr_instanced_InstancedRenderingTypes_DEFINED
 | 
| -#define gr_instanced_InstancedRenderingTypes_DEFINED
 | 
| -
 | 
| -#include "GrTypes.h"
 | 
| -#include "SkRRect.h"
 | 
| -
 | 
| -namespace gr_instanced {
 | 
| -
 | 
| -/**
 | 
| - * Per-vertex data. These values get fed into normal vertex attribs.
 | 
| - */
 | 
| -struct ShapeVertex {
 | 
| -    float     fX, fY;  //!< Shape coordinates.
 | 
| -    int32_t   fAttrs;  //!< Shape-specific vertex attributes, if needed.
 | 
| -};
 | 
| -
 | 
| -/**
 | 
| - * Per-instance data. These values get fed into instanced vertex attribs.
 | 
| - */
 | 
| -struct Instance {
 | 
| -    uint32_t   fInfo;               //!< Packed info about the instance. See InfoBits.
 | 
| -    float      fShapeMatrix2x3[6];  //!< Maps canonical shape coords -> device space coords.
 | 
| -    uint32_t   fColor;              //!< Color to be written out by the primitive processor.
 | 
| -    float      fLocalRect[4];       //!< Local coords rect that spans [-1, +1] in shape coords.
 | 
| -};
 | 
| -
 | 
| -enum class Attrib : uint8_t {
 | 
| -    kShapeCoords,
 | 
| -    kVertexAttrs,
 | 
| -    kInstanceInfo,
 | 
| -    kShapeMatrixX,
 | 
| -    kShapeMatrixY,
 | 
| -    kColor,
 | 
| -    kLocalRect
 | 
| -};
 | 
| -constexpr int kNumAttribs = 1 + (int)Attrib::kLocalRect;
 | 
| -
 | 
| -enum class AntialiasMode : uint8_t {
 | 
| -    kNone,
 | 
| -    kCoverage,
 | 
| -    kMSAA,
 | 
| -    kMixedSamples
 | 
| -};
 | 
| -constexpr int kNumAntialiasModes = 1 + (int)AntialiasMode::kMixedSamples;
 | 
| -
 | 
| -enum class ShapeType : uint8_t {
 | 
| -    kRect,
 | 
| -    kOval,
 | 
| -    kSimpleRRect,
 | 
| -    kNinePatch,
 | 
| -    kComplexRRect
 | 
| -};
 | 
| -constexpr int kNumShapeTypes = 1 + (int)ShapeType::kComplexRRect;
 | 
| -
 | 
| -inline static ShapeType GetRRectShapeType(const SkRRect& rrect) {
 | 
| -    SkASSERT(rrect.getType() >= SkRRect::kRect_Type &&
 | 
| -             rrect.getType() <= SkRRect::kComplex_Type);
 | 
| -    return static_cast<ShapeType>(rrect.getType() - 1);
 | 
| -
 | 
| -    GR_STATIC_ASSERT((int)ShapeType::kRect == SkRRect::kRect_Type - 1);
 | 
| -    GR_STATIC_ASSERT((int)ShapeType::kOval == SkRRect::kOval_Type - 1);
 | 
| -    GR_STATIC_ASSERT((int)ShapeType::kSimpleRRect == SkRRect::kSimple_Type - 1);
 | 
| -    GR_STATIC_ASSERT((int)ShapeType::kNinePatch == SkRRect::kNinePatch_Type - 1);
 | 
| -    GR_STATIC_ASSERT((int)ShapeType::kComplexRRect == SkRRect::kComplex_Type - 1);
 | 
| -    GR_STATIC_ASSERT(kNumShapeTypes == SkRRect::kComplex_Type);
 | 
| -}
 | 
| -
 | 
| -enum ShapeFlag {
 | 
| -    kRect_ShapeFlag          = (1 << (int)ShapeType::kRect),
 | 
| -    kOval_ShapeFlag          = (1 << (int)ShapeType::kOval),
 | 
| -    kSimpleRRect_ShapeFlag   = (1 << (int)ShapeType::kSimpleRRect),
 | 
| -    kNinePatch_ShapeFlag     = (1 << (int)ShapeType::kNinePatch),
 | 
| -    kComplexRRect_ShapeFlag  = (1 << (int)ShapeType::kComplexRRect),
 | 
| -
 | 
| -    kRRect_ShapesMask = kSimpleRRect_ShapeFlag | kNinePatch_ShapeFlag | kComplexRRect_ShapeFlag
 | 
| -};
 | 
| -
 | 
| -constexpr uint8_t GetShapeFlag(ShapeType type) { return 1 << (int)type; }
 | 
| -
 | 
| -/**
 | 
| - * Defines what data is stored at which bits in the fInfo field of the instanced data.
 | 
| - */
 | 
| -enum InfoBits {
 | 
| -    kShapeType_InfoBit       = 29,
 | 
| -    kInnerShapeType_InfoBit  = 27,
 | 
| -    kPerspective_InfoBit     = 26,
 | 
| -    kLocalMatrix_InfoBit     = 25,
 | 
| -    kParamsIdx_InfoBit       =  0
 | 
| -};
 | 
| -
 | 
| -enum InfoMasks {
 | 
| -    kShapeType_InfoMask       = 0u - (1 << kShapeType_InfoBit),
 | 
| -    kInnerShapeType_InfoMask  = (1 << kShapeType_InfoBit) - (1 << kInnerShapeType_InfoBit),
 | 
| -    kPerspective_InfoFlag     = (1 << kPerspective_InfoBit),
 | 
| -    kLocalMatrix_InfoFlag     = (1 << kLocalMatrix_InfoBit),
 | 
| -    kParamsIdx_InfoMask       = (1 << kLocalMatrix_InfoBit) - 1
 | 
| -};
 | 
| -
 | 
| -GR_STATIC_ASSERT((kNumShapeTypes - 1) <= (uint32_t)kShapeType_InfoMask >> kShapeType_InfoBit);
 | 
| -GR_STATIC_ASSERT((int)ShapeType::kSimpleRRect <=
 | 
| -                 kInnerShapeType_InfoMask >> kInnerShapeType_InfoBit);
 | 
| -
 | 
| -/**
 | 
| - * Additional parameters required by some instances (e.g. round rect radii, perspective column,
 | 
| - * local matrix). These are accessed via texel buffer.
 | 
| - */
 | 
| -struct ParamsTexel {
 | 
| -    float fX, fY, fZ, fW;
 | 
| -};
 | 
| -
 | 
| -GR_STATIC_ASSERT(0 == offsetof(ParamsTexel, fX));
 | 
| -GR_STATIC_ASSERT(4 * 4 == sizeof(ParamsTexel));
 | 
| -
 | 
| -/**
 | 
| - * Tracks all information needed in order to draw a batch of instances. This struct also serves
 | 
| - * as an all-in-one shader key for the batch.
 | 
| - */
 | 
| -struct BatchInfo {
 | 
| -    BatchInfo() : fData(0) {}
 | 
| -
 | 
| -    bool isSimpleRects() const {
 | 
| -        return !((fShapeTypes & ~kRect_ShapeFlag) | fInnerShapeTypes);
 | 
| -    }
 | 
| -
 | 
| -    bool canJoin(BatchInfo that) const {
 | 
| -        if (fAntialiasMode != that.fAntialiasMode) {
 | 
| -            return false;
 | 
| -        }
 | 
| -        if (SkToBool(fInnerShapeTypes) != SkToBool(that.fInnerShapeTypes)) {
 | 
| -            // GrInstanceProcessor can't currently combine draws with and without inner shapes.
 | 
| -            return false;
 | 
| -        }
 | 
| -        if (fCannotDiscard != that.fCannotDiscard) {
 | 
| -            // For stencil draws, the use of discard can be a requirement.
 | 
| -            return false;
 | 
| -        }
 | 
| -        return true;
 | 
| -    }
 | 
| -
 | 
| -    void join(BatchInfo that) {
 | 
| -        SkASSERT(this->canJoin(that));
 | 
| -        fData |= that.fData;
 | 
| -    }
 | 
| -
 | 
| -    union {
 | 
| -        struct {
 | 
| -            AntialiasMode   fAntialiasMode;
 | 
| -            uint8_t         fShapeTypes;
 | 
| -            uint8_t         fInnerShapeTypes;
 | 
| -            bool            fHasPerspective               : 1;
 | 
| -            bool            fHasLocalMatrix               : 1;
 | 
| -            bool            fHasParams                    : 1;
 | 
| -            bool            fNonSquare                    : 1;
 | 
| -            bool            fUsesLocalCoords              : 1;
 | 
| -            bool            fCannotTweakAlphaForCoverage  : 1;
 | 
| -            bool            fCannotDiscard                : 1;
 | 
| -        };
 | 
| -        uint32_t fData;
 | 
| -    };
 | 
| -};
 | 
| -
 | 
| -// This is required since all the data must fit into 32 bits of a shader key.
 | 
| -GR_STATIC_ASSERT(sizeof(uint32_t) == sizeof(BatchInfo));
 | 
| -GR_STATIC_ASSERT(kNumShapeTypes <= 8);
 | 
| -
 | 
| -template<typename T> struct TRange {
 | 
| -    bool operator ==(const TRange& that) const {
 | 
| -        return fStart == that.fStart && fCount == that.fCount;
 | 
| -    }
 | 
| -    bool operator !=(const TRange& that) const { return !(*this == that); }
 | 
| -
 | 
| -    bool isEmpty() const { return fCount <= 0; }
 | 
| -    T end() { return fStart + fCount; }
 | 
| -
 | 
| -    T fStart;
 | 
| -    T fCount;
 | 
| -};
 | 
| -
 | 
| -typedef TRange<int16_t> IndexRange;
 | 
| -typedef TRange<int> InstanceRange;
 | 
| -
 | 
| -}
 | 
| -
 | 
| -#endif
 | 
| 
 |