| Index: gpu/command_buffer/service/program_manager.cc
|
| ===================================================================
|
| --- gpu/command_buffer/service/program_manager.cc (revision 250202)
|
| +++ gpu/command_buffer/service/program_manager.cc (working copy)
|
| @@ -522,6 +522,7 @@
|
| bool Program::Link(ShaderManager* manager,
|
| ShaderTranslator* vertex_translator,
|
| ShaderTranslator* fragment_translator,
|
| + Program::VaryingsPackingOption varyings_packing_option,
|
| const ShaderCacheCallback& shader_callback) {
|
| ClearLinkStatus();
|
| if (!CanLink()) {
|
| @@ -546,7 +547,7 @@
|
| set_log_info("Name conflicts between an uniform and an attribute");
|
| return false;
|
| }
|
| - if (!CheckVaryingsPacking()) {
|
| + if (!CheckVaryingsPacking(varyings_packing_option)) {
|
| set_log_info("Varyings over maximum register limit");
|
| return false;
|
| }
|
| @@ -1084,7 +1085,8 @@
|
| return false;
|
| }
|
|
|
| -bool Program::CheckVaryingsPacking() const {
|
| +bool Program::CheckVaryingsPacking(
|
| + Program::VaryingsPackingOption option) const {
|
| DCHECK(attached_shaders_[0] &&
|
| attached_shaders_[0]->shader_type() == GL_VERTEX_SHADER &&
|
| attached_shaders_[1] &&
|
| @@ -1099,13 +1101,14 @@
|
| for (ShaderTranslator::VariableMap::const_iterator iter =
|
| fragment_varyings->begin();
|
| iter != fragment_varyings->end(); ++iter) {
|
| - if (!iter->second.static_use)
|
| + if (!iter->second.static_use && option == kCountOnlyStaticallyUsed)
|
| continue;
|
| if (!IsBuiltInVarying(iter->first)) {
|
| ShaderTranslator::VariableMap::const_iterator vertex_iter =
|
| vertex_varyings->find(iter->first);
|
| if (vertex_iter == vertex_varyings->end() ||
|
| - !vertex_iter->second.static_use)
|
| + (!vertex_iter->second.static_use &&
|
| + option == kCountOnlyStaticallyUsed))
|
| continue;
|
| }
|
|
|
|
|