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

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

Issue 2852923004: Remove NameMap from shader translator and shader/program managers (Closed)
Patch Set: fix Created 3 years, 8 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
« no previous file with comments | « gpu/command_buffer/service/program_manager.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/command_buffer/service/program_manager.cc
diff --git a/gpu/command_buffer/service/program_manager.cc b/gpu/command_buffer/service/program_manager.cc
index f8dcbc197a9a5113feda4e464e7572495238e9bb..db0a4b4db321d2f6ff469b2b4bd6078cdeab60b2 100644
--- a/gpu/command_buffer/service/program_manager.cc
+++ b/gpu/command_buffer/service/program_manager.cc
@@ -1544,6 +1544,9 @@ const std::string* Program::GetUniformMappedName(
const std::string* Program::GetOriginalNameFromHashedName(
const std::string& hashed_name) const {
+ // TODO(kainino): Might not work on cache load, since name_map doesn't seem
+ // to be loaded from cache. In GetUniformBlocks, GetInterfaceBlockInfo is
+ // used instead.
Ken Russell (switch to Gerrit) 2017/05/01 23:02:30 Please refer to crbug.com/716018 at the end of thi
Kai Ninomiya 2017/05/02 00:06:13 Acknowledged.
for (auto shader : attached_shaders_) {
if (shader) {
const std::string* original_name =
@@ -1555,6 +1558,19 @@ const std::string* Program::GetOriginalNameFromHashedName(
return nullptr;
}
+const sh::InterfaceBlock* Program::GetInterfaceBlockInfo(
+ const std::string& hashed_name) const {
+ for (auto shader : attached_shaders_) {
+ if (shader) {
+ const sh::InterfaceBlock* info =
+ shader->GetInterfaceBlockInfo(hashed_name);
+ if (info)
+ return info;
+ }
+ }
+ return nullptr;
+}
+
const Program::FragmentInputInfo* Program::GetFragmentInputInfoByFakeLocation(
GLint fake_location) const {
if (fake_location < 0)
@@ -2231,16 +2247,16 @@ bool Program::GetUniformBlocks(CommonDecoder::Bucket* bucket) const {
names[ii] = std::string(&buffer[0], length);
// TODO(zmo): optimize the name mapping lookup.
size_t pos = names[ii].find_first_of('[');
- const std::string* original_name;
+ const sh::InterfaceBlock* interface_block = nullptr;
std::string array_index_str = "";
if (pos != std::string::npos) {
- original_name = GetOriginalNameFromHashedName(names[ii].substr(0, pos));
+ interface_block = GetInterfaceBlockInfo(names[ii].substr(0, pos));
array_index_str = names[ii].substr(pos);
} else {
- original_name = GetOriginalNameFromHashedName(names[ii]);
+ interface_block = GetInterfaceBlockInfo(names[ii]);
}
- if (original_name)
- names[ii] = *original_name + array_index_str;
+ if (interface_block)
+ names[ii] = interface_block->name + array_index_str;
blocks[ii].name_length = names[ii].size() + 1;
size += blocks[ii].name_length;
« no previous file with comments | « gpu/command_buffer/service/program_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698