diff options
author | Ben Wagner <bungeman@google.com> | 2018-03-29 11:46:24 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-03-29 17:18:05 +0000 |
commit | 3746ac21df90e44ed1ed9ec2f1e4694fbcd1d840 (patch) | |
tree | de1fff31711fa4c41e849d0281c8a2c5b400db88 /src/gpu/GrPathRange.h | |
parent | c3bc425bd4d630f4c6b69f38473fc69b77a1d5b9 (diff) |
Remove path ranges from gpu.
These appear to have been added to handle glyph paths with nvpr and no
longer appear to be used.
Change-Id: Id75e2e85ab837a5808e7641873d217c844cd827c
Reviewed-on: https://skia-review.googlesource.com/117103
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Diffstat (limited to 'src/gpu/GrPathRange.h')
-rw-r--r-- | src/gpu/GrPathRange.h | 153 |
1 files changed, 0 insertions, 153 deletions
diff --git a/src/gpu/GrPathRange.h b/src/gpu/GrPathRange.h deleted file mode 100644 index 39779a7008..0000000000 --- a/src/gpu/GrPathRange.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright 2014 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef GrPathRange_DEFINED -#define GrPathRange_DEFINED - -#include "GrGpuResource.h" -#include "SkPath.h" -#include "SkRefCnt.h" -#include "SkTArray.h" - -class SkDescriptor; - -/** - * Represents a contiguous range of GPU path objects. - * This object is immutable with the exception that individual paths may be - * initialized lazily. - */ - -class GrPathRange : public GrGpuResource { -public: - - - enum PathIndexType { - kU8_PathIndexType, //!< uint8_t - kU16_PathIndexType, //!< uint16_t - kU32_PathIndexType, //!< uint32_t - - kLast_PathIndexType = kU32_PathIndexType - }; - - static inline int PathIndexSizeInBytes(PathIndexType type) { - GR_STATIC_ASSERT(0 == kU8_PathIndexType); - GR_STATIC_ASSERT(1 == kU16_PathIndexType); - GR_STATIC_ASSERT(2 == kU32_PathIndexType); - GR_STATIC_ASSERT(kU32_PathIndexType == kLast_PathIndexType); - - return 1 << type; - } - - /** - * Class that generates the paths for a specific range. - */ - class PathGenerator : public SkRefCnt { - public: - virtual int getNumPaths() = 0; - virtual void generatePath(int index, SkPath* out) = 0; -#ifdef SK_DEBUG - virtual bool isEqualTo(const SkDescriptor&) const { return false; } -#endif - virtual ~PathGenerator() {} - }; - - /** - * Initialize a lazy-loaded path range. This class will generate an SkPath and call - * onInitPath() for each path within the range before it is drawn for the first time. - */ - GrPathRange(GrGpu*, PathGenerator*); - - /** - * Initialize an eager-loaded path range. The subclass is responsible for ensuring all - * the paths are initialized up front. - */ - GrPathRange(GrGpu*, int numPaths); - - int getNumPaths() const { return fNumPaths; } - const PathGenerator* getPathGenerator() const { return fPathGenerator.get(); } - - void loadPathsIfNeeded(const void* indices, PathIndexType, int count) const; - - template<typename IndexType> void loadPathsIfNeeded(const IndexType* indices, int count) const { - if (!fPathGenerator) { - return; - } - - bool didLoadPaths = false; - - for (int i = 0; i < count; ++i) { - SkASSERT(indices[i] < static_cast<uint32_t>(fNumPaths)); - - const int groupIndex = indices[i] / kPathsPerGroup; - const int groupByte = groupIndex / 8; - const uint8_t groupBit = 1 << (groupIndex % 8); - - const bool hasPath = SkToBool(fGeneratedPaths[groupByte] & groupBit); - if (!hasPath) { - // We track which paths are loaded in groups of kPathsPerGroup. To - // mark a path as loaded we need to load the entire group. - const int groupFirstPath = groupIndex * kPathsPerGroup; - const int groupLastPath = SkTMin(groupFirstPath + kPathsPerGroup, fNumPaths) - 1; - - SkPath path; - for (int pathIdx = groupFirstPath; pathIdx <= groupLastPath; ++pathIdx) { - fPathGenerator->generatePath(pathIdx, &path); - this->onInitPath(pathIdx, path); - } - - fGeneratedPaths[groupByte] |= groupBit; - didLoadPaths = true; - } - } - - if (didLoadPaths) { - this->didChangeGpuMemorySize(); - } - } - -#ifdef SK_DEBUG - void assertPathsLoaded(const void* indices, PathIndexType, int count) const; - - template<typename IndexType> void assertPathsLoaded(const IndexType* indices, int count) const { - if (!fPathGenerator) { - return; - } - - for (int i = 0; i < count; ++i) { - SkASSERT(indices[i] < static_cast<uint32_t>(fNumPaths)); - - const int groupIndex = indices[i] / kPathsPerGroup; - const int groupByte = groupIndex / 8; - const uint8_t groupBit = 1 << (groupIndex % 8); - - SkASSERT(fGeneratedPaths[groupByte] & groupBit); - } - } - - virtual bool isEqualTo(const SkDescriptor& desc) const { - return nullptr != fPathGenerator.get() && fPathGenerator->isEqualTo(desc); - } -#endif -protected: - // Initialize a path in the range before drawing. This is only called when - // fPathGenerator is non-null. The child class need not call didChangeGpuMemorySize(), - // GrPathRange will take care of that after the call is complete. - virtual void onInitPath(int index, const SkPath&) const = 0; - -private: - enum { - kPathsPerGroup = 16 // Paths get tracked in groups of 16 for lazy loading. - }; - - mutable sk_sp<PathGenerator> fPathGenerator; - mutable SkTArray<uint8_t, true /*MEM_COPY*/> fGeneratedPaths; - const int fNumPaths; - - typedef GrGpuResource INHERITED; -}; - -#endif |