Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Side by Side Diff: gpu/command_buffer/service/shader_translator_unittest.cc

Issue 552013007: Remove outdated ANGLE_SH_VERSION if-def stuff. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gpu/command_buffer/service/shader_translator_cache.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <GLES2/gl2.h> 5 #include <GLES2/gl2.h>
6 6
7 #include "gpu/command_buffer/service/shader_translator.h" 7 #include "gpu/command_buffer/service/shader_translator.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 // The ANGLE shader translator now uses native GLenums
11 // TODO(jmadill): delete these defines when the ANGLE
12 // roll reliably passes translator version 126
13 #if (ANGLE_SH_VERSION >= 126)
14 #define SH_VERTEX_SHADER GL_VERTEX_SHADER
15 #define SH_FRAGMENT_SHADER GL_FRAGMENT_SHADER
16 #define SH_FLOAT_VEC4 GL_FLOAT_VEC4
17 #endif
18
19 namespace gpu { 10 namespace gpu {
20 namespace gles2 { 11 namespace gles2 {
21 12
22 class ShaderTranslatorTest : public testing::Test { 13 class ShaderTranslatorTest : public testing::Test {
23 public: 14 public:
24 ShaderTranslatorTest() { 15 ShaderTranslatorTest() {
25 } 16 }
26 17
27 virtual ~ShaderTranslatorTest() { 18 virtual ~ShaderTranslatorTest() {
28 } 19 }
29 20
30 protected: 21 protected:
31 virtual void SetUp() { 22 virtual void SetUp() {
32 ShBuiltInResources resources; 23 ShBuiltInResources resources;
33 ShInitBuiltInResources(&resources); 24 ShInitBuiltInResources(&resources);
34 resources.MaxExpressionComplexity = 32; 25 resources.MaxExpressionComplexity = 32;
35 resources.MaxCallStackDepth = 32; 26 resources.MaxCallStackDepth = 32;
36 27
37 vertex_translator_ = new ShaderTranslator(); 28 vertex_translator_ = new ShaderTranslator();
38 fragment_translator_ = new ShaderTranslator(); 29 fragment_translator_ = new ShaderTranslator();
39 30
40 ASSERT_TRUE(vertex_translator_->Init( 31 ASSERT_TRUE(vertex_translator_->Init(
41 SH_VERTEX_SHADER, SH_GLES2_SPEC, &resources, 32 GL_VERTEX_SHADER, SH_GLES2_SPEC, &resources,
42 ShaderTranslatorInterface::kGlsl, 33 ShaderTranslatorInterface::kGlsl,
43 SH_EMULATE_BUILT_IN_FUNCTIONS)); 34 SH_EMULATE_BUILT_IN_FUNCTIONS));
44 ASSERT_TRUE(fragment_translator_->Init( 35 ASSERT_TRUE(fragment_translator_->Init(
45 SH_FRAGMENT_SHADER, SH_GLES2_SPEC, &resources, 36 GL_FRAGMENT_SHADER, SH_GLES2_SPEC, &resources,
46 ShaderTranslatorInterface::kGlsl, 37 ShaderTranslatorInterface::kGlsl,
47 static_cast<ShCompileOptions>(0))); 38 static_cast<ShCompileOptions>(0)));
48 // Post-init the results must be empty. 39 // Post-init the results must be empty.
49 // Vertex translator results. 40 // Vertex translator results.
50 EXPECT_TRUE(vertex_translator_->translated_shader() == NULL); 41 EXPECT_TRUE(vertex_translator_->translated_shader() == NULL);
51 EXPECT_TRUE(vertex_translator_->info_log() == NULL); 42 EXPECT_TRUE(vertex_translator_->info_log() == NULL);
52 EXPECT_TRUE(vertex_translator_->attrib_map().empty()); 43 EXPECT_TRUE(vertex_translator_->attrib_map().empty());
53 EXPECT_TRUE(vertex_translator_->uniform_map().empty()); 44 EXPECT_TRUE(vertex_translator_->uniform_map().empty());
54 // Fragment translator results. 45 // Fragment translator results.
55 EXPECT_TRUE(fragment_translator_->translated_shader() == NULL); 46 EXPECT_TRUE(fragment_translator_->translated_shader() == NULL);
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 142
152 EXPECT_TRUE(vertex_translator_->Translate(shader)); 143 EXPECT_TRUE(vertex_translator_->Translate(shader));
153 // Info log must be NULL. 144 // Info log must be NULL.
154 EXPECT_TRUE(vertex_translator_->info_log() == NULL); 145 EXPECT_TRUE(vertex_translator_->info_log() == NULL);
155 // Translated shader must be valid and non-empty. 146 // Translated shader must be valid and non-empty.
156 ASSERT_TRUE(vertex_translator_->translated_shader() != NULL); 147 ASSERT_TRUE(vertex_translator_->translated_shader() != NULL);
157 EXPECT_GT(strlen(vertex_translator_->translated_shader()), 0u); 148 EXPECT_GT(strlen(vertex_translator_->translated_shader()), 0u);
158 // There should be no uniforms. 149 // There should be no uniforms.
159 EXPECT_TRUE(vertex_translator_->uniform_map().empty()); 150 EXPECT_TRUE(vertex_translator_->uniform_map().empty());
160 // There should be one attribute with following characteristics: 151 // There should be one attribute with following characteristics:
161 // name:vPosition type:SH_FLOAT_VEC4 size:1. 152 // name:vPosition type:GL_FLOAT_VEC4 size:1.
162 const ShaderTranslator::VariableMap& attrib_map = 153 const ShaderTranslator::VariableMap& attrib_map =
163 vertex_translator_->attrib_map(); 154 vertex_translator_->attrib_map();
164 EXPECT_EQ(1u, attrib_map.size()); 155 EXPECT_EQ(1u, attrib_map.size());
165 ShaderTranslator::VariableMap::const_iterator iter = 156 ShaderTranslator::VariableMap::const_iterator iter =
166 attrib_map.find("vPosition"); 157 attrib_map.find("vPosition");
167 EXPECT_TRUE(iter != attrib_map.end()); 158 EXPECT_TRUE(iter != attrib_map.end());
168 EXPECT_EQ(SH_FLOAT_VEC4, iter->second.type); 159 EXPECT_EQ(GL_FLOAT_VEC4, iter->second.type);
169 EXPECT_EQ(1, iter->second.size); 160 EXPECT_EQ(1, iter->second.size);
170 EXPECT_EQ("vPosition", iter->second.name); 161 EXPECT_EQ("vPosition", iter->second.name);
171 } 162 }
172 163
173 TEST_F(ShaderTranslatorTest, GetUniforms) { 164 TEST_F(ShaderTranslatorTest, GetUniforms) {
174 const char* shader = 165 const char* shader =
175 "precision mediump float;\n" 166 "precision mediump float;\n"
176 "struct Foo {\n" 167 "struct Foo {\n"
177 " vec4 color[1];\n" 168 " vec4 color[1];\n"
178 "};\n" 169 "};\n"
179 "struct Bar {\n" 170 "struct Bar {\n"
180 " Foo foo;\n" 171 " Foo foo;\n"
181 "};\n" 172 "};\n"
182 "uniform Bar bar[2];\n" 173 "uniform Bar bar[2];\n"
183 "void main() {\n" 174 "void main() {\n"
184 " gl_FragColor = bar[0].foo.color[0] + bar[1].foo.color[0];\n" 175 " gl_FragColor = bar[0].foo.color[0] + bar[1].foo.color[0];\n"
185 "}"; 176 "}";
186 177
187 EXPECT_TRUE(fragment_translator_->Translate(shader)); 178 EXPECT_TRUE(fragment_translator_->Translate(shader));
188 // Info log must be NULL. 179 // Info log must be NULL.
189 EXPECT_TRUE(fragment_translator_->info_log() == NULL); 180 EXPECT_TRUE(fragment_translator_->info_log() == NULL);
190 // Translated shader must be valid and non-empty. 181 // Translated shader must be valid and non-empty.
191 ASSERT_TRUE(fragment_translator_->translated_shader() != NULL); 182 ASSERT_TRUE(fragment_translator_->translated_shader() != NULL);
192 EXPECT_GT(strlen(fragment_translator_->translated_shader()), 0u); 183 EXPECT_GT(strlen(fragment_translator_->translated_shader()), 0u);
193 // There should be no attributes. 184 // There should be no attributes.
194 EXPECT_TRUE(fragment_translator_->attrib_map().empty()); 185 EXPECT_TRUE(fragment_translator_->attrib_map().empty());
195 // There should be two uniforms with following characteristics: 186 // There should be two uniforms with following characteristics:
196 // 1. name:bar[0].foo.color[0] type:SH_FLOAT_VEC4 size:1 187 // 1. name:bar[0].foo.color[0] type:GL_FLOAT_VEC4 size:1
197 // 2. name:bar[1].foo.color[0] type:SH_FLOAT_VEC4 size:1 188 // 2. name:bar[1].foo.color[0] type:GL_FLOAT_VEC4 size:1
198 const ShaderTranslator::VariableMap& uniform_map = 189 const ShaderTranslator::VariableMap& uniform_map =
199 fragment_translator_->uniform_map(); 190 fragment_translator_->uniform_map();
200 EXPECT_EQ(2u, uniform_map.size()); 191 EXPECT_EQ(2u, uniform_map.size());
201 // First uniform. 192 // First uniform.
202 ShaderTranslator::VariableMap::const_iterator iter = 193 ShaderTranslator::VariableMap::const_iterator iter =
203 uniform_map.find("bar[0].foo.color[0]"); 194 uniform_map.find("bar[0].foo.color[0]");
204 EXPECT_TRUE(iter != uniform_map.end()); 195 EXPECT_TRUE(iter != uniform_map.end());
205 EXPECT_EQ(SH_FLOAT_VEC4, iter->second.type); 196 EXPECT_EQ(GL_FLOAT_VEC4, iter->second.type);
206 EXPECT_EQ(1, iter->second.size); 197 EXPECT_EQ(1, iter->second.size);
207 EXPECT_EQ("bar[0].foo.color[0]", iter->second.name); 198 EXPECT_EQ("bar[0].foo.color[0]", iter->second.name);
208 // Second uniform. 199 // Second uniform.
209 iter = uniform_map.find("bar[1].foo.color[0]"); 200 iter = uniform_map.find("bar[1].foo.color[0]");
210 EXPECT_TRUE(iter != uniform_map.end()); 201 EXPECT_TRUE(iter != uniform_map.end());
211 EXPECT_EQ(SH_FLOAT_VEC4, iter->second.type); 202 EXPECT_EQ(GL_FLOAT_VEC4, iter->second.type);
212 EXPECT_EQ(1, iter->second.size); 203 EXPECT_EQ(1, iter->second.size);
213 EXPECT_EQ("bar[1].foo.color[0]", iter->second.name); 204 EXPECT_EQ("bar[1].foo.color[0]", iter->second.name);
214 } 205 }
215 206
216 #if defined(OS_MACOSX) 207 #if defined(OS_MACOSX)
217 TEST_F(ShaderTranslatorTest, BuiltInFunctionEmulation) { 208 TEST_F(ShaderTranslatorTest, BuiltInFunctionEmulation) {
218 // This test might become invalid in the future when ANGLE Translator is no 209 // This test might become invalid in the future when ANGLE Translator is no
219 // longer emulate dot(float, float) in Mac, or the emulated function name is 210 // longer emulate dot(float, float) in Mac, or the emulated function name is
220 // no longer webgl_dot_emu. 211 // no longer webgl_dot_emu.
221 const char* shader = 212 const char* shader =
(...skipping 13 matching lines...) Expand all
235 226
236 TEST_F(ShaderTranslatorTest, OptionsString) { 227 TEST_F(ShaderTranslatorTest, OptionsString) {
237 scoped_refptr<ShaderTranslator> translator_1 = new ShaderTranslator(); 228 scoped_refptr<ShaderTranslator> translator_1 = new ShaderTranslator();
238 scoped_refptr<ShaderTranslator> translator_2 = new ShaderTranslator(); 229 scoped_refptr<ShaderTranslator> translator_2 = new ShaderTranslator();
239 scoped_refptr<ShaderTranslator> translator_3 = new ShaderTranslator(); 230 scoped_refptr<ShaderTranslator> translator_3 = new ShaderTranslator();
240 231
241 ShBuiltInResources resources; 232 ShBuiltInResources resources;
242 ShInitBuiltInResources(&resources); 233 ShInitBuiltInResources(&resources);
243 234
244 ASSERT_TRUE(translator_1->Init( 235 ASSERT_TRUE(translator_1->Init(
245 SH_VERTEX_SHADER, SH_GLES2_SPEC, &resources, 236 GL_VERTEX_SHADER, SH_GLES2_SPEC, &resources,
246 ShaderTranslatorInterface::kGlsl, 237 ShaderTranslatorInterface::kGlsl,
247 SH_EMULATE_BUILT_IN_FUNCTIONS)); 238 SH_EMULATE_BUILT_IN_FUNCTIONS));
248 ASSERT_TRUE(translator_2->Init( 239 ASSERT_TRUE(translator_2->Init(
249 SH_FRAGMENT_SHADER, SH_GLES2_SPEC, &resources, 240 GL_FRAGMENT_SHADER, SH_GLES2_SPEC, &resources,
250 ShaderTranslatorInterface::kGlsl, 241 ShaderTranslatorInterface::kGlsl,
251 static_cast<ShCompileOptions>(0))); 242 static_cast<ShCompileOptions>(0)));
252 resources.EXT_draw_buffers = 1; 243 resources.EXT_draw_buffers = 1;
253 ASSERT_TRUE(translator_3->Init( 244 ASSERT_TRUE(translator_3->Init(
254 SH_VERTEX_SHADER, SH_GLES2_SPEC, &resources, 245 GL_VERTEX_SHADER, SH_GLES2_SPEC, &resources,
255 ShaderTranslatorInterface::kGlsl, 246 ShaderTranslatorInterface::kGlsl,
256 SH_EMULATE_BUILT_IN_FUNCTIONS)); 247 SH_EMULATE_BUILT_IN_FUNCTIONS));
257 248
258 std::string options_1( 249 std::string options_1(
259 translator_1->GetStringForOptionsThatWouldAffectCompilation()); 250 translator_1->GetStringForOptionsThatWouldAffectCompilation());
260 std::string options_2( 251 std::string options_2(
261 translator_1->GetStringForOptionsThatWouldAffectCompilation()); 252 translator_1->GetStringForOptionsThatWouldAffectCompilation());
262 std::string options_3( 253 std::string options_3(
263 translator_2->GetStringForOptionsThatWouldAffectCompilation()); 254 translator_2->GetStringForOptionsThatWouldAffectCompilation());
264 std::string options_4( 255 std::string options_4(
265 translator_3->GetStringForOptionsThatWouldAffectCompilation()); 256 translator_3->GetStringForOptionsThatWouldAffectCompilation());
266 257
267 EXPECT_EQ(options_1, options_2); 258 EXPECT_EQ(options_1, options_2);
268 EXPECT_NE(options_1, options_3); 259 EXPECT_NE(options_1, options_3);
269 EXPECT_NE(options_1, options_4); 260 EXPECT_NE(options_1, options_4);
270 EXPECT_NE(options_3, options_4); 261 EXPECT_NE(options_3, options_4);
271 } 262 }
272 263
273 } // namespace gles2 264 } // namespace gles2
274 } // namespace gpu 265 } // namespace gpu
275 266
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/shader_translator_cache.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698