summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authorgman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-26 23:50:53 +0000
committergman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-26 23:50:53 +0000
commit16538ddb9248ad79528c1fa65e81b1d94c5b3f09 (patch)
tree01455cc18d083d6b0e9ad26e7cebf465ecc3adc0 /gpu
parent12ade7b6368a6aa7fa4ef9179aa26963f8f6ec8c (diff)
downloadchromium_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.cc2
-rw-r--r--gpu/command_buffer/service/shader_translator_unittest.cc16
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) {