summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer/service/memory_program_cache_unittest.cc
diff options
context:
space:
mode:
authorzmo@chromium.org <zmo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-19 20:58:26 +0000
committerzmo@chromium.org <zmo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-19 20:58:26 +0000
commit186e1ae7ffd48e96e3de93f09381230d3b0911d5 (patch)
tree3cae5644f18088676675e9eab2be008423eed9a1 /gpu/command_buffer/service/memory_program_cache_unittest.cc
parent0b1e4b50e05c71d5a4d155b90b25125c780c59be (diff)
downloadchromium_src-186e1ae7ffd48e96e3de93f09381230d3b0911d5.zip
chromium_src-186e1ae7ffd48e96e3de93f09381230d3b0911d5.tar.gz
chromium_src-186e1ae7ffd48e96e3de93f09381230d3b0911d5.tar.bz2
Cache varying variable info in Shader object in command buffer.
Also, check uniform data type and precision match. BUG=249018 TEST=webgl conformance tests R=apatrick@chromium.org Review URL: https://codereview.chromium.org/22330003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@218309 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/command_buffer/service/memory_program_cache_unittest.cc')
-rw-r--r--gpu/command_buffer/service/memory_program_cache_unittest.cc44
1 files changed, 32 insertions, 12 deletions
diff --git a/gpu/command_buffer/service/memory_program_cache_unittest.cc b/gpu/command_buffer/service/memory_program_cache_unittest.cc
index 83fc12a..36291c4 100644
--- a/gpu/command_buffer/service/memory_program_cache_unittest.cc
+++ b/gpu/command_buffer/service/memory_program_cache_unittest.cc
@@ -108,19 +108,27 @@ class MemoryProgramCacheTest : public testing::Test {
typedef ShaderTranslator::VariableMap VariableMap;
VariableMap vertex_attrib_map;
VariableMap vertex_uniform_map;
+ VariableMap vertex_varying_map;
VariableMap fragment_attrib_map;
VariableMap fragment_uniform_map;
-
- vertex_attrib_map["a"] = VariableInfo(1, 34, "a");
- vertex_uniform_map["a"] = VariableInfo(0, 10, "a");
- vertex_uniform_map["b"] = VariableInfo(2, 3114, "b");
- fragment_attrib_map["jjjbb"] = VariableInfo(463, 1114, "jjjbb");
- fragment_uniform_map["k"] = VariableInfo(10, 34413, "k");
+ VariableMap fragment_varying_map;
+
+ vertex_attrib_map["a"] = VariableInfo(1, 34, SH_PRECISION_LOWP, "a");
+ vertex_uniform_map["a"] = VariableInfo(0, 10, SH_PRECISION_MEDIUMP, "a");
+ vertex_uniform_map["b"] = VariableInfo(2, 3114, SH_PRECISION_HIGHP, "b");
+ vertex_varying_map["c"] = VariableInfo(3, 2, SH_PRECISION_HIGHP, "c");
+ fragment_attrib_map["jjjbb"] =
+ VariableInfo(463, 1114, SH_PRECISION_MEDIUMP, "jjjbb");
+ fragment_uniform_map["k"] =
+ VariableInfo(10, 34413, SH_PRECISION_MEDIUMP, "k");
+ fragment_varying_map["c"] = VariableInfo(3, 2, SH_PRECISION_HIGHP, "c");
vertex_shader_->set_attrib_map(vertex_attrib_map);
vertex_shader_->set_uniform_map(vertex_uniform_map);
+ vertex_shader_->set_varying_map(vertex_varying_map);
fragment_shader_->set_attrib_map(vertex_attrib_map);
fragment_shader_->set_uniform_map(vertex_uniform_map);
+ fragment_shader_->set_varying_map(vertex_varying_map);
vertex_shader_->UpdateSource("bbbalsldkdkdkd");
fragment_shader_->UpdateSource("bbbal sldkdkdkas 134 ad");
@@ -262,13 +270,17 @@ TEST_F(MemoryProgramCacheTest, CacheLoadMatchesSave) {
VariableMap vertex_attrib_map = vertex_shader_->attrib_map();
VariableMap vertex_uniform_map = vertex_shader_->uniform_map();
+ VariableMap vertex_varying_map = vertex_shader_->varying_map();
VariableMap fragment_attrib_map = fragment_shader_->attrib_map();
VariableMap fragment_uniform_map = fragment_shader_->uniform_map();
+ VariableMap fragment_varying_map = fragment_shader_->varying_map();
vertex_shader_->set_attrib_map(VariableMap());
vertex_shader_->set_uniform_map(VariableMap());
+ vertex_shader_->set_varying_map(VariableMap());
fragment_shader_->set_attrib_map(VariableMap());
fragment_shader_->set_uniform_map(VariableMap());
+ fragment_shader_->set_varying_map(VariableMap());
SetExpectationsForLoadLinkedProgram(kProgramId, &emulator);
@@ -286,9 +298,11 @@ TEST_F(MemoryProgramCacheTest, CacheLoadMatchesSave) {
// equality operator
#if !defined(OS_ANDROID)
EXPECT_EQ(vertex_attrib_map, vertex_shader_->attrib_map());
- EXPECT_EQ(vertex_attrib_map, vertex_shader_->uniform_map());
- EXPECT_EQ(vertex_attrib_map, fragment_shader_->attrib_map());
- EXPECT_EQ(vertex_attrib_map, fragment_shader_->uniform_map());
+ EXPECT_EQ(vertex_uniform_map, vertex_shader_->uniform_map());
+ EXPECT_EQ(vertex_varying_map, vertex_shader_->varying_map());
+ EXPECT_EQ(fragment_attrib_map, fragment_shader_->attrib_map());
+ EXPECT_EQ(fragment_uniform_map, fragment_shader_->uniform_map());
+ EXPECT_EQ(fragment_varying_map, fragment_shader_->varying_map());
#endif
}
@@ -311,13 +325,17 @@ TEST_F(MemoryProgramCacheTest, LoadProgramMatchesSave) {
VariableMap vertex_attrib_map = vertex_shader_->attrib_map();
VariableMap vertex_uniform_map = vertex_shader_->uniform_map();
+ VariableMap vertex_varying_map = vertex_shader_->varying_map();
VariableMap fragment_attrib_map = fragment_shader_->attrib_map();
VariableMap fragment_uniform_map = fragment_shader_->uniform_map();
+ VariableMap fragment_varying_map = fragment_shader_->varying_map();
vertex_shader_->set_attrib_map(VariableMap());
vertex_shader_->set_uniform_map(VariableMap());
+ vertex_shader_->set_varying_map(VariableMap());
fragment_shader_->set_attrib_map(VariableMap());
fragment_shader_->set_uniform_map(VariableMap());
+ fragment_shader_->set_varying_map(VariableMap());
SetExpectationsForLoadLinkedProgram(kProgramId, &emulator);
@@ -338,9 +356,11 @@ TEST_F(MemoryProgramCacheTest, LoadProgramMatchesSave) {
// equality operator
#if !defined(OS_ANDROID)
EXPECT_EQ(vertex_attrib_map, vertex_shader_->attrib_map());
- EXPECT_EQ(vertex_attrib_map, vertex_shader_->uniform_map());
- EXPECT_EQ(vertex_attrib_map, fragment_shader_->attrib_map());
- EXPECT_EQ(vertex_attrib_map, fragment_shader_->uniform_map());
+ EXPECT_EQ(vertex_uniform_map, vertex_shader_->uniform_map());
+ EXPECT_EQ(vertex_varying_map, vertex_shader_->varying_map());
+ EXPECT_EQ(fragment_attrib_map, fragment_shader_->attrib_map());
+ EXPECT_EQ(fragment_uniform_map, fragment_shader_->uniform_map());
+ EXPECT_EQ(fragment_varying_map, fragment_shader_->varying_map());
#endif
}