Revert r6330 thru 6333 while we figure out what to do about Intel bots (possible driver bug).
git-svn-id: http://skia.googlecode.com/svn/trunk@6037 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrAAHairLinePathRenderer.cpp b/src/gpu/GrAAHairLinePathRenderer.cpp
index 411b0e3..06d8e71 100644
--- a/src/gpu/GrAAHairLinePathRenderer.cpp
+++ b/src/gpu/GrAAHairLinePathRenderer.cpp
@@ -458,7 +458,16 @@
if (orthVec.setLength(SK_Scalar1)) {
orthVec.setOrthog(orthVec);
- SkScalar lineC = -(a.dot(orthVec));
+ // the values we pass down to the frag shader
+ // have to be in y-points-up space;
+ SkVector normal;
+ normal.fX = orthVec.fX;
+ normal.fY = -orthVec.fY;
+ SkPoint aYDown;
+ aYDown.fX = a.fX;
+ aYDown.fY = rtHeight - a.fY;
+
+ SkScalar lineC = -(aYDown.dot(normal));
for (int i = 0; i < kVertsPerLineSeg; ++i) {
(*vert)[i].fPos = (i < 2) ? a : b;
if (0 == i || 3 == i) {
@@ -466,8 +475,8 @@
} else {
(*vert)[i].fPos += orthVec;
}
- (*vert)[i].fLine.fA = orthVec.fX;
- (*vert)[i].fLine.fB = orthVec.fY;
+ (*vert)[i].fLine.fA = normal.fX;
+ (*vert)[i].fLine.fB = normal.fY;
(*vert)[i].fLine.fC = lineC;
}
if (NULL != toSrc) {
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index e729e6d..81f9717 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -1061,7 +1061,9 @@
verts[3].fPos = SkPoint::Make(R, B);
for (int i = 0; i < 4; ++i) {
- verts[i].fCenter = center;
+ // this goes to fragment shader, it should be in y-points-up space.
+ verts[i].fCenter = SkPoint::Make(center.fX, rt->height() - center.fY);
+
verts[i].fOuterRadius = outerRadius;
verts[i].fInnerRadius = innerRadius;
}
diff --git a/src/gpu/effects/GrConvolutionEffect.cpp b/src/gpu/effects/GrConvolutionEffect.cpp
index d775082..c189ec0 100644
--- a/src/gpu/effects/GrConvolutionEffect.cpp
+++ b/src/gpu/effects/GrConvolutionEffect.cpp
@@ -28,7 +28,10 @@
const char* inputColor,
const TextureSamplerArray&) SK_OVERRIDE;
- virtual void setData(const GrGLUniformManager& uman, const GrCustomStage&) SK_OVERRIDE;
+ virtual void setData(const GrGLUniformManager& uman,
+ const GrCustomStage&,
+ const GrRenderTarget*,
+ int stageNum) SK_OVERRIDE;
static inline StageKey GenKey(const GrCustomStage&, const GrGLCaps&);
@@ -88,7 +91,10 @@
GrGLSLMulVarBy4f(&builder->fFSCode, 2, outputColor, inputColor);
}
-void GrGLConvolutionEffect::setData(const GrGLUniformManager& uman, const GrCustomStage& data) {
+void GrGLConvolutionEffect::setData(const GrGLUniformManager& uman,
+ const GrCustomStage& data,
+ const GrRenderTarget*,
+ int stageNum) {
const GrConvolutionEffect& conv =
static_cast<const GrConvolutionEffect&>(data);
GrTexture& texture = *data.texture(0);
diff --git a/src/gpu/effects/GrTextureDomainEffect.cpp b/src/gpu/effects/GrTextureDomainEffect.cpp
index 219a752..c00f40f 100644
--- a/src/gpu/effects/GrTextureDomainEffect.cpp
+++ b/src/gpu/effects/GrTextureDomainEffect.cpp
@@ -22,7 +22,10 @@
const char* inputColor,
const TextureSamplerArray&) SK_OVERRIDE;
- virtual void setData(const GrGLUniformManager&, const GrCustomStage&) SK_OVERRIDE;
+ virtual void setData(const GrGLUniformManager&,
+ const GrCustomStage&,
+ const GrRenderTarget*,
+ int stageNum) SK_OVERRIDE;
static inline StageKey GenKey(const GrCustomStage&, const GrGLCaps&) { return 0; }
@@ -60,7 +63,10 @@
builder->fFSCode.append(";\n");
}
-void GrGLTextureDomainEffect::setData(const GrGLUniformManager& uman, const GrCustomStage& data) {
+void GrGLTextureDomainEffect::setData(const GrGLUniformManager& uman,
+ const GrCustomStage& data,
+ const GrRenderTarget*,
+ int stageNum) {
const GrTextureDomainEffect& effect = static_cast<const GrTextureDomainEffect&>(data);
const GrRect& domain = effect.domain();
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
index 646961b..52c480a 100644
--- a/src/gpu/gl/GrGLCaps.cpp
+++ b/src/gpu/gl/GrGLCaps.cpp
@@ -36,7 +36,6 @@
fTextureRedSupport = false;
fImagingSupport = false;
fTwoFormatLimit = false;
- fFragCoordsConventionSupport = false;
}
GrGLCaps::GrGLCaps(const GrGLCaps& caps) {
@@ -66,7 +65,6 @@
fTextureRedSupport = caps.fTextureRedSupport;
fImagingSupport = caps.fImagingSupport;
fTwoFormatLimit = caps.fTwoFormatLimit;
- fFragCoordsConventionSupport = caps.fFragCoordsConventionSupport;
return *this;
}
@@ -160,9 +158,6 @@
// can change based on which render target is bound
fTwoFormatLimit = kES2_GrGLBinding == binding;
- fFragCoordsConventionSupport = ctxInfo.glslGeneration() >= k150_GrGLSLGeneration ||
- ctxInfo.hasExtension("GL_ARB_fragment_coord_conventions");
-
this->initFSAASupport(ctxInfo);
this->initStencilFormats(ctxInfo);
}
diff --git a/src/gpu/gl/GrGLCaps.h b/src/gpu/gl/GrGLCaps.h
index 9dfbf23..1cc50c2 100644
--- a/src/gpu/gl/GrGLCaps.h
+++ b/src/gpu/gl/GrGLCaps.h
@@ -216,9 +216,6 @@
/// Is GL_ARB_IMAGING supported
bool imagingSupport() const { return fImagingSupport; }
- /// Is GL_ARB_fragment_coord_conventions supported?
- bool fragCoordConventionsSupport() const { return fFragCoordsConventionSupport; }
-
// Does ReadPixels support the provided format/type combo?
bool readPixelsSupported(const GrGLInterface* intf,
GrGLenum format,
@@ -296,7 +293,6 @@
bool fTextureRedSupport : 1;
bool fImagingSupport : 1;
bool fTwoFormatLimit : 1;
- bool fFragCoordsConventionSupport : 1;
};
#endif
diff --git a/src/gpu/gl/GrGLProgram.cpp b/src/gpu/gl/GrGLProgram.cpp
index aca42f7..066da35 100644
--- a/src/gpu/gl/GrGLProgram.cpp
+++ b/src/gpu/gl/GrGLProgram.cpp
@@ -77,7 +77,6 @@
fViewportSize.set(-1, -1);
fColor = GrColor_ILLEGAL;
fColorFilterColor = GrColor_ILLEGAL;
- fRTHeight = -1;
for (int s = 0; s < GrDrawState::kNumStages; ++s) {
fProgramStage[s] = NULL;
@@ -235,57 +234,56 @@
}
bool GrGLProgram::genEdgeCoverage(SkString* coverageVar,
- GrGLShaderBuilder* builder) const {
+ GrGLShaderBuilder* segments) const {
if (fDesc.fVertexLayout & GrDrawTarget::kEdge_VertexLayoutBit) {
const char *vsName, *fsName;
- builder->addVarying(kVec4f_GrSLType, "Edge", &vsName, &fsName);
- builder->fVSAttrs.push_back().set(kVec4f_GrSLType,
- GrGLShaderVar::kAttribute_TypeModifier,
- EDGE_ATTR_NAME);
- builder->fVSCode.appendf("\t%s = " EDGE_ATTR_NAME ";\n", vsName);
+ segments->addVarying(kVec4f_GrSLType, "Edge", &vsName, &fsName);
+ segments->fVSAttrs.push_back().set(kVec4f_GrSLType,
+ GrGLShaderVar::kAttribute_TypeModifier, EDGE_ATTR_NAME);
+ segments->fVSCode.appendf("\t%s = " EDGE_ATTR_NAME ";\n", vsName);
switch (fDesc.fVertexEdgeType) {
case GrDrawState::kHairLine_EdgeType:
- builder->fFSCode.appendf("\tfloat edgeAlpha = abs(dot(vec3(%s.xy,1), %s.xyz));\n", builder->fragmentPosition(), fsName);
- builder->fFSCode.append("\tedgeAlpha = max(1.0 - edgeAlpha, 0.0);\n");
+ segments->fFSCode.appendf("\tfloat edgeAlpha = abs(dot(vec3(gl_FragCoord.xy,1), %s.xyz));\n", fsName);
+ segments->fFSCode.append("\tedgeAlpha = max(1.0 - edgeAlpha, 0.0);\n");
break;
case GrDrawState::kQuad_EdgeType:
- builder->fFSCode.append("\tfloat edgeAlpha;\n");
+ segments->fFSCode.append("\tfloat edgeAlpha;\n");
// keep the derivative instructions outside the conditional
- builder->fFSCode.appendf("\tvec2 duvdx = dFdx(%s.xy);\n", fsName);
- builder->fFSCode.appendf("\tvec2 duvdy = dFdy(%s.xy);\n", fsName);
- builder->fFSCode.appendf("\tif (%s.z > 0.0 && %s.w > 0.0) {\n", fsName, fsName);
+ segments->fFSCode.appendf("\tvec2 duvdx = dFdx(%s.xy);\n", fsName);
+ segments->fFSCode.appendf("\tvec2 duvdy = dFdy(%s.xy);\n", fsName);
+ segments->fFSCode.appendf("\tif (%s.z > 0.0 && %s.w > 0.0) {\n", fsName, fsName);
// today we know z and w are in device space. We could use derivatives
- builder->fFSCode.appendf("\t\tedgeAlpha = min(min(%s.z, %s.w) + 0.5, 1.0);\n", fsName, fsName);
- builder->fFSCode.append ("\t} else {\n");
- builder->fFSCode.appendf("\t\tvec2 gF = vec2(2.0*%s.x*duvdx.x - duvdx.y,\n"
- "\t\t 2.0*%s.x*duvdy.x - duvdy.y);\n",
- fsName, fsName);
- builder->fFSCode.appendf("\t\tedgeAlpha = (%s.x*%s.x - %s.y);\n", fsName, fsName, fsName);
- builder->fFSCode.append("\t\tedgeAlpha = clamp(0.5 - edgeAlpha / length(gF), 0.0, 1.0);\n"
- "\t}\n");
+ segments->fFSCode.appendf("\t\tedgeAlpha = min(min(%s.z, %s.w) + 0.5, 1.0);\n", fsName, fsName);
+ segments->fFSCode.append ("\t} else {\n");
+ segments->fFSCode.appendf("\t\tvec2 gF = vec2(2.0*%s.x*duvdx.x - duvdx.y,\n"
+ "\t\t 2.0*%s.x*duvdy.x - duvdy.y);\n",
+ fsName, fsName);
+ segments->fFSCode.appendf("\t\tedgeAlpha = (%s.x*%s.x - %s.y);\n", fsName, fsName, fsName);
+ segments->fFSCode.append("\t\tedgeAlpha = clamp(0.5 - edgeAlpha / length(gF), 0.0, 1.0);\n"
+ "\t}\n");
if (kES2_GrGLBinding == fContextInfo.binding()) {
- builder->fHeader.printf("#extension GL_OES_standard_derivatives: enable\n");
+ segments->fHeader.printf("#extension GL_OES_standard_derivatives: enable\n");
}
break;
case GrDrawState::kHairQuad_EdgeType:
- builder->fFSCode.appendf("\tvec2 duvdx = dFdx(%s.xy);\n", fsName);
- builder->fFSCode.appendf("\tvec2 duvdy = dFdy(%s.xy);\n", fsName);
- builder->fFSCode.appendf("\tvec2 gF = vec2(2.0*%s.x*duvdx.x - duvdx.y,\n"
- "\t 2.0*%s.x*duvdy.x - duvdy.y);\n",
- fsName, fsName);
- builder->fFSCode.appendf("\tfloat edgeAlpha = (%s.x*%s.x - %s.y);\n", fsName, fsName, fsName);
- builder->fFSCode.append("\tedgeAlpha = sqrt(edgeAlpha*edgeAlpha / dot(gF, gF));\n");
- builder->fFSCode.append("\tedgeAlpha = max(1.0 - edgeAlpha, 0.0);\n");
+ segments->fFSCode.appendf("\tvec2 duvdx = dFdx(%s.xy);\n", fsName);
+ segments->fFSCode.appendf("\tvec2 duvdy = dFdy(%s.xy);\n", fsName);
+ segments->fFSCode.appendf("\tvec2 gF = vec2(2.0*%s.x*duvdx.x - duvdx.y,\n"
+ "\t 2.0*%s.x*duvdy.x - duvdy.y);\n",
+ fsName, fsName);
+ segments->fFSCode.appendf("\tfloat edgeAlpha = (%s.x*%s.x - %s.y);\n", fsName, fsName, fsName);
+ segments->fFSCode.append("\tedgeAlpha = sqrt(edgeAlpha*edgeAlpha / dot(gF, gF));\n");
+ segments->fFSCode.append("\tedgeAlpha = max(1.0 - edgeAlpha, 0.0);\n");
if (kES2_GrGLBinding == fContextInfo.binding()) {
- builder->fHeader.printf("#extension GL_OES_standard_derivatives: enable\n");
+ segments->fHeader.printf("#extension GL_OES_standard_derivatives: enable\n");
}
break;
case GrDrawState::kCircle_EdgeType:
- builder->fFSCode.append("\tfloat edgeAlpha;\n");
- builder->fFSCode.appendf("\tfloat d = distance(%s.xy, %s.xy);\n", builder->fragmentPosition(), fsName);
- builder->fFSCode.appendf("\tfloat outerAlpha = smoothstep(d - 0.5, d + 0.5, %s.z);\n", fsName);
- builder->fFSCode.appendf("\tfloat innerAlpha = %s.w == 0.0 ? 1.0 : smoothstep(%s.w - 0.5, %s.w + 0.5, d);\n", fsName, fsName, fsName);
- builder->fFSCode.append("\tedgeAlpha = outerAlpha * innerAlpha;\n");
+ segments->fFSCode.append("\tfloat edgeAlpha;\n");
+ segments->fFSCode.appendf("\tfloat d = distance(gl_FragCoord.xy, %s.xy);\n", fsName);
+ segments->fFSCode.appendf("\tfloat outerAlpha = smoothstep(d - 0.5, d + 0.5, %s.z);\n", fsName);
+ segments->fFSCode.appendf("\tfloat innerAlpha = %s.w == 0.0 ? 1.0 : smoothstep(%s.w - 0.5, %s.w + 0.5, d);\n", fsName, fsName, fsName);
+ segments->fFSCode.append("\tedgeAlpha = outerAlpha * innerAlpha;\n");
break;
default:
GrCrash("Unknown Edge Type!");
@@ -809,7 +807,6 @@
builder.finished(fProgramID);
this->initSamplerUniforms();
- fUniforms.fRTHeight = builder.getRTHeightUniform();
return true;
}
@@ -967,17 +964,15 @@
return glStage;
}
-void GrGLProgram::setData(const GrDrawState& drawState) {
- int rtHeight = drawState.getRenderTarget()->height();
- if (GrGLUniformManager::kInvalidUniformHandle != fUniforms.fRTHeight && fRTHeight != rtHeight) {
- fUniformManager.set1f(fUniforms.fRTHeight, GrIntToScalar(rtHeight));
- fRTHeight = rtHeight;
- }
+void GrGLProgram::setData(const GrDrawState& drawState) const {
for (int s = 0; s < GrDrawState::kNumStages; ++s) {
if (NULL != fProgramStage[s]) {
const GrSamplerState& sampler = drawState.getSampler(s);
GrAssert(NULL != sampler.getCustomStage());
- fProgramStage[s]->setData(fUniformManager, *sampler.getCustomStage());
+ fProgramStage[s]->setData(fUniformManager,
+ *sampler.getCustomStage(),
+ drawState.getRenderTarget(),
+ s);
}
}
}
diff --git a/src/gpu/gl/GrGLProgram.h b/src/gpu/gl/GrGLProgram.h
index dd3378b..5f504f2 100644
--- a/src/gpu/gl/GrGLProgram.h
+++ b/src/gpu/gl/GrGLProgram.h
@@ -72,7 +72,7 @@
* This function uploads uniforms and calls each GrCustomStage's setData. It is called before a
* draw occurs using the program after the program has already been bound.
*/
- void setData(const GrDrawState& drawState);
+ void setData(const GrDrawState& drawState) const;
// Parameters that affect code generation
// These structs should be kept compact; they are the input to an
@@ -221,16 +221,12 @@
UniformHandle fColorUni;
UniformHandle fCoverageUni;
UniformHandle fColorFilterUni;
- // We use the render target height to provide a y-down frag coord when specifying
- // origin_upper_left is not supported.
- UniformHandle fRTHeight;
StageUniforms fStages[GrDrawState::kNumStages];
Uniforms() {
fViewMatrixUni = GrGLUniformManager::kInvalidUniformHandle;
fColorUni = GrGLUniformManager::kInvalidUniformHandle;
fCoverageUni = GrGLUniformManager::kInvalidUniformHandle;
fColorFilterUni = GrGLUniformManager::kInvalidUniformHandle;
- fRTHeight = GrGLUniformManager::kInvalidUniformHandle;
}
};
@@ -250,7 +246,6 @@
GrColor fColor;
GrColor fCoverage;
GrColor fColorFilterColor;
- int fRTHeight;
/// When it is sent to GL, the texture matrix will be flipped if the texture orientation
/// (below) requires.
GrMatrix fTextureMatrices[GrDrawState::kNumStages];
diff --git a/src/gpu/gl/GrGLProgramStage.cpp b/src/gpu/gl/GrGLProgramStage.cpp
index 8a70608..b7d0c65 100644
--- a/src/gpu/gl/GrGLProgramStage.cpp
+++ b/src/gpu/gl/GrGLProgramStage.cpp
@@ -21,7 +21,10 @@
}
-void GrGLProgramStage::setData(const GrGLUniformManager&, const GrCustomStage&) {
+void GrGLProgramStage::setData(const GrGLUniformManager&,
+ const GrCustomStage&,
+ const GrRenderTarget*,
+ int stageNum) {
}
GrGLProgramStage::StageKey GrGLProgramStage::GenTextureKey(const GrCustomStage& stage,
diff --git a/src/gpu/gl/GrGLProgramStage.h b/src/gpu/gl/GrGLProgramStage.h
index 2cb5ae5..28d3f49 100644
--- a/src/gpu/gl/GrGLProgramStage.h
+++ b/src/gpu/gl/GrGLProgramStage.h
@@ -73,7 +73,10 @@
that produces the same stage key; this function reads data from
a stage and uploads any uniform variables required by the shaders
created in emit*(). */
- virtual void setData(const GrGLUniformManager&, const GrCustomStage& stage);
+ virtual void setData(const GrGLUniformManager&,
+ const GrCustomStage& stage,
+ const GrRenderTarget* renderTarget,
+ int stageNum);
const char* name() const { return fFactory.name(); }
diff --git a/src/gpu/gl/GrGLShaderBuilder.cpp b/src/gpu/gl/GrGLShaderBuilder.cpp
index 677916e..3ce118c 100644
--- a/src/gpu/gl/GrGLShaderBuilder.cpp
+++ b/src/gpu/gl/GrGLShaderBuilder.cpp
@@ -93,15 +93,13 @@
, fContext(ctx)
, fUniformManager(uniformManager)
, fCurrentStage(kNonStageIdx)
- , fSetupFragPosition(false)
- , fRTHeightUniform(GrGLUniformManager::kInvalidUniformHandle)
, fTexCoordVaryingType(kVoid_GrSLType) {
}
void GrGLShaderBuilder::setupTextureAccess(const char* varyingFSName, GrSLType varyingType) {
// FIXME: We don't know how the custom stage will manipulate the coords. So we give up on using
// projective texturing and always give the stage 2D coords. This will be fixed when custom
- // stages are responsible for setting up their own tex coords / tex matrices.
+ // stages are repsonsible for setting up their own tex coords / tex matrices.
switch (varyingType) {
case kVec2f_GrSLType:
fDefaultTexCoordsName = varyingFSName;
@@ -285,40 +283,6 @@
}
}
-const char* GrGLShaderBuilder::fragmentPosition() {
- if (fContext.caps().fragCoordConventionsSupport()) {
- if (!fSetupFragPosition) {
- fFSHeader.printf("#extension GL_ARB_fragment_coord_conventions: enable\n");
- fFSHeader.append("layout(origin_upper_left) in vec4 gl_FragCoord;\n");
- fSetupFragPosition = true;
- }
- return "gl_FragCoord";
- } else {
- static const char* kCoordName = "fragCoordYDown";
- if (!fSetupFragPosition) {
- GrAssert(GrGLUniformManager::kInvalidUniformHandle == fRTHeightUniform);
- const char* rtHeightName;
-
- // temporarily change the stage index because we're inserting a uniform whose name
- // shouldn't be mangled to be stage-specific.
- int oldStageIdx = fCurrentStage;
- fCurrentStage = kNonStageIdx;
- fRTHeightUniform = this->addUniform(kFragment_ShaderType,
- kFloat_GrSLType,
- "RTHeight",
- &rtHeightName);
- fCurrentStage = oldStageIdx;
-
- this->fFSCode.prependf("\tvec4 %s = vec4(gl_FragCoord.x, %s - gl_FragCoord.y, gl_FragCoord.zw);\n",
- kCoordName, rtHeightName);
- fSetupFragPosition = true;
- }
- GrAssert(GrGLUniformManager::kInvalidUniformHandle != fRTHeightUniform);
- return kCoordName;
- }
-}
-
-
void GrGLShaderBuilder::emitFunction(ShaderType shader,
GrSLType returnType,
const char* name,
@@ -417,7 +381,6 @@
append_default_precision_qualifier(kDefaultFragmentPrecision,
fContext.binding(),
shaderStr);
- shaderStr->append(fFSHeader);
this->appendUniformDecls(kFragment_ShaderType, shaderStr);
this->appendDecls(fFSInputs, shaderStr);
// We shouldn't have declared outputs on 1.10
diff --git a/src/gpu/gl/GrGLShaderBuilder.h b/src/gpu/gl/GrGLShaderBuilder.h
index aa88cf2..f143af3 100644
--- a/src/gpu/gl/GrGLShaderBuilder.h
+++ b/src/gpu/gl/GrGLShaderBuilder.h
@@ -129,7 +129,7 @@
the generated shader code. This potentially allows greater reuse of cached shaders. */
static const GrGLenum* GetTexParamSwizzle(GrPixelConfig config, const GrGLCaps& caps);
- /** Add a uniform variable to the current program, that has visibility in one or more shaders.
+ /** Add a uniform variable to the current program, that has visibilty in one or more shaders.
visibility is a bitfield of ShaderType values indicating from which shaders the uniform
should be accessible. At least one bit must be set. Geometry shader uniforms are not
supported at this time. The actual uniform name will be mangled. If outName is not NULL then
@@ -151,7 +151,7 @@
const GrGLShaderVar& getUniformVariable(GrGLUniformManager::UniformHandle) const;
/**
- * Shortcut for getUniformVariable(u).c_str()
+ * Shorcut for getUniformVariable(u).c_str()
*/
const char* getUniformCStr(GrGLUniformManager::UniformHandle u) const {
return this->getUniformVariable(u).c_str();
@@ -165,10 +165,6 @@
const char** vsOutName = NULL,
const char** fsInName = NULL);
- /** 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();
-
/** Called after building is complete to get the final shader string. */
void getShader(ShaderType, SkString*) const;
@@ -184,8 +180,6 @@
void setCurrentStage(int stage) { fCurrentStage = stage; }
void setNonStage() { fCurrentStage = kNonStageIdx; }
- GrGLUniformManager::UniformHandle getRTHeightUniform() const { return fRTHeightUniform; }
-
private:
typedef GrTAllocator<GrGLShaderVar> VarArray;
@@ -217,14 +211,10 @@
kNonStageIdx = -1,
};
- const GrGLContextInfo& fContext;
- GrGLUniformManager& fUniformManager;
- int fCurrentStage;
- SkString fFSFunctions;
- SkString fFSHeader;
-
- bool fSetupFragPosition;
- GrGLUniformManager::UniformHandle fRTHeightUniform;
+ const GrGLContextInfo& fContext;
+ GrGLUniformManager& fUniformManager;
+ int fCurrentStage;
+ SkString fFSFunctions;
/// Per-stage settings - only valid while we're inside GrGLProgram::genStageCode().
//@{