Repurpose GrGLCoordTransform as GrGLProgramEffects
Creates a GrGLProgramEffects class that the GrGLProgram uses to manage
an array of effects. This gives us enough abstraction for the program
to cleanly handle different types of coord transforms.
R=bsalomon@google.com
Author: cdalton@nvidia.com
Review URL: https://codereview.chromium.org/25605008
git-svn-id: http://skia.googlecode.com/svn/trunk@11588 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/gl/GrGLProgram.h b/src/gpu/gl/GrGLProgram.h
index 4412309..c8bcbf4 100644
--- a/src/gpu/gl/GrGLProgram.h
+++ b/src/gpu/gl/GrGLProgram.h
@@ -11,7 +11,6 @@
#include "GrDrawState.h"
#include "GrGLContext.h"
-#include "GrGLCoordTransform.h"
#include "GrGLProgramDesc.h"
#include "GrGLShaderBuilder.h"
#include "GrGLSL.h"
@@ -23,6 +22,7 @@
class GrBinHashKeyBuilder;
class GrGLEffect;
+class GrGLProgramEffects;
class GrGLShaderBuilder;
/**
@@ -149,19 +149,6 @@
UniformHandle fDstCopySamplerUni;
};
- typedef SkSTArray<4, GrGLCoordTransform, false> CoordTransformSArray;
- typedef SkSTArray<4, UniformHandle, true> SamplerUniSArray;
- typedef SkSTArray<4, int, true> TextureUnitSArray;
-
- struct EffectAndSamplers {
- EffectAndSamplers() : fGLEffect(NULL) {}
- ~EffectAndSamplers() { delete fGLEffect; }
- GrGLEffect* fGLEffect;
- CoordTransformSArray fCoordTransforms;
- SamplerUniSArray fSamplerUnis; // sampler uni handles for effect's GrTextureAccess
- TextureUnitSArray fTextureUnits; // texture unit used for each entry of fSamplerUnis
- };
-
GrGLProgram(GrGpuGL* gpu,
const GrGLProgramDesc& desc,
const GrEffectStage* colorStages[],
@@ -177,10 +164,6 @@
// Sets the texture units for samplers
void initSamplerUniforms();
- void initEffectSamplerUniforms(EffectAndSamplers* effect, int* texUnitIdx);
-
- // Helper for setData().
- void setEffectData(const GrEffectStage& stage, EffectAndSamplers& effect);
// Helper for setData(). Makes GL calls to specify the initial color when there is not
// per-vertex colors.
@@ -197,20 +180,20 @@
GrGLuint fProgramID;
// these reflect the current values of uniforms (GL uniform values travel with program)
- MatrixState fMatrixState;
- GrColor fColor;
- GrColor fCoverage;
- GrColor fColorFilterColor;
- int fDstCopyTexUnit;
+ MatrixState fMatrixState;
+ GrColor fColor;
+ GrColor fCoverage;
+ GrColor fColorFilterColor;
+ int fDstCopyTexUnit;
- SkTArray<EffectAndSamplers> fColorEffects;
- SkTArray<EffectAndSamplers> fCoverageEffects;
+ SkAutoTDelete<GrGLProgramEffects> fColorEffects;
+ SkAutoTDelete<GrGLProgramEffects> fCoverageEffects;
- GrGLProgramDesc fDesc;
- GrGpuGL* fGpu;
+ GrGLProgramDesc fDesc;
+ GrGpuGL* fGpu;
- GrGLUniformManager fUniformManager;
- UniformHandles fUniformHandles;
+ GrGLUniformManager fUniformManager;
+ UniformHandles fUniformHandles;
typedef SkRefCnt INHERITED;
};