summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authordyen <dyen@chromium.org>2015-02-17 16:56:21 -0800
committerCommit bot <commit-bot@chromium.org>2015-02-18 00:56:58 +0000
commit5665a330a23429f17f2e45aea6fb0f43c923eb7c (patch)
tree03ac7226c0b0292df622a8b1ed02230157575b23 /gpu
parenta135cb4208f3543ab144ff7f3f25df3a09dd5bb7 (diff)
downloadchromium_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.cc22
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.