Add support for GL_ARB_texture_swizzle
Review URL: http://codereview.appspot.com/5347042/
git-svn-id: http://skia.googlecode.com/svn/trunk@2615 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrGLProgram.cpp b/src/gpu/GrGLProgram.cpp
index c538054..554a274 100644
--- a/src/gpu/GrGLProgram.cpp
+++ b/src/gpu/GrGLProgram.cpp
@@ -79,6 +79,7 @@
bool fUsesGS;
};
+typedef GrGLProgram::ProgramDesc::StageDesc StageDesc;
#if GR_GL_ATTRIBUTE_MATRICES
#define VIEW_MATRIX_NAME "aViewM"
@@ -548,12 +549,12 @@
}
}
-void genInputColor(GrGLProgram::ProgramDesc::ColorType colorType,
+void genInputColor(GrGLProgram::ProgramDesc::ColorInput colorInput,
GrGLProgram::CachedData* programData,
ShaderCodeSegments* segments,
GrStringBuilder* inColor) {
- switch (colorType) {
- case GrGLProgram::ProgramDesc::kAttribute_ColorType: {
+ switch (colorInput) {
+ case GrGLProgram::ProgramDesc::kAttribute_ColorInput: {
segments->fVSAttrs.push_back().set(GrGLShaderVar::kVec4f_Type,
COL_ATTR_NAME);
const char *vsName, *fsName;
@@ -561,16 +562,16 @@
segments->fVSCode.appendf("\t%s = " COL_ATTR_NAME ";\n", vsName);
*inColor = fsName;
} break;
- case GrGLProgram::ProgramDesc::kUniform_ColorType:
+ case GrGLProgram::ProgramDesc::kUniform_ColorInput:
segments->fFSUnis.push_back().set(GrGLShaderVar::kVec4f_Type,
COL_UNI_NAME);
programData->fUniLocations.fColorUni = kUseUniform;
*inColor = COL_UNI_NAME;
break;
- case GrGLProgram::ProgramDesc::kTransBlack_ColorType:
+ case GrGLProgram::ProgramDesc::kTransBlack_ColorInput:
GrAssert(!"needComputedColor should be false.");
break;
- case GrGLProgram::ProgramDesc::kSolidWhite_ColorType:
+ case GrGLProgram::ProgramDesc::kSolidWhite_ColorInput:
break;
default:
GrCrash("Unknown color type.");
@@ -655,7 +656,7 @@
// If we know the final color is going to be all zeros then we can
// simplify the color filter coeffecients. needComputedColor will then
// come out false below.
- if (ProgramDesc::kTransBlack_ColorType == fProgramDesc.fColorType) {
+ if (ProgramDesc::kTransBlack_ColorInput == fProgramDesc.fColorInput) {
colorCoeff = SkXfermode::kZero_Coeff;
if (SkXfermode::kDC_Coeff == uniformCoeff ||
SkXfermode::kDA_Coeff == uniformCoeff) {
@@ -698,7 +699,7 @@
GrStringBuilder inColor;
if (needComputedColor) {
- genInputColor((ProgramDesc::ColorType) fProgramDesc.fColorType,
+ genInputColor((ProgramDesc::ColorInput) fProgramDesc.fColorInput,
programData, &segments, &inColor);
}
@@ -762,7 +763,7 @@
// if have all ones or zeros for the "dst" input to the color filter then we
// may be able to make additional optimizations.
if (needColorFilterUniform && needComputedColor && !inColor.size()) {
- GrAssert(ProgramDesc::kSolidWhite_ColorType == fProgramDesc.fColorType);
+ GrAssert(ProgramDesc::kSolidWhite_ColorInput == fProgramDesc.fColorInput);
bool uniformCoeffIsZero = SkXfermode::kIDC_Coeff == uniformCoeff ||
SkXfermode::kIDA_Coeff == uniformCoeff;
if (uniformCoeffIsZero) {
@@ -791,7 +792,7 @@
if (inColor.size()) {
color = inColor.c_str();
} else {
- if (ProgramDesc::kSolidWhite_ColorType == fProgramDesc.fColorType) {
+ if (ProgramDesc::kSolidWhite_ColorInput == fProgramDesc.fColorInput) {
color = all_ones_vec(4);
} else {
color = all_zeros_vec(4);
@@ -1480,7 +1481,7 @@
}
void genConvolutionVS(int stageNum,
- const GrGLProgram::ProgramDesc::StageDesc& desc,
+ const StageDesc& desc,
ShaderCodeSegments* segments,
GrGLProgram::StageUniLocations* locations,
const char** kernelName,
@@ -1510,7 +1511,7 @@
}
void genConvolutionFS(int stageNum,
- const GrGLProgram::ProgramDesc::StageDesc& desc,
+ const StageDesc& desc,
ShaderCodeSegments* segments,
const char* samplerName,
const char* kernelName,
@@ -1634,7 +1635,7 @@
const char* kernelName = NULL;
const char* imageIncrementName = NULL;
- if (ProgramDesc::StageDesc::kConvolution_FetchMode == desc.fFetchMode) {
+ if (StageDesc::kConvolution_FetchMode == desc.fFetchMode) {
genConvolutionVS(stageNum, desc, segments, locations,
&kernelName, &imageIncrementName, varyingVSName);
}
@@ -1701,7 +1702,7 @@
};
const char* smear;
- if (desc.fModulation == StageDesc::kAlpha_Modulation) {
+ if (desc.fInputConfig == StageDesc::kAlphaOnly_InputConfig) {
smear = ".aaaa";
} else {
smear = "";
@@ -1733,7 +1734,7 @@
samplerName, texelSizeName, smear, fsOutColor,
texFunc, modulate, complexCoord, coordDims);
break;
- case ProgramDesc::StageDesc::kConvolution_FetchMode:
+ case StageDesc::kConvolution_FetchMode:
genConvolutionFS(stageNum, desc, segments,
samplerName, kernelName, smear, imageIncrementName, fsOutColor,
sampleCoords, texFunc, modulate);