| Index: src/gpu/gl/GrGLShaderBuilder.h
|
| diff --git a/src/gpu/gl/GrGLShaderBuilder.h b/src/gpu/gl/GrGLShaderBuilder.h
|
| index d73a731a7cd9aaf52d7518d5dfb66413553740b8..a70a0b04a72f5f4f7eb1804048e8747ce705b8bb 100644
|
| --- a/src/gpu/gl/GrGLShaderBuilder.h
|
| +++ b/src/gpu/gl/GrGLShaderBuilder.h
|
| @@ -13,6 +13,7 @@
|
| #include "GrColor.h"
|
| #include "GrEffect.h"
|
| #include "SkTypes.h"
|
| +#include "gl/GrGLCoordTransform.h"
|
| #include "gl/GrGLSL.h"
|
| #include "gl/GrGLUniformManager.h"
|
|
|
| @@ -96,8 +97,10 @@ public:
|
| friend class GrGLShaderBuilder; // to call init().
|
| };
|
|
|
| + typedef SkTArray<GrGLCoordTransform::TransformedCoords> TransformedCoordsArray;
|
| typedef SkTArray<TextureSampler> TextureSamplerArray;
|
| typedef GrTAllocator<GrGLShaderVar> VarArray;
|
| + typedef GrBackendEffectFactory::EffectKey EffectKey;
|
|
|
| enum ShaderVisibility {
|
| kVertex_Visibility = 0x1,
|
| @@ -175,8 +178,7 @@ public:
|
| /** Generates a EffectKey for the shader code based on the texture access parameters and the
|
| capabilities of the GL context. This is useful for keying the shader programs that may
|
| have multiple representations, based on the type/format of textures used. */
|
| - static GrBackendEffectFactory::EffectKey KeyForTextureAccess(const GrTextureAccess&,
|
| - const GrGLCaps&);
|
| + static EffectKey KeyForTextureAccess(const GrTextureAccess&, const GrGLCaps&);
|
|
|
| typedef uint8_t DstReadKey;
|
| typedef uint8_t FragPosKey;
|
| @@ -225,6 +227,13 @@ public:
|
| return this->getUniformVariable(u).c_str();
|
| }
|
|
|
| + /**
|
| + * This returns a variable name to access the 2D, perspective correct version of the coords in
|
| + * the fragment shader. If the coordinates at index are 3-dimensional, it immediately emits a
|
| + * perspective divide into the fragment shader (xy / z) to convert them to 2D.
|
| + */
|
| + SkString ensureFSCoords2D(const TransformedCoordsArray&, int index);
|
| +
|
| /** Returns a variable name that represents the position of the fragment in the FS. The position
|
| is in device space (e.g. 0,0 is the top left and pixel centers are at half-integers). */
|
| const char* fragmentPosition();
|
| @@ -255,10 +264,11 @@ public:
|
| * effectStages.
|
| */
|
| void emitEffects(const GrEffectStage* effectStages[],
|
| - const GrBackendEffectFactory::EffectKey effectKeys[],
|
| + const EffectKey effectKeys[],
|
| int effectCnt,
|
| SkString* inOutFSColor,
|
| GrSLConstantVec* fsInOutColorKnownValue,
|
| + SkTArray<GrGLCoordTransform, false>* effectCoordTransformArrays[],
|
| SkTArray<GrGLUniformManager::UniformHandle, true>* effectSamplerHandles[],
|
| GrGLEffect* glEffects[]);
|
|
|
|
|