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

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

Issue 1309743005: command_buffer: Implement EXT_blend_func_extended (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@new-05-path-fragment-input-gen
Patch Set: Created 5 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
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 "gpu/command_buffer/service/shader_manager.h" 5 #include "gpu/command_buffer/service/shader_manager.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "gpu/command_buffer/service/gpu_service_test.h" 8 #include "gpu/command_buffer/service/gpu_service_test.h"
9 #include "gpu/command_buffer/service/mocks.h" 9 #include "gpu/command_buffer/service/mocks.h"
10 #include "gpu/command_buffer/service/test_helper.h" 10 #include "gpu/command_buffer/service/test_helper.h"
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 const GLenum kUniform2Type = GL_FLOAT_MAT3; 119 const GLenum kUniform2Type = GL_FLOAT_MAT3;
120 const GLint kUniform2Size = 5; 120 const GLint kUniform2Size = 5;
121 const GLenum kUniform2Precision = GL_MEDIUM_FLOAT; 121 const GLenum kUniform2Precision = GL_MEDIUM_FLOAT;
122 const bool kUniform2StaticUse = false; 122 const bool kUniform2StaticUse = false;
123 const char* kUniform2Name = "uni2"; 123 const char* kUniform2Name = "uni2";
124 const GLenum kVarying1Type = GL_FLOAT_VEC4; 124 const GLenum kVarying1Type = GL_FLOAT_VEC4;
125 const GLint kVarying1Size = 1; 125 const GLint kVarying1Size = 1;
126 const GLenum kVarying1Precision = GL_HIGH_FLOAT; 126 const GLenum kVarying1Precision = GL_HIGH_FLOAT;
127 const bool kVarying1StaticUse = false; 127 const bool kVarying1StaticUse = false;
128 const char* kVarying1Name = "varying1"; 128 const char* kVarying1Name = "varying1";
129 const GLenum kOutputVariable1Type = GL_FLOAT_VEC4;
130 const GLint kOutputVariable1Size = 4;
131 const GLenum kOutputVariable1Precision = GL_MEDIUM_FLOAT;
132 const char* kOutputVariable1Name = "gl_FragColor";
133 const bool kOutputVariable1StaticUse = true;
129 134
130 // Check we can create shader. 135 // Check we can create shader.
131 Shader* shader1 = manager_.CreateShader( 136 Shader* shader1 = manager_.CreateShader(
132 kClient1Id, kService1Id, kShader1Type); 137 kClient1Id, kService1Id, kShader1Type);
133 // Check shader got created. 138 // Check shader got created.
134 ASSERT_TRUE(shader1 != NULL); 139 ASSERT_TRUE(shader1 != NULL);
135 EXPECT_EQ(kService1Id, shader1->service_id()); 140 EXPECT_EQ(kService1Id, shader1->service_id());
136 // Check if the shader has correct type. 141 // Check if the shader has correct type.
137 EXPECT_EQ(kShader1Type, shader1->shader_type()); 142 EXPECT_EQ(kShader1Type, shader1->shader_type());
138 EXPECT_FALSE(shader1->valid()); 143 EXPECT_FALSE(shader1->valid());
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 uniform_map[kUniform1Name] = TestHelper::ConstructUniform( 185 uniform_map[kUniform1Name] = TestHelper::ConstructUniform(
181 kUniform1Type, kUniform1Size, kUniform1Precision, 186 kUniform1Type, kUniform1Size, kUniform1Precision,
182 kUniform1StaticUse, kUniform1Name); 187 kUniform1StaticUse, kUniform1Name);
183 uniform_map[kUniform2Name] = TestHelper::ConstructUniform( 188 uniform_map[kUniform2Name] = TestHelper::ConstructUniform(
184 kUniform2Type, kUniform2Size, kUniform2Precision, 189 kUniform2Type, kUniform2Size, kUniform2Precision,
185 kUniform2StaticUse, kUniform2Name); 190 kUniform2StaticUse, kUniform2Name);
186 VaryingMap varying_map; 191 VaryingMap varying_map;
187 varying_map[kVarying1Name] = TestHelper::ConstructVarying( 192 varying_map[kVarying1Name] = TestHelper::ConstructVarying(
188 kVarying1Type, kVarying1Size, kVarying1Precision, 193 kVarying1Type, kVarying1Size, kVarying1Precision,
189 kVarying1StaticUse, kVarying1Name); 194 kVarying1StaticUse, kVarying1Name);
190 195 AttributeList output_variable_list;
196 output_variable_list.push_back(TestHelper::ConstructAttribute(
197 kOutputVariable1Type, kOutputVariable1Size, kOutputVariable1Precision,
198 kOutputVariable1StaticUse, kOutputVariable1Name));
191 TestHelper::SetShaderStates( 199 TestHelper::SetShaderStates(
192 gl_.get(), shader1, true, &kLog, &kTranslatedSource, NULL, 200 gl_.get(), shader1, true, &kLog, &kTranslatedSource, nullptr, &attrib_map,
193 &attrib_map, &uniform_map, &varying_map, NULL); 201 &uniform_map, &varying_map, &output_variable_list, nullptr);
194 EXPECT_TRUE(shader1->valid()); 202 EXPECT_TRUE(shader1->valid());
195 // When compilation succeeds, no log is recorded. 203 // When compilation succeeds, no log is recorded.
196 EXPECT_STREQ("", shader1->log_info().c_str()); 204 EXPECT_STREQ("", shader1->log_info().c_str());
197 EXPECT_STREQ(kClient1Source, shader1->last_compiled_source().c_str()); 205 EXPECT_STREQ(kClient1Source, shader1->last_compiled_source().c_str());
198 EXPECT_STREQ(kTranslatedSource.c_str(), shader1->translated_source().c_str()); 206 EXPECT_STREQ(kTranslatedSource.c_str(), shader1->translated_source().c_str());
199 207
200 // Check varying infos got copied. 208 // Check varying infos got copied.
201 EXPECT_EQ(attrib_map.size(), shader1->attrib_map().size()); 209 EXPECT_EQ(attrib_map.size(), shader1->attrib_map().size());
202 for (AttributeMap::const_iterator it = attrib_map.begin(); 210 for (AttributeMap::const_iterator it = attrib_map.begin();
203 it != attrib_map.end(); ++it) { 211 it != attrib_map.end(); ++it) {
(...skipping 22 matching lines...) Expand all
226 for (VaryingMap::const_iterator it = varying_map.begin(); 234 for (VaryingMap::const_iterator it = varying_map.begin();
227 it != varying_map.end(); ++it) { 235 it != varying_map.end(); ++it) {
228 const sh::Varying* variable_info = shader1->GetVaryingInfo(it->first); 236 const sh::Varying* variable_info = shader1->GetVaryingInfo(it->first);
229 ASSERT_TRUE(variable_info != NULL); 237 ASSERT_TRUE(variable_info != NULL);
230 EXPECT_EQ(it->second.type, variable_info->type); 238 EXPECT_EQ(it->second.type, variable_info->type);
231 EXPECT_EQ(it->second.arraySize, variable_info->arraySize); 239 EXPECT_EQ(it->second.arraySize, variable_info->arraySize);
232 EXPECT_EQ(it->second.precision, variable_info->precision); 240 EXPECT_EQ(it->second.precision, variable_info->precision);
233 EXPECT_EQ(it->second.staticUse, variable_info->staticUse); 241 EXPECT_EQ(it->second.staticUse, variable_info->staticUse);
234 EXPECT_STREQ(it->second.name.c_str(), variable_info->name.c_str()); 242 EXPECT_STREQ(it->second.name.c_str(), variable_info->name.c_str());
235 } 243 }
244 // Check output variable infos got copied.
245 EXPECT_EQ(output_variable_list.size(),
246 shader1->output_variable_list().size());
247 for (auto it = output_variable_list.begin(); it != output_variable_list.end();
248 ++it) {
249 const sh::Attribute* variable_info =
250 shader1->GetOutputVariableInfo(it->mappedName);
251 ASSERT_TRUE(variable_info != nullptr);
252 EXPECT_EQ(it->type, variable_info->type);
253 EXPECT_EQ(it->arraySize, variable_info->arraySize);
254 EXPECT_EQ(it->precision, variable_info->precision);
255 EXPECT_EQ(it->staticUse, variable_info->staticUse);
256 EXPECT_STREQ(it->name.c_str(), variable_info->name.c_str());
257 }
236 258
237 // Compile failure case. 259 // Compile failure case.
238 TestHelper::SetShaderStates( 260 TestHelper::SetShaderStates(
239 gl_.get(), shader1, false, &kLog, &kTranslatedSource, NULL, 261 gl_.get(), shader1, false, &kLog, &kTranslatedSource, nullptr,
240 &attrib_map, &uniform_map, &varying_map, NULL); 262 &attrib_map, &uniform_map, &varying_map, &output_variable_list, nullptr);
241 EXPECT_FALSE(shader1->valid()); 263 EXPECT_FALSE(shader1->valid());
242 EXPECT_STREQ(kLog.c_str(), shader1->log_info().c_str()); 264 EXPECT_STREQ(kLog.c_str(), shader1->log_info().c_str());
243 EXPECT_STREQ("", shader1->translated_source().c_str()); 265 EXPECT_STREQ("", shader1->translated_source().c_str());
244 EXPECT_TRUE(shader1->attrib_map().empty()); 266 EXPECT_TRUE(shader1->attrib_map().empty());
245 EXPECT_TRUE(shader1->uniform_map().empty()); 267 EXPECT_TRUE(shader1->uniform_map().empty());
246 EXPECT_TRUE(shader1->varying_map().empty()); 268 EXPECT_TRUE(shader1->varying_map().empty());
269 EXPECT_TRUE(shader1->output_variable_list().empty());
247 } 270 }
248 271
249 TEST_F(ShaderManagerTest, ShaderInfoUseCount) { 272 TEST_F(ShaderManagerTest, ShaderInfoUseCount) {
250 const GLuint kClient1Id = 1; 273 const GLuint kClient1Id = 1;
251 const GLuint kService1Id = 11; 274 const GLuint kService1Id = 11;
252 const GLenum kShader1Type = GL_VERTEX_SHADER; 275 const GLenum kShader1Type = GL_VERTEX_SHADER;
253 // Check we can create shader. 276 // Check we can create shader.
254 Shader* shader1 = manager_.CreateShader( 277 Shader* shader1 = manager_.CreateShader(
255 kClient1Id, kService1Id, kShader1Type); 278 kClient1Id, kService1Id, kShader1Type);
256 // Check shader got created. 279 // Check shader got created.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 EXPECT_CALL(*gl_, DeleteShader(kService1Id)) 313 EXPECT_CALL(*gl_, DeleteShader(kService1Id))
291 .Times(1) 314 .Times(1)
292 .RetiresOnSaturation(); 315 .RetiresOnSaturation();
293 manager_.Delete(shader1); // this should delete the shader. 316 manager_.Delete(shader1); // this should delete the shader.
294 shader2 = manager_.GetShader(kClient1Id); 317 shader2 = manager_.GetShader(kClient1Id);
295 EXPECT_TRUE(shader2 == NULL); 318 EXPECT_TRUE(shader2 == NULL);
296 } 319 }
297 320
298 } // namespace gles2 321 } // namespace gles2
299 } // namespace gpu 322 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698