summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gpu/command_buffer/service/mocks.h2
-rw-r--r--gpu/command_buffer/service/program_cache.cc2
-rw-r--r--gpu/command_buffer/service/shader_translator.cc16
-rw-r--r--gpu/command_buffer/service/shader_translator.h6
-rw-r--r--gpu/command_buffer/service/shader_translator_unittest.cc8
5 files changed, 24 insertions, 10 deletions
diff --git a/gpu/command_buffer/service/mocks.h b/gpu/command_buffer/service/mocks.h
index 2a95db5..b643051 100644
--- a/gpu/command_buffer/service/mocks.h
+++ b/gpu/command_buffer/service/mocks.h
@@ -93,7 +93,7 @@ class MockShaderTranslator : public ShaderTranslatorInterface {
MOCK_CONST_METHOD0(varying_map, const VariableMap&());
MOCK_CONST_METHOD0(name_map, const NameMap&());
MOCK_CONST_METHOD0(
- GetStringForOptionsThatWouldEffectCompilation, std::string());
+ GetStringForOptionsThatWouldAffectCompilation, std::string());
};
class MockProgramCache : public ProgramCache {
diff --git a/gpu/command_buffer/service/program_cache.cc b/gpu/command_buffer/service/program_cache.cc
index 6599d4a..ad395c7 100644
--- a/gpu/command_buffer/service/program_cache.cc
+++ b/gpu/command_buffer/service/program_cache.cc
@@ -74,7 +74,7 @@ void ProgramCache::ComputeShaderHash(
const ShaderTranslatorInterface* translator,
char* result) const {
std::string s((
- translator ? translator->GetStringForOptionsThatWouldEffectCompilation() :
+ translator ? translator->GetStringForOptionsThatWouldAffectCompilation() :
std::string()) + str);
base::SHA1HashBytes(reinterpret_cast<const unsigned char*>(s.c_str()),
s.length(), reinterpret_cast<unsigned char*>(result));
diff --git a/gpu/command_buffer/service/shader_translator.cc b/gpu/command_buffer/service/shader_translator.cc
index c3279e2..3964c2d 100644
--- a/gpu/command_buffer/service/shader_translator.cc
+++ b/gpu/command_buffer/service/shader_translator.cc
@@ -201,9 +201,22 @@ bool ShaderTranslator::Translate(const char* shader) {
return success;
}
-std::string ShaderTranslator::GetStringForOptionsThatWouldEffectCompilation()
+std::string ShaderTranslator::GetStringForOptionsThatWouldAffectCompilation()
const {
+#if ANGLE_SH_VERSION >= 124
+ DCHECK(compiler_ != NULL);
+
+ ANGLEGetInfoType resource_len = 0;
+ ShGetInfo(compiler_, SH_RESOURCES_STRING_LENGTH, &resource_len);
+ DCHECK(resource_len > 1);
+ scoped_ptr<char[]> resource_str(new char[resource_len]);
+
+ ShGetBuiltInResourcesString(compiler_, resource_len, resource_str.get());
+ return std::string(":CompileOptions:" +
+ base::IntToString(GetCompileOptions())) +
+ std::string(resource_str.get());
+#else
#if ANGLE_SH_VERSION >= 123
const size_t kNumIntFields = 21;
#elif ANGLE_SH_VERSION >= 122
@@ -278,6 +291,7 @@ std::string ShaderTranslator::GetStringForOptionsThatWouldEffectCompilation()
#else // ANGLE_SH_VERSION < 122
base::IntToString(compiler_options_.EXT_frag_depth));
#endif
+#endif
}
const char* ShaderTranslator::translated_shader() const {
diff --git a/gpu/command_buffer/service/shader_translator.h b/gpu/command_buffer/service/shader_translator.h
index b9bacf1..d993967 100644
--- a/gpu/command_buffer/service/shader_translator.h
+++ b/gpu/command_buffer/service/shader_translator.h
@@ -89,8 +89,8 @@ class ShaderTranslatorInterface {
virtual const NameMap& name_map() const = 0;
// Return a string that is unique for a specfic set of options that would
- // possibly effect compilation.
- virtual std::string GetStringForOptionsThatWouldEffectCompilation() const = 0;
+ // possibly affect compilation.
+ virtual std::string GetStringForOptionsThatWouldAffectCompilation() const = 0;
protected:
virtual ~ShaderTranslatorInterface() {}
@@ -135,7 +135,7 @@ class GPU_EXPORT ShaderTranslator
virtual const VariableMap& varying_map() const OVERRIDE;
virtual const NameMap& name_map() const OVERRIDE;
- virtual std::string GetStringForOptionsThatWouldEffectCompilation() const
+ virtual std::string GetStringForOptionsThatWouldAffectCompilation() const
OVERRIDE;
void AddDestructionObserver(DestructionObserver* observer);
diff --git a/gpu/command_buffer/service/shader_translator_unittest.cc b/gpu/command_buffer/service/shader_translator_unittest.cc
index 4002c34..233b412 100644
--- a/gpu/command_buffer/service/shader_translator_unittest.cc
+++ b/gpu/command_buffer/service/shader_translator_unittest.cc
@@ -245,13 +245,13 @@ TEST_F(ShaderTranslatorTest, OptionsString) {
SH_EMULATE_BUILT_IN_FUNCTIONS));
std::string options_1(
- translator_1->GetStringForOptionsThatWouldEffectCompilation());
+ translator_1->GetStringForOptionsThatWouldAffectCompilation());
std::string options_2(
- translator_1->GetStringForOptionsThatWouldEffectCompilation());
+ translator_1->GetStringForOptionsThatWouldAffectCompilation());
std::string options_3(
- translator_2->GetStringForOptionsThatWouldEffectCompilation());
+ translator_2->GetStringForOptionsThatWouldAffectCompilation());
std::string options_4(
- translator_3->GetStringForOptionsThatWouldEffectCompilation());
+ translator_3->GetStringForOptionsThatWouldAffectCompilation());
EXPECT_EQ(options_1, options_2);
EXPECT_NE(options_1, options_3);