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

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

Issue 619723008: Switch to use ANGLE's new APIs to query shader variables. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: win build fix Created 6 years, 2 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/memory_program_cache.cc ('k') | gpu/command_buffer/service/mocks.h » ('j') | 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 "gpu/command_buffer/service/memory_program_cache.h" 5 #include "gpu/command_buffer/service/memory_program_cache.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "gpu/command_buffer/common/gles2_cmd_format.h" 8 #include "gpu/command_buffer/common/gles2_cmd_format.h"
9 #include "gpu/command_buffer/service/gl_utils.h" 9 #include "gpu/command_buffer/service/gl_utils.h"
10 #include "gpu/command_buffer/service/gpu_service_test.h" 10 #include "gpu/command_buffer/service/gpu_service_test.h"
11 #include "gpu/command_buffer/service/shader_manager.h" 11 #include "gpu/command_buffer/service/shader_manager.h"
12 #include "gpu/command_buffer/service/shader_translator.h" 12 #include "gpu/command_buffer/service/shader_translator.h"
13 #include "gpu/command_buffer/service/test_helper.h" 13 #include "gpu/command_buffer/service/test_helper.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 #include "ui/gl/gl_bindings.h" 15 #include "ui/gl/gl_bindings.h"
16 #include "ui/gl/gl_mock.h" 16 #include "ui/gl/gl_mock.h"
17 17
18 using ::testing::_; 18 using ::testing::_;
19 using ::testing::ElementsAreArray; 19 using ::testing::ElementsAreArray;
20 using ::testing::Invoke; 20 using ::testing::Invoke;
21 using ::testing::SetArgPointee; 21 using ::testing::SetArgPointee;
22 using ::testing::SetArrayArgument; 22 using ::testing::SetArrayArgument;
23 23
24 namespace {
25 typedef gpu::gles2::ShaderTranslator::VariableMap VariableMap;
26 } // anonymous namespace
27
28 namespace gpu { 24 namespace gpu {
29 namespace gles2 { 25 namespace gles2 {
30 26
31 class ProgramBinaryEmulator { 27 class ProgramBinaryEmulator {
32 public: 28 public:
33 ProgramBinaryEmulator(GLsizei length, 29 ProgramBinaryEmulator(GLsizei length,
34 GLenum format, 30 GLenum format,
35 const char* binary) 31 const char* binary)
36 : length_(length), 32 : length_(length),
37 format_(format), 33 format_(format),
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 94
99 vertex_shader_ = shader_manager_.CreateShader(kVertexShaderClientId, 95 vertex_shader_ = shader_manager_.CreateShader(kVertexShaderClientId,
100 kVertexShaderServiceId, 96 kVertexShaderServiceId,
101 GL_VERTEX_SHADER); 97 GL_VERTEX_SHADER);
102 fragment_shader_ = shader_manager_.CreateShader( 98 fragment_shader_ = shader_manager_.CreateShader(
103 kFragmentShaderClientId, 99 kFragmentShaderClientId,
104 kFragmentShaderServiceId, 100 kFragmentShaderServiceId,
105 GL_FRAGMENT_SHADER); 101 GL_FRAGMENT_SHADER);
106 ASSERT_TRUE(vertex_shader_ != NULL); 102 ASSERT_TRUE(vertex_shader_ != NULL);
107 ASSERT_TRUE(fragment_shader_ != NULL); 103 ASSERT_TRUE(fragment_shader_ != NULL);
108 typedef ShaderTranslatorInterface::VariableInfo VariableInfo; 104 AttributeMap vertex_attrib_map;
109 typedef ShaderTranslator::VariableMap VariableMap; 105 UniformMap vertex_uniform_map;
110 VariableMap vertex_attrib_map; 106 VaryingMap vertex_varying_map;
111 VariableMap vertex_uniform_map; 107 AttributeMap fragment_attrib_map;
112 VariableMap vertex_varying_map; 108 UniformMap fragment_uniform_map;
113 VariableMap fragment_attrib_map; 109 VaryingMap fragment_varying_map;
114 VariableMap fragment_uniform_map;
115 VariableMap fragment_varying_map;
116 110
117 vertex_attrib_map["a"] = VariableInfo(1, 34, SH_PRECISION_LOWP, 0, "a"); 111 vertex_attrib_map["a"] = TestHelper::ConstructAttribute(
118 vertex_uniform_map["a"] = VariableInfo(0, 10, SH_PRECISION_MEDIUMP, 1, "a"); 112 GL_FLOAT_VEC2, 34, GL_LOW_FLOAT, false, "a");
119 vertex_uniform_map["b"] = VariableInfo(2, 3114, SH_PRECISION_HIGHP, 1, "b"); 113 vertex_uniform_map["a"] = TestHelper::ConstructUniform(
120 vertex_varying_map["c"] = VariableInfo(3, 2, SH_PRECISION_HIGHP, 1, "c"); 114 GL_FLOAT, 10, GL_MEDIUM_FLOAT, true, "a");
121 fragment_attrib_map["jjjbb"] = 115 vertex_uniform_map["b"] = TestHelper::ConstructUniform(
122 VariableInfo(463, 1114, SH_PRECISION_MEDIUMP, 0, "jjjbb"); 116 GL_FLOAT_VEC3, 3114, GL_HIGH_FLOAT, true, "b");
123 fragment_uniform_map["k"] = 117 vertex_varying_map["c"] = TestHelper::ConstructVarying(
124 VariableInfo(10, 34413, SH_PRECISION_MEDIUMP, 1, "k"); 118 GL_FLOAT_VEC4, 2, GL_HIGH_FLOAT, true, "c");
125 fragment_varying_map["c"] = VariableInfo(3, 2, SH_PRECISION_HIGHP, 1, "c"); 119 fragment_attrib_map["jjjbb"] = TestHelper::ConstructAttribute(
120 GL_FLOAT_MAT4, 1114, GL_MEDIUM_FLOAT, false, "jjjbb");
121 fragment_uniform_map["k"] = TestHelper::ConstructUniform(
122 GL_FLOAT_MAT2, 34413, GL_MEDIUM_FLOAT, true, "k");
123 fragment_varying_map["c"] = TestHelper::ConstructVarying(
124 GL_FLOAT_VEC4, 2, GL_HIGH_FLOAT, true, "c");
126 125
127 vertex_shader_->set_source("bbbalsldkdkdkd"); 126 vertex_shader_->set_source("bbbalsldkdkdkd");
128 fragment_shader_->set_source("bbbal sldkdkdkas 134 ad"); 127 fragment_shader_->set_source("bbbal sldkdkdkas 134 ad");
129 128
130 TestHelper::SetShaderStates( 129 TestHelper::SetShaderStates(
131 gl_.get(), vertex_shader_, true, NULL, NULL, 130 gl_.get(), vertex_shader_, true, NULL, NULL,
132 &vertex_attrib_map, &vertex_uniform_map, &vertex_varying_map, 131 &vertex_attrib_map, &vertex_uniform_map, &vertex_varying_map,
133 NULL); 132 NULL);
134 TestHelper::SetShaderStates( 133 TestHelper::SetShaderStates(
135 gl_.get(), fragment_shader_, true, NULL, NULL, 134 gl_.get(), fragment_shader_, true, NULL, NULL,
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 } 253 }
255 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); 254 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary);
256 255
257 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator); 256 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator);
258 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, 257 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL,
259 fragment_shader_, NULL, NULL, 258 fragment_shader_, NULL, NULL,
260 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, 259 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
261 base::Unretained(this))); 260 base::Unretained(this)));
262 EXPECT_EQ(1, shader_cache_count()); 261 EXPECT_EQ(1, shader_cache_count());
263 262
264 VariableMap vertex_attrib_map = vertex_shader_->attrib_map(); 263 AttributeMap vertex_attrib_map = vertex_shader_->attrib_map();
265 VariableMap vertex_uniform_map = vertex_shader_->uniform_map(); 264 UniformMap vertex_uniform_map = vertex_shader_->uniform_map();
266 VariableMap vertex_varying_map = vertex_shader_->varying_map(); 265 VaryingMap vertex_varying_map = vertex_shader_->varying_map();
267 VariableMap fragment_attrib_map = fragment_shader_->attrib_map(); 266 AttributeMap fragment_attrib_map = fragment_shader_->attrib_map();
268 VariableMap fragment_uniform_map = fragment_shader_->uniform_map(); 267 UniformMap fragment_uniform_map = fragment_shader_->uniform_map();
269 VariableMap fragment_varying_map = fragment_shader_->varying_map(); 268 VaryingMap fragment_varying_map = fragment_shader_->varying_map();
270 269
271 vertex_shader_->set_attrib_map(VariableMap()); 270 vertex_shader_->set_attrib_map(AttributeMap());
272 vertex_shader_->set_uniform_map(VariableMap()); 271 vertex_shader_->set_uniform_map(UniformMap());
273 vertex_shader_->set_varying_map(VariableMap()); 272 vertex_shader_->set_varying_map(VaryingMap());
274 fragment_shader_->set_attrib_map(VariableMap()); 273 fragment_shader_->set_attrib_map(AttributeMap());
275 fragment_shader_->set_uniform_map(VariableMap()); 274 fragment_shader_->set_uniform_map(UniformMap());
276 fragment_shader_->set_varying_map(VariableMap()); 275 fragment_shader_->set_varying_map(VaryingMap());
277 276
278 SetExpectationsForLoadLinkedProgram(kProgramId, &emulator); 277 SetExpectationsForLoadLinkedProgram(kProgramId, &emulator);
279 278
280 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_SUCCESS, cache_->LoadLinkedProgram( 279 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_SUCCESS, cache_->LoadLinkedProgram(
281 kProgramId, 280 kProgramId,
282 vertex_shader_, 281 vertex_shader_,
283 NULL, 282 NULL,
284 fragment_shader_, 283 fragment_shader_,
285 NULL, 284 NULL,
286 NULL, 285 NULL,
(...skipping 22 matching lines...) Expand all
309 } 308 }
310 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); 309 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary);
311 310
312 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator); 311 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator);
313 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, 312 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL,
314 fragment_shader_, NULL, NULL, 313 fragment_shader_, NULL, NULL,
315 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, 314 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
316 base::Unretained(this))); 315 base::Unretained(this)));
317 EXPECT_EQ(1, shader_cache_count()); 316 EXPECT_EQ(1, shader_cache_count());
318 317
319 VariableMap vertex_attrib_map = vertex_shader_->attrib_map(); 318 AttributeMap vertex_attrib_map = vertex_shader_->attrib_map();
320 VariableMap vertex_uniform_map = vertex_shader_->uniform_map(); 319 UniformMap vertex_uniform_map = vertex_shader_->uniform_map();
321 VariableMap vertex_varying_map = vertex_shader_->varying_map(); 320 VaryingMap vertex_varying_map = vertex_shader_->varying_map();
322 VariableMap fragment_attrib_map = fragment_shader_->attrib_map(); 321 AttributeMap fragment_attrib_map = fragment_shader_->attrib_map();
323 VariableMap fragment_uniform_map = fragment_shader_->uniform_map(); 322 UniformMap fragment_uniform_map = fragment_shader_->uniform_map();
324 VariableMap fragment_varying_map = fragment_shader_->varying_map(); 323 VaryingMap fragment_varying_map = fragment_shader_->varying_map();
325 324
326 vertex_shader_->set_attrib_map(VariableMap()); 325 vertex_shader_->set_attrib_map(AttributeMap());
327 vertex_shader_->set_uniform_map(VariableMap()); 326 vertex_shader_->set_uniform_map(UniformMap());
328 vertex_shader_->set_varying_map(VariableMap()); 327 vertex_shader_->set_varying_map(VaryingMap());
329 fragment_shader_->set_attrib_map(VariableMap()); 328 fragment_shader_->set_attrib_map(AttributeMap());
330 fragment_shader_->set_uniform_map(VariableMap()); 329 fragment_shader_->set_uniform_map(UniformMap());
331 fragment_shader_->set_varying_map(VariableMap()); 330 fragment_shader_->set_varying_map(VaryingMap());
332 331
333 SetExpectationsForLoadLinkedProgram(kProgramId, &emulator); 332 SetExpectationsForLoadLinkedProgram(kProgramId, &emulator);
334 333
335 cache_->Clear(); 334 cache_->Clear();
336 cache_->LoadProgram(shader_cache_shader()); 335 cache_->LoadProgram(shader_cache_shader());
337 336
338 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_SUCCESS, cache_->LoadLinkedProgram( 337 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_SUCCESS, cache_->LoadLinkedProgram(
339 kProgramId, 338 kProgramId,
340 vertex_shader_, 339 vertex_shader_,
341 NULL, 340 NULL,
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 NULL, 626 NULL,
628 fragment_shader_, 627 fragment_shader_,
629 NULL, 628 NULL,
630 NULL, 629 NULL,
631 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, 630 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
632 base::Unretained(this)))); 631 base::Unretained(this))));
633 } 632 }
634 633
635 } // namespace gles2 634 } // namespace gles2
636 } // namespace gpu 635 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/memory_program_cache.cc ('k') | gpu/command_buffer/service/mocks.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698