diff options
author | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-26 23:50:53 +0000 |
---|---|---|
committer | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-26 23:50:53 +0000 |
commit | 16538ddb9248ad79528c1fa65e81b1d94c5b3f09 (patch) | |
tree | 01455cc18d083d6b0e9ad26e7cebf465ecc3adc0 /gpu | |
parent | 12ade7b6368a6aa7fa4ef9179aa26963f8f6ec8c (diff) | |
download | chromium_src-16538ddb9248ad79528c1fa65e81b1d94c5b3f09.zip chromium_src-16538ddb9248ad79528c1fa65e81b1d94c5b3f09.tar.gz chromium_src-16538ddb9248ad79528c1fa65e81b1d94c5b3f09.tar.bz2 |
Fix ShaderTranslator not resetting the info_log on success.
TEST=added unit test
BUG=none
R=apatrick@chromium.org
Review URL: http://codereview.chromium.org/7062030
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86934 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r-- | gpu/command_buffer/service/shader_translator.cc | 2 | ||||
-rw-r--r-- | gpu/command_buffer/service/shader_translator_unittest.cc | 16 |
2 files changed, 15 insertions, 3 deletions
diff --git a/gpu/command_buffer/service/shader_translator.cc b/gpu/command_buffer/service/shader_translator.cc index 27d5e04..1ef73fc 100644 --- a/gpu/command_buffer/service/shader_translator.cc +++ b/gpu/command_buffer/service/shader_translator.cc @@ -131,6 +131,8 @@ bool ShaderTranslator::Translate(const char* shader) { if (info_log_len > 1) { info_log_.reset(new char[info_log_len]); ShGetInfoLog(compiler_, info_log_.get()); + } else { + info_log_.reset(); } return success; diff --git a/gpu/command_buffer/service/shader_translator_unittest.cc b/gpu/command_buffer/service/shader_translator_unittest.cc index 5238859..9fdabd4 100644 --- a/gpu/command_buffer/service/shader_translator_unittest.cc +++ b/gpu/command_buffer/service/shader_translator_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -62,10 +62,14 @@ TEST_F(ShaderTranslatorTest, ValidVertexShader) { } TEST_F(ShaderTranslatorTest, InvalidVertexShader) { - const char* shader = "foo-bar"; + const char* bad_shader = "foo-bar"; + const char* good_shader = + "void main() {\n" + " gl_Position = vec4(1.0);\n" + "}"; // An invalid shader should fail. - EXPECT_FALSE(vertex_translator_.Translate(shader)); + EXPECT_FALSE(vertex_translator_.Translate(bad_shader)); // Info log must be valid and non-empty. EXPECT_TRUE(vertex_translator_.info_log() != NULL); EXPECT_GT(strlen(vertex_translator_.info_log()), 0u); @@ -74,6 +78,12 @@ TEST_F(ShaderTranslatorTest, InvalidVertexShader) { // There should be no attributes or uniforms. EXPECT_TRUE(vertex_translator_.attrib_map().empty()); EXPECT_TRUE(vertex_translator_.uniform_map().empty()); + + // Try a good shader after bad. + EXPECT_TRUE(vertex_translator_.Translate(good_shader)); + EXPECT_TRUE(vertex_translator_.info_log() == NULL); + EXPECT_TRUE(vertex_translator_.translated_shader() != NULL); + EXPECT_GT(strlen(vertex_translator_.translated_shader()), 0u); } TEST_F(ShaderTranslatorTest, ValidFragmentShader) { |