aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/gpu
diff options
context:
space:
mode:
authorGravatar joshualitt <joshualitt@chromium.org>2015-07-10 07:26:21 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-07-10 07:26:21 -0700
commit5b4f05f709d2b45f1b61e613a4fd073c31fa66d8 (patch)
tree0453e242ad13d78f79770b89420aaf1aa782abcd /include/gpu
parent9764c40cd31c11c82686c8b8dbbeaea9fa4de05d (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.h17
-rw-r--r--include/gpu/GrProcessorDataManager.h39
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