| Index: src/gpu/gl/GrGLProgram.cpp | 
| diff --git a/src/gpu/gl/GrGLProgram.cpp b/src/gpu/gl/GrGLProgram.cpp | 
| index c270858ec3cf82b3ed1b4184b849c550f0ae85db..6a433e17c5a5bbd4228402a179d4a3a9c3b51236 100644 | 
| --- a/src/gpu/gl/GrGLProgram.cpp | 
| +++ b/src/gpu/gl/GrGLProgram.cpp | 
| @@ -31,11 +31,11 @@ | 
| const BuiltinUniformHandles& builtinUniforms, | 
| GrGLuint programID, | 
| const UniformInfoArray& uniforms, | 
| -                         const SkTArray<GrGLSampler>& samplers, | 
| const VaryingInfoArray& pathProcVaryings, | 
| GrGLSLPrimitiveProcessor* geometryProcessor, | 
| GrGLSLXferProcessor* xferProcessor, | 
| -                         const GrGLSLFragProcs& fragmentProcessors) | 
| +                         const GrGLSLFragProcs& fragmentProcessors, | 
| +                         SkTArray<UniformHandle>* passSamplerUniforms) | 
| : fBuiltinUniformHandles(builtinUniforms) | 
| , fProgramID(programID) | 
| , fGeometryProcessor(geometryProcessor) | 
| @@ -44,9 +44,12 @@ | 
| , fDesc(desc) | 
| , fGpu(gpu) | 
| , fProgramDataManager(gpu, programID, uniforms, pathProcVaryings) { | 
| +    fSamplerUniforms.swap(passSamplerUniforms); | 
| // Assign texture units to sampler uniforms one time up front. | 
| GL_CALL(UseProgram(fProgramID)); | 
| -    fProgramDataManager.setSamplers(samplers); | 
| +    for (int i = 0; i < fSamplerUniforms.count(); i++) { | 
| +        fProgramDataManager.setSampler(fSamplerUniforms[i], i); | 
| +    } | 
| } | 
|  | 
| GrGLProgram::~GrGLProgram() { | 
|  |