Fix incorrect sampler locations when using CHROMIUM_bind_uniform_location
authorkkinnunen <kkinnunen@nvidia.com>
Tue, 31 May 2016 05:30:24 +0000 (22:30 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 31 May 2016 05:30:24 +0000 (22:30 -0700)
Fix incorrect sampler locations when using
CHROMIUM_bind_uniform_location.

The extension is not used at the moment, though.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2023783002

Review-Url: https://codereview.chromium.org/2023783002

src/gpu/gl/GrGLUniformHandler.cpp

index c418926..c388e46 100644 (file)
@@ -85,14 +85,15 @@ void GrGLUniformHandler::appendUniformDecls(GrShaderFlags visibility, SkString*
 
 void GrGLUniformHandler::bindUniformLocations(GrGLuint programID, const GrGLCaps& caps) {
     if (caps.bindUniformLocationSupport()) {
-        int count = fUniforms.count();
-        for (int i = 0; i < count; ++i) {
+        int uniformCnt = fUniforms.count();
+        for (int i = 0; i < uniformCnt; ++i) {
             GL_CALL(BindUniformLocation(programID, i, fUniforms[i].fVariable.c_str()));
             fUniforms[i].fLocation = i;
         }
         for (int i = 0; i < fSamplers.count(); ++i) {
-            GL_CALL(BindUniformLocation(programID, i, fSamplers[i].fShaderVar.c_str()));
-            fSamplers[i].fLocation = i;
+            GrGLint location = i + uniformCnt;
+            GL_CALL(BindUniformLocation(programID, location, fSamplers[i].fShaderVar.c_str()));
+            fSamplers[i].fLocation = location;
         }
     }
 }