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 37cc4f3b79d23738fc308d850275fc93203a0264..342a47697ed17592a10578f4ff12d231e516ad98 100644 |
--- a/gpu/command_buffer/service/shader_manager.cc |
+++ b/gpu/command_buffer/service/shader_manager.cc |
@@ -86,23 +86,10 @@ void Shader::DoCompile() { |
glShaderSource(service_id_, 1, &source_for_driver, NULL); |
glCompileShader(service_id_); |
+ |
if (source_type_ == kANGLE) { |
- GLint max_len = 0; |
- glGetShaderiv(service_id_, |
- GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE, |
- &max_len); |
- source_for_driver = "\0"; |
- translated_source_.resize(max_len); |
- if (max_len) { |
- GLint len = 0; |
- glGetTranslatedShaderSourceANGLE( |
- service_id_, translated_source_.size(), |
- &len, &translated_source_.at(0)); |
- DCHECK(max_len == 0 || len < max_len); |
- DCHECK(len == 0 || translated_source_[len] == '\0'); |
- translated_source_.resize(len); |
- source_for_driver = translated_source_.c_str(); |
- } |
+ RefreshTranslatedShaderSource(); |
+ source_for_driver = translated_source_.c_str(); |
} |
GLint status = GL_FALSE; |
@@ -138,6 +125,23 @@ void Shader::DoCompile() { |
} |
} |
+void Shader::RefreshTranslatedShaderSource() { |
+ if (source_type_ == kANGLE) { |
+ GLint max_len = 0; |
+ glGetShaderiv(service_id_, GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE, |
+ &max_len); |
+ translated_source_.resize(max_len); |
+ if (max_len) { |
+ GLint len = 0; |
+ glGetTranslatedShaderSourceANGLE(service_id_, translated_source_.size(), |
+ &len, &translated_source_.at(0)); |
+ DCHECK(max_len == 0 || len < max_len); |
+ DCHECK(len == 0 || translated_source_[len] == '\0'); |
+ translated_source_.resize(len); |
+ } |
+ } |
+} |
+ |
void Shader::IncUseCount() { |
++use_count_; |
} |