| 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;
|
|
|