Allow GrEffects with multiple textures.
It will work as long as the total number of textures sis less than GrDrawState::kNumStages. That will be fixed in a follow up CL.
Review URL: https://codereview.appspot.com/7040052
git-svn-id: http://skia.googlecode.com/svn/trunk@7023 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/gl/GrGpuGL_program.cpp b/src/gpu/gl/GrGpuGL_program.cpp
index 5850fc4..3d9f0fe 100644
--- a/src/gpu/gl/GrGpuGL_program.cpp
+++ b/src/gpu/gl/GrGpuGL_program.cpp
@@ -151,7 +151,9 @@
SkScalarToFloat(m[SkMatrix::kMTransY]),
SkScalarToFloat(m[SkMatrix::kMPersp2])
};
- fCurrentProgram->fUniformManager.setMatrix3f(fCurrentProgram->fUniforms.fViewMatrixUni, mt);
+ fCurrentProgram->fUniformManager.setMatrix3f(
+ fCurrentProgram->fUniformHandles.fViewMatrixUni,
+ mt);
fCurrentProgram->fViewMatrix = vm;
fCurrentProgram->fViewportSize = viewportSize;
}
@@ -183,9 +185,10 @@
// OpenGL ES doesn't support unsigned byte varieties of glUniform
GrGLfloat c[4];
GrColorToRGBAFloat(color, c);
- GrAssert(kInvalidUniformHandle != fCurrentProgram->fUniforms.fColorUni);
- fCurrentProgram->fUniformManager.set4fv(fCurrentProgram->fUniforms.fColorUni,
- 0, 1, c);
+ GrAssert(kInvalidUniformHandle != fCurrentProgram->fUniformHandles.fColorUni);
+ fCurrentProgram->fUniformManager.set4fv(
+ fCurrentProgram->fUniformHandles.fColorUni,
+ 0, 1, c);
fCurrentProgram->fColor = color;
}
break;
@@ -196,7 +199,7 @@
GrCrash("Unknown color type.");
}
}
- UniformHandle filterColorUni = fCurrentProgram->fUniforms.fColorFilterUni;
+ UniformHandle filterColorUni = fCurrentProgram->fUniformHandles.fColorFilterUni;
if (kInvalidUniformHandle != filterColorUni &&
fCurrentProgram->fColorFilterColor != drawState.getColorFilterColor()) {
GrGLfloat c[4];
@@ -234,9 +237,11 @@
// glUniform
GrGLfloat c[4];
GrColorToRGBAFloat(coverage, c);
- GrAssert(kInvalidUniformHandle != fCurrentProgram->fUniforms.fCoverageUni);
- fCurrentProgram->fUniformManager.set4fv(fCurrentProgram->fUniforms.fCoverageUni,
- 0, 1, c);
+ GrAssert(kInvalidUniformHandle !=
+ fCurrentProgram->fUniformHandles.fCoverageUni);
+ fCurrentProgram->fUniformManager.set4fv(
+ fCurrentProgram->fUniformHandles.fCoverageUni,
+ 0, 1, c);
fCurrentProgram->fCoverage = coverage;
}
break;
@@ -302,13 +307,7 @@
this->flushColor(color);
this->flushCoverage(coverage);
- fCurrentProgram->setData(drawState);
-
- for (int s = 0; s < GrDrawState::kNumStages; ++s) {
- if (this->isStageEnabled(s)) {
- this->flushBoundTextureAndParams(s);
- }
- }
+ fCurrentProgram->setData(this);
}
this->flushStencil(type);
this->flushViewMatrix(type);
@@ -318,8 +317,7 @@
GrIRect* devRect = NULL;
GrIRect devClipBounds;
if (drawState.isClipState()) {
- fClip->getConservativeBounds(drawState.getRenderTarget(),
- &devClipBounds);
+ fClip->getConservativeBounds(drawState.getRenderTarget(), &devClipBounds);
devRect = &devClipBounds;
}
// This must come after textures are flushed because a texture may need