diff options
author | dyen <dyen@chromium.org> | 2015-02-17 16:56:21 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-18 00:56:58 +0000 |
commit | 5665a330a23429f17f2e45aea6fb0f43c923eb7c (patch) | |
tree | 03ac7226c0b0292df622a8b1ed02230157575b23 /gpu | |
parent | a135cb4208f3543ab144ff7f3f25df3a09dd5bb7 (diff) | |
download | chromium_src-5665a330a23429f17f2e45aea6fb0f43c923eb7c.zip chromium_src-5665a330a23429f17f2e45aea6fb0f43c923eb7c.tar.gz chromium_src-5665a330a23429f17f2e45aea6fb0f43c923eb7c.tar.bz2 |
Fix shader compilation when no translator.
BUG=459356
TEST=trybots
Review URL: https://codereview.chromium.org/939473002
Cr-Commit-Position: refs/heads/master@{#316716}
Diffstat (limited to 'gpu')
-rw-r--r-- | gpu/command_buffer/service/shader_manager.cc | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/gpu/command_buffer/service/shader_manager.cc b/gpu/command_buffer/service/shader_manager.cc index 6860041..055cd70 100644 --- a/gpu/command_buffer/service/shader_manager.cc +++ b/gpu/command_buffer/service/shader_manager.cc @@ -54,20 +54,21 @@ void Shader::DoCompile() { // Signify the shader has been compiled, whether or not it is valid // is dependent on the |valid_| member variable. shader_state_ = kShaderStateCompiled; + valid_ = false; // Translate GL ES 2.0 shader to Desktop GL shader and pass that to // glShaderSource and then glCompileShader. const char* source_for_driver = last_compiled_source_.c_str(); ShaderTranslatorInterface* translator = translator_.get(); if (translator) { - valid_ = translator->Translate(last_compiled_source_, - &log_info_, - &translated_source_, - &attrib_map_, - &uniform_map_, - &varying_map_, - &name_map_); - if (!valid_) { + bool success = translator->Translate(last_compiled_source_, + &log_info_, + &translated_source_, + &attrib_map_, + &uniform_map_, + &varying_map_, + &name_map_); + if (!success) { return; } source_for_driver = translated_source_.c_str(); @@ -88,11 +89,14 @@ void Shader::DoCompile() { 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(); } GLint status = GL_FALSE; glGetShaderiv(service_id_, GL_COMPILE_STATUS, &status); - if (status != GL_TRUE) { + if (status == GL_TRUE) { + valid_ = true; + } else { // We cannot reach here if we are using the shader translator. // All invalid shaders must be rejected by the translator. // All translated shaders must compile. |