| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/program_manager.h" | 5 #include "gpu/command_buffer/service/program_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/string_number_conversions.h" | 10 #include "base/string_number_conversions.h" |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 kClient1Id, kService1Id); | 118 kClient1Id, kService1Id); |
| 119 ASSERT_TRUE(info1); | 119 ASSERT_TRUE(info1); |
| 120 EXPECT_EQ(kService1Id, info1->service_id()); | 120 EXPECT_EQ(kService1Id, info1->service_id()); |
| 121 EXPECT_FALSE(info1->InUse()); | 121 EXPECT_FALSE(info1->InUse()); |
| 122 EXPECT_FALSE(info1->IsValid()); | 122 EXPECT_FALSE(info1->IsValid()); |
| 123 EXPECT_FALSE(info1->IsDeleted()); | 123 EXPECT_FALSE(info1->IsDeleted()); |
| 124 EXPECT_FALSE(info1->CanLink()); | 124 EXPECT_FALSE(info1->CanLink()); |
| 125 EXPECT_TRUE(info1->log_info() == NULL); | 125 EXPECT_TRUE(info1->log_info() == NULL); |
| 126 } | 126 } |
| 127 | 127 |
| 128 TEST_F(ProgramManagerTest, SwizzleLocation) { |
| 129 GLint power = 1; |
| 130 for (GLint p = 0; p < 5; ++p, power *= 10) { |
| 131 GLint limit = power * 20 + 1; |
| 132 for (GLint ii = -limit; ii < limit; ii += power) { |
| 133 GLint s = manager_.SwizzleLocation(ii); |
| 134 EXPECT_EQ(ii, manager_.UnswizzleLocation(s)); |
| 135 } |
| 136 } |
| 137 } |
| 138 |
| 128 class ProgramManagerWithShaderTest : public testing::Test { | 139 class ProgramManagerWithShaderTest : public testing::Test { |
| 129 public: | 140 public: |
| 130 ProgramManagerWithShaderTest() | 141 ProgramManagerWithShaderTest() |
| 131 : program_info_(NULL) { | 142 : program_info_(NULL) { |
| 132 } | 143 } |
| 133 | 144 |
| 134 ~ProgramManagerWithShaderTest() { | 145 ~ProgramManagerWithShaderTest() { |
| 135 manager_.Destroy(false); | 146 manager_.Destroy(false); |
| 136 shader_manager_.Destroy(false); | 147 shader_manager_.Destroy(false); |
| 137 } | 148 } |
| (...skipping 703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 841 EXPECT_TRUE(info2 == NULL); | 852 EXPECT_TRUE(info2 == NULL); |
| 842 EXPECT_FALSE(vshader->InUse()); | 853 EXPECT_FALSE(vshader->InUse()); |
| 843 EXPECT_FALSE(fshader->InUse()); | 854 EXPECT_FALSE(fshader->InUse()); |
| 844 } | 855 } |
| 845 | 856 |
| 846 TEST_F(ProgramManagerWithShaderTest, ProgramInfoGetProgramInfo) { | 857 TEST_F(ProgramManagerWithShaderTest, ProgramInfoGetProgramInfo) { |
| 847 CommonDecoder::Bucket bucket; | 858 CommonDecoder::Bucket bucket; |
| 848 const ProgramManager::ProgramInfo* program_info = | 859 const ProgramManager::ProgramInfo* program_info = |
| 849 manager_.GetProgramInfo(kClientProgramId); | 860 manager_.GetProgramInfo(kClientProgramId); |
| 850 ASSERT_TRUE(program_info != NULL); | 861 ASSERT_TRUE(program_info != NULL); |
| 851 program_info->GetProgramInfo(&bucket); | 862 program_info->GetProgramInfo(&manager_, &bucket); |
| 852 ProgramInfoHeader* header = | 863 ProgramInfoHeader* header = |
| 853 bucket.GetDataAs<ProgramInfoHeader*>(0, sizeof(ProgramInfoHeader)); | 864 bucket.GetDataAs<ProgramInfoHeader*>(0, sizeof(ProgramInfoHeader)); |
| 854 ASSERT_TRUE(header != NULL); | 865 ASSERT_TRUE(header != NULL); |
| 855 EXPECT_EQ(1u, header->link_status); | 866 EXPECT_EQ(1u, header->link_status); |
| 856 EXPECT_EQ(arraysize(kAttribs), header->num_attribs); | 867 EXPECT_EQ(arraysize(kAttribs), header->num_attribs); |
| 857 EXPECT_EQ(arraysize(kUniforms), header->num_uniforms); | 868 EXPECT_EQ(arraysize(kUniforms), header->num_uniforms); |
| 858 const ProgramInput* inputs = bucket.GetDataAs<const ProgramInput*>( | 869 const ProgramInput* inputs = bucket.GetDataAs<const ProgramInput*>( |
| 859 sizeof(*header), | 870 sizeof(*header), |
| 860 sizeof(ProgramInput) * (header->num_attribs + header->num_uniforms)); | 871 sizeof(ProgramInput) * (header->num_attribs + header->num_uniforms)); |
| 861 ASSERT_TRUE(inputs != NULL); | 872 ASSERT_TRUE(inputs != NULL); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 878 } | 889 } |
| 879 // TODO(gman): Don't assume these are in order. | 890 // TODO(gman): Don't assume these are in order. |
| 880 for (uint32 ii = 0; ii < header->num_uniforms; ++ii) { | 891 for (uint32 ii = 0; ii < header->num_uniforms; ++ii) { |
| 881 const UniformInfo& expected = kUniforms[ii]; | 892 const UniformInfo& expected = kUniforms[ii]; |
| 882 EXPECT_EQ(expected.size, input->size); | 893 EXPECT_EQ(expected.size, input->size); |
| 883 EXPECT_EQ(expected.type, input->type); | 894 EXPECT_EQ(expected.type, input->type); |
| 884 const int32* locations = bucket.GetDataAs<const int32*>( | 895 const int32* locations = bucket.GetDataAs<const int32*>( |
| 885 input->location_offset, sizeof(int32) * input->size); | 896 input->location_offset, sizeof(int32) * input->size); |
| 886 ASSERT_TRUE(locations != NULL); | 897 ASSERT_TRUE(locations != NULL); |
| 887 for (int32 jj = 0; jj < input->size; ++jj) { | 898 for (int32 jj = 0; jj < input->size; ++jj) { |
| 888 EXPECT_EQ(expected.location + jj * 2, locations[jj]); | 899 EXPECT_EQ(manager_.SwizzleLocation(expected.location + jj * 2), |
| 900 locations[jj]); |
| 889 } | 901 } |
| 890 const char* name_buf = bucket.GetDataAs<const char*>( | 902 const char* name_buf = bucket.GetDataAs<const char*>( |
| 891 input->name_offset, input->name_length); | 903 input->name_offset, input->name_length); |
| 892 ASSERT_TRUE(name_buf != NULL); | 904 ASSERT_TRUE(name_buf != NULL); |
| 893 std::string name(name_buf, input->name_length); | 905 std::string name(name_buf, input->name_length); |
| 894 EXPECT_STREQ(expected.good_name, name.c_str()); | 906 EXPECT_STREQ(expected.good_name, name.c_str()); |
| 895 ++input; | 907 ++input; |
| 896 } | 908 } |
| 897 EXPECT_EQ(header->num_attribs + header->num_uniforms, | 909 EXPECT_EQ(header->num_attribs + header->num_uniforms, |
| 898 static_cast<uint32>(input - inputs)); | 910 static_cast<uint32>(input - inputs)); |
| 899 } | 911 } |
| 900 | 912 |
| 901 } // namespace gles2 | 913 } // namespace gles2 |
| 902 } // namespace gpu | 914 } // namespace gpu |
| 903 | 915 |
| 904 | 916 |
| OLD | NEW |