Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(265)

Unified Diff: gpu/command_buffer/service/shader_manager.cc

Issue 1309743005: command_buffer: Implement EXT_blend_func_extended (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@new-05-path-fragment-input-gen
Patch Set: address review comments Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 0ad8bf09bb71b03ba4a3cecbd954df7fa0662de2..ef8e5ef45149b3e4f0406d88b685ad0354661d70 100644
--- a/gpu/command_buffer/service/shader_manager.cc
+++ b/gpu/command_buffer/service/shader_manager.cc
@@ -69,14 +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_,
- &name_map_);
+ bool success = translator->Translate(
+ last_compiled_source_, &log_info_, &translated_source_,
+ &shader_version_, &attrib_map_, &uniform_map_, &varying_map_,
+ &output_variable_list_, &name_map_);
if (!success) {
return;
}
@@ -214,11 +210,24 @@ const sh::Uniform* Shader::GetUniformInfo(const std::string& name) const {
return it != uniform_map_.end() ? &it->second : NULL;
}
-const sh::Varying* Shader::GetVaryingInfo(const std::string& name) const {
+const sh::Varying* Shader::GetInputVariableInfo(const std::string& name) const {
VaryingMap::const_iterator it = varying_map_.find(GetTopVariableName(name));
return it != varying_map_.end() ? &it->second : NULL;
}
+const sh::OutputVariable* Shader::GetOutputVariableInfo(
+ const std::string& name) const {
+ std::string mappedName = 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.
+ auto iter =
+ std::find_if(output_variable_list_.begin(), output_variable_list_.end(),
+ [mappedName](const sh::OutputVariable& output_var) {
+ return output_var.mappedName == mappedName;
+ });
+ return iter != output_variable_list_.end() ? &(*iter) : nullptr;
+}
+
ShaderManager::ShaderManager() {}
ShaderManager::~ShaderManager() {

Powered by Google App Engine
This is Rietveld 408576698