diff options
author | 2015-07-10 07:26:21 -0700 | |
---|---|---|
committer | 2015-07-10 07:26:21 -0700 | |
commit | 5b4f05f709d2b45f1b61e613a4fd073c31fa66d8 (patch) | |
tree | 0453e242ad13d78f79770b89420aaf1aa782abcd /include/gpu | |
parent | 9764c40cd31c11c82686c8b8dbbeaea9fa4de05d (diff) |
Move GrProcessorDataManager to GrMemoryPool
TBR=bsalomon@google.com
BUG=skia:
Review URL: https://codereview.chromium.org/1225363002
Diffstat (limited to 'include/gpu')
-rw-r--r-- | include/gpu/GrPaint.h | 17 | ||||
-rw-r--r-- | include/gpu/GrProcessorDataManager.h | 39 |
2 files changed, 48 insertions, 8 deletions
diff --git a/include/gpu/GrPaint.h b/include/gpu/GrPaint.h index c00e148397..22951f94a2 100644 --- a/include/gpu/GrPaint.h +++ b/include/gpu/GrPaint.h @@ -125,6 +125,7 @@ public: fCoverageStages = paint.fCoverageStages; fXPFactory.reset(SkRef(paint.getXPFactory())); + fProcDataManager.reset(SkNEW_ARGS(GrProcessorDataManager, (*paint.processorDataManager()))); return *this; } @@ -137,18 +138,20 @@ public: */ bool isConstantBlendedColor(GrColor* constantColor) const; - GrProcessorDataManager* getProcessorDataManager() { return &fProcDataManager; } + GrProcessorDataManager* getProcessorDataManager() { return fProcDataManager.get(); } + + const GrProcessorDataManager* processorDataManager() const { return fProcDataManager.get(); } private: mutable SkAutoTUnref<const GrXPFactory> fXPFactory; - SkSTArray<4, GrFragmentStage> fColorStages; - SkSTArray<2, GrFragmentStage> fCoverageStages; + SkSTArray<4, GrFragmentStage> fColorStages; + SkSTArray<2, GrFragmentStage> fCoverageStages; - bool fAntiAlias; - bool fDither; + bool fAntiAlias; + bool fDither; - GrColor fColor; - GrProcessorDataManager fProcDataManager; + GrColor fColor; + SkAutoTUnref<GrProcessorDataManager> fProcDataManager; }; #endif diff --git a/include/gpu/GrProcessorDataManager.h b/include/gpu/GrProcessorDataManager.h index 0f376b7be2..a58cb4ef51 100644 --- a/include/gpu/GrProcessorDataManager.h +++ b/include/gpu/GrProcessorDataManager.h @@ -8,6 +8,43 @@ #ifndef GrProcessorDataManager_DEFINED #define GrProcessorDataManager_DEFINED -class GrProcessorDataManager {}; +#include "SkRefCnt.h" +#include "SkTArray.h" + +class GrProcessorDataManager : public SkRefCnt { +public: + GrProcessorDataManager() {} + GrProcessorDataManager(const GrProcessorDataManager& procDataManager) { + fIndices = procDataManager.fIndices; + fStorage = procDataManager.fStorage; + } + + void* operator new(size_t size); + void operator delete(void* target); + + void* operator new(size_t size, void* placement) { + return ::operator new(size, placement); + } + void operator delete(void* target, void* placement) { + ::operator delete(target, placement); + } + +private: + static const uint32_t kNumProcessor = 1; + static const uint32_t kDataIndicesPerProcessor = 1; + static const uint32_t kPreAllocDataPerProcessor = 1; + + /*static const size_t kPreAllocStorage = kNumProcessor * kPreAllocDataPerProcessor; + static const uint32_t kNumProcessor = 8; + static const uint32_t kDataIndicesPerProcessor = 4; + static const uint32_t kPreAllocDataPerProcessor = kDataIndicesPerProcessor * + sizeof(GrCoordTransform);*/ + static const size_t kPreAllocIndices = kNumProcessor * kDataIndicesPerProcessor; + static const size_t kPreAllocStorage = kNumProcessor * kPreAllocDataPerProcessor; + SkSTArray<kPreAllocIndices, uint32_t, true> fIndices; + SkSTArray<kPreAllocStorage, unsigned char, true> fStorage; + + typedef SkRefCnt INHERITED; +}; #endif |