void GrGLUniformHandler::bindUniformLocations(GrGLuint programID, const GrGLCaps& caps) { if (caps.bindUniformLocationSupport()) { int count = fUniforms.count(); for (int i = 0; i < count; ++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; } } }
void GrGLProgramBuilder::bindUniformLocations(GrGLuint programID) { int count = fUniforms.count(); for (int i = 0; i < count; ++i) { GL_CALL(BindUniformLocation(programID, i, fUniforms[i].fVariable.c_str())); fUniforms[i].fLocation = i; } }
void GrGLUniformHandler::bindUniformLocations(GrGLuint programID, const GrGLCaps& caps) { if (caps.bindUniformLocationSupport()) { int currUniform = 0; for (int i = 0; i < fUniforms.count(); ++i, ++currUniform) { GL_CALL(BindUniformLocation(programID, currUniform, fUniforms[i].fVariable.c_str())); fUniforms[i].fLocation = currUniform; } for (int i = 0; i < fSamplers.count(); ++i, ++currUniform) { GL_CALL(BindUniformLocation(programID, currUniform, fSamplers[i].fVariable.c_str())); fSamplers[i].fLocation = currUniform; } for (int i = 0; i < fTexelBuffers.count(); ++i, ++currUniform) { GL_CALL(BindUniformLocation(programID, currUniform, fTexelBuffers[i].fVariable.c_str())); fTexelBuffers[i].fLocation = currUniform; } for (int i = 0; i < fImageStorages.count(); ++i, ++currUniform) { GL_CALL(BindUniformLocation(programID, currUniform, fImageStorages[i].fVariable.c_str())); fImageStorages[i].fLocation = currUniform; } } }
void GrGLShaderBuilder::bindProgramLocations(GrGLuint programId) { if (fHasCustomColorOutput) { GL_CALL(BindFragDataLocation(programId, 0, declared_color_output_name())); } if (fHasSecondaryOutput) { GL_CALL(BindFragDataLocationIndexed(programId, 0, 1, dual_source_output_name())); } // skbug.com/2056 bool usingBindUniform = fGpu->glInterface()->fFunctions.fBindUniformLocation != NULL; if (usingBindUniform) { int count = fUniforms.count(); for (int i = 0; i < count; ++i) { GL_CALL(BindUniformLocation(programId, i, fUniforms[i].fVariable.c_str())); fUniforms[i].fLocation = i; } } }