| Index: gpu/command_buffer/service/shader_manager.cc
|
| diff --git a/gpu/command_buffer/service/shader_manager.cc b/gpu/command_buffer/service/shader_manager.cc
|
| index 342a47697ed17592a10578f4ff12d231e516ad98..22df5f7fef0f4c9b4ed1743bc07e2432cca5143d 100644
|
| --- a/gpu/command_buffer/service/shader_manager.cc
|
| +++ b/gpu/command_buffer/service/shader_manager.cc
|
| @@ -69,15 +69,10 @@ void Shader::DoCompile() {
|
| const char* source_for_driver = last_compiled_source_.c_str();
|
| ShaderTranslatorInterface* translator = translator_.get();
|
| if (translator) {
|
| - bool success = translator->Translate(last_compiled_source_,
|
| - &log_info_,
|
| - &translated_source_,
|
| - &shader_version_,
|
| - &attrib_map_,
|
| - &uniform_map_,
|
| - &varying_map_,
|
| - &interface_block_map_,
|
| - &name_map_);
|
| + bool success = translator->Translate(
|
| + last_compiled_source_, &log_info_, &translated_source_,
|
| + &shader_version_, &attrib_map_, &uniform_map_, &varying_map_,
|
| + &interface_block_map_, &output_variable_list_, &name_map_);
|
| if (!success) {
|
| return;
|
| }
|
| @@ -215,6 +210,15 @@ const std::string* Shader::GetInterfaceBlockMappedName(
|
| return NULL;
|
| }
|
|
|
| +const std::string* Shader::GetOutputVariableMappedName(
|
| + const std::string& original_name) const {
|
| + for (const auto& value : output_variable_list_) {
|
| + if (value.name == original_name)
|
| + return &value.mappedName;
|
| + }
|
| + return nullptr;
|
| +}
|
| +
|
| const std::string* Shader::GetOriginalNameFromHashedName(
|
| const std::string& hashed_name) const {
|
| NameMap::const_iterator it = name_map_.find(hashed_name);
|
| @@ -249,6 +253,18 @@ const sh::InterfaceBlock* Shader::GetInterfaceBlockInfo(
|
| return it != interface_block_map_.end() ? &it->second : NULL;
|
| }
|
|
|
| +const sh::OutputVariable* Shader::GetOutputVariableInfo(
|
| + const std::string& name) const {
|
| + std::string mapped_name = GetTopVariableName(name);
|
| + // Number of output variables is expected to be so low that
|
| + // a linear search of a list should be faster than using a map.
|
| + for (const auto& value : output_variable_list_) {
|
| + if (value.mappedName == mapped_name)
|
| + return &value;
|
| + }
|
| + return nullptr;
|
| +}
|
| +
|
| ShaderManager::ShaderManager() {}
|
|
|
| ShaderManager::~ShaderManager() {
|
|
|