| Index: include/gpu/GrFragmentStage.h
|
| diff --git a/include/gpu/GrProcessorStage.h b/include/gpu/GrFragmentStage.h
|
| similarity index 69%
|
| rename from include/gpu/GrProcessorStage.h
|
| rename to include/gpu/GrFragmentStage.h
|
| index 0f24a30a32abb9cb4eb38666cdc9330f2a553111..8089e9fab7a7819b94502a1d6ee4285e6248ff5a 100644
|
| --- a/include/gpu/GrProcessorStage.h
|
| +++ b/include/gpu/GrFragmentStage.h
|
| @@ -1,4 +1,3 @@
|
| -
|
| /*
|
| * Copyright 2010 Google Inc.
|
| *
|
| @@ -6,23 +5,17 @@
|
| * found in the LICENSE file.
|
| */
|
|
|
| +#ifndef GrFragmentStage_DEFINED
|
| +#define GrFragmentStage_DEFINED
|
|
|
| -
|
| -#ifndef GrProcessorStage_DEFINED
|
| -#define GrProcessorStage_DEFINED
|
| -
|
| -#include "GrBackendProcessorFactory.h"
|
| -#include "GrCoordTransform.h"
|
| #include "GrFragmentProcessor.h"
|
| -#include "GrProgramElementRef.h"
|
| #include "SkMatrix.h"
|
| -#include "SkShader.h"
|
|
|
| -// TODO: Make two variations on this class: One for GrDrawState that only owns regular refs
|
| -// and supports compatibility checks and changing local coords. The second is for GrOptDrawState,
|
| -// is immutable, and only owns pending execution refs. This requries removing the common base
|
| -// class from GrDrawState and GrOptDrawState called GrRODrawState and converting to GrOptDrawState
|
| -// when draws are enqueued in the GrInOrderDrawBuffer.
|
| +/**
|
| + * Wraps a GrFragmentProcessor. It also contains a coord change matrix. This matrix should be
|
| + * concat'ed with all the processor's coord transforms that apply to local coords, unless
|
| + * explicit local coords are provided with the draw.
|
| + */
|
| class GrFragmentStage {
|
| public:
|
| explicit GrFragmentStage(const GrFragmentProcessor* proc)
|
| @@ -35,9 +28,9 @@ public:
|
| if (other.fCoordChangeMatrixSet) {
|
| fCoordChangeMatrix = other.fCoordChangeMatrix;
|
| }
|
| - fProc.initAndRef(other.fProc);
|
| + fProc.reset(SkRef(other.fProc.get()));
|
| }
|
| -
|
| +
|
| static bool AreCompatible(const GrFragmentStage& a, const GrFragmentStage& b,
|
| bool usingExplicitLocalCoords) {
|
| SkASSERT(a.fProc.get());
|
| @@ -129,33 +122,12 @@ public:
|
| }
|
| }
|
|
|
| - bool isPerspectiveCoordTransform(int matrixIndex, bool useExplicitLocalCoords) const {
|
| - const GrCoordTransform& coordTransform = this->getProcessor()->coordTransform(matrixIndex);
|
| - SkMatrix::TypeMask type0 = coordTransform.getMatrix().getType();
|
| - SkMatrix::TypeMask type1 = SkMatrix::kIdentity_Mask;
|
| - if (kLocal_GrCoordSet == coordTransform.sourceCoords()) {
|
| - type1 = useExplicitLocalCoords ?
|
| - SkMatrix::kIdentity_Mask : this->getCoordChangeMatrix().getType();
|
| - }
|
| -
|
| - int combinedTypes = type0 | type1;
|
| - if (SkMatrix::kPerspective_Mask & combinedTypes) {
|
| - return true;
|
| - } else {
|
| - return false;
|
| - }
|
| - }
|
| -
|
| - const char* name() const { return fProc->name(); }
|
| -
|
| const GrFragmentProcessor* getProcessor() const { return fProc.get(); }
|
|
|
| - void convertToPendingExec() { fProc.convertToPendingExec(); }
|
| -
|
| protected:
|
| - bool fCoordChangeMatrixSet;
|
| - SkMatrix fCoordChangeMatrix;
|
| - GrProgramElementRef<const GrFragmentProcessor> fProc;
|
| + bool fCoordChangeMatrixSet;
|
| + SkMatrix fCoordChangeMatrix;
|
| + SkAutoTUnref<const GrFragmentProcessor> fProc;
|
| };
|
|
|
| #endif
|
|
|