Index: src/gpu/GrFragmentProcessor.cpp |
diff --git a/src/gpu/GrProcessor.cpp b/src/gpu/GrFragmentProcessor.cpp |
similarity index 50% |
copy from src/gpu/GrProcessor.cpp |
copy to src/gpu/GrFragmentProcessor.cpp |
index e6be1da33a6e43159e636201a4770122186e6dd6..fcc9c74fa4ac5778870374f71ff6fbbbb5b1d257 100644 |
--- a/src/gpu/GrProcessor.cpp |
+++ b/src/gpu/GrFragmentProcessor.cpp |
@@ -1,134 +1,15 @@ |
-/* |
- * Copyright 2012 Google Inc. |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-#include "GrProcessor.h" |
-#include "GrContext.h" |
-#include "GrCoordTransform.h" |
-#include "GrGeometryProcessor.h" |
-#include "GrInvariantOutput.h" |
-#include "GrMemoryPool.h" |
-#include "GrXferProcessor.h" |
-#include "SkSpinlock.h" |
-#include "gl/GrGLFragmentProcessor.h" |
- |
-#if SK_ALLOW_STATIC_GLOBAL_INITIALIZERS |
- |
-class GrFragmentProcessor; |
-class GrGeometryProcessor; |
/* |
- * Originally these were both in the processor unit test header, but then it seemed to cause linker |
- * problems on android. |
- */ |
-template<> |
-SkTArray<GrProcessorTestFactory<GrFragmentProcessor>*, true>* |
-GrProcessorTestFactory<GrFragmentProcessor>::GetFactories() { |
- static SkTArray<GrProcessorTestFactory<GrFragmentProcessor>*, true> gFactories; |
- return &gFactories; |
-} |
- |
-template<> |
-SkTArray<GrProcessorTestFactory<GrXPFactory>*, true>* |
-GrProcessorTestFactory<GrXPFactory>::GetFactories() { |
- static SkTArray<GrProcessorTestFactory<GrXPFactory>*, true> gFactories; |
- return &gFactories; |
-} |
- |
-template<> |
-SkTArray<GrProcessorTestFactory<GrGeometryProcessor>*, true>* |
-GrProcessorTestFactory<GrGeometryProcessor>::GetFactories() { |
- static SkTArray<GrProcessorTestFactory<GrGeometryProcessor>*, true> gFactories; |
- return &gFactories; |
-} |
- |
-/* |
- * To ensure we always have successful static initialization, before creating from the factories |
- * we verify the count is as expected. If a new factory is added, then these numbers must be |
- * manually adjusted. |
- */ |
-static const int kFPFactoryCount = 38; |
-static const int kGPFactoryCount = 14; |
-static const int kXPFactoryCount = 5; |
- |
-template<> |
-void GrProcessorTestFactory<GrFragmentProcessor>::VerifyFactoryCount() { |
- if (kFPFactoryCount != GetFactories()->count()) { |
- SkFAIL("Wrong number of fragment processor factories!"); |
- } |
-} |
- |
-template<> |
-void GrProcessorTestFactory<GrGeometryProcessor>::VerifyFactoryCount() { |
- if (kGPFactoryCount != GetFactories()->count()) { |
- SkFAIL("Wrong number of geometry processor factories!"); |
- } |
-} |
- |
-template<> |
-void GrProcessorTestFactory<GrXPFactory>::VerifyFactoryCount() { |
- if (kXPFactoryCount != GetFactories()->count()) { |
- SkFAIL("Wrong number of xp factory factories!"); |
- } |
-} |
- |
-#endif |
- |
- |
-// We use a global pool protected by a mutex(spinlock). Chrome may use the same GrContext on |
-// different threads. The GrContext is not used concurrently on different threads and there is a |
-// memory barrier between accesses of a context on different threads. Also, there may be multiple |
-// GrContexts and those contexts may be in use concurrently on different threads. |
-namespace { |
-SK_DECLARE_STATIC_SPINLOCK(gProcessorSpinlock); |
-class MemoryPoolAccessor { |
-public: |
- MemoryPoolAccessor() { gProcessorSpinlock.acquire(); } |
- |
- ~MemoryPoolAccessor() { gProcessorSpinlock.release(); } |
- |
- GrMemoryPool* pool() const { |
- static GrMemoryPool gPool(4096, 4096); |
- return &gPool; |
- } |
-}; |
-} |
- |
-int32_t GrProcessor::gCurrProcessorClassID = GrProcessor::kIllegalProcessorClassID; |
- |
-/////////////////////////////////////////////////////////////////////////////// |
- |
-GrProcessor::~GrProcessor() {} |
- |
-void GrProcessor::addTextureAccess(const GrTextureAccess* access) { |
- fTextureAccesses.push_back(access); |
- this->addGpuResource(access->getProgramTexture()); |
-} |
+* Copyright 2015 Google Inc. |
+* |
+* Use of this source code is governed by a BSD-style license that can be |
+* found in the LICENSE file. |
+*/ |
-void* GrProcessor::operator new(size_t size) { |
- return MemoryPoolAccessor().pool()->allocate(size); |
-} |
- |
-void GrProcessor::operator delete(void* target) { |
- return MemoryPoolAccessor().pool()->release(target); |
-} |
- |
-bool GrProcessor::hasSameTextureAccesses(const GrProcessor& that) const { |
- if (this->numTextures() != that.numTextures()) { |
- return false; |
- } |
- for (int i = 0; i < this->numTextures(); ++i) { |
- if (this->textureAccess(i) != that.textureAccess(i)) { |
- return false; |
- } |
- } |
- return true; |
-} |
- |
-/////////////////////////////////////////////////////////////////////////////////////////////////// |
+#include "GrFragmentProcessor.h" |
+#include "GrCoordTransform.h" |
+#include "gl/GrGLFragmentProcessor.h" |
+#include "effects/GrXfermodeFragmentProcessor.h" |
GrFragmentProcessor::~GrFragmentProcessor() { |
// If we got here then our ref count must have reached zero, so we will have converted refs |
@@ -241,15 +122,8 @@ bool GrFragmentProcessor::hasSameTransforms(const GrFragmentProcessor& that) con |
return true; |
} |
-#include "effects/GrXfermodeFragmentProcessor.h" |
- |
const GrFragmentProcessor* GrFragmentProcessor::MulOuputByInputAlpha( |
const GrFragmentProcessor* fp) { |
return GrXfermodeFragmentProcessor::CreateFromDstProcessor(fp, SkXfermode::kDstIn_Mode); |
} |
-/////////////////////////////////////////////////////////////////////////////////////////////////// |
- |
-// Initial static variable from GrXPFactory |
-int32_t GrXPFactory::gCurrXPFClassID = |
- GrXPFactory::kIllegalXPFClassID; |