OLD | NEW |
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/vertex_attrib_manager.h" | 5 #include "gpu/command_buffer/service/vertex_attrib_manager.h" |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "gpu/command_buffer/service/buffer_manager.h" | 8 #include "gpu/command_buffer/service/buffer_manager.h" |
9 #include "gpu/command_buffer/service/feature_info.h" | 9 #include "gpu/command_buffer/service/feature_info.h" |
10 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" | |
11 #include "gpu/command_buffer/service/test_helper.h" | 10 #include "gpu/command_buffer/service/test_helper.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
13 #include "ui/gl/gl_mock.h" | 12 #include "ui/gl/gl_mock.h" |
14 | 13 |
15 using ::testing::Pointee; | 14 using ::testing::Pointee; |
16 using ::testing::_; | 15 using ::testing::_; |
17 | 16 |
18 namespace gpu { | 17 namespace gpu { |
19 namespace gles2 { | 18 namespace gles2 { |
20 | 19 |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 manager_->Enable(1, false); | 102 manager_->Enable(1, false); |
104 ASSERT_EQ(1u, infos.size()); | 103 ASSERT_EQ(1u, infos.size()); |
105 EXPECT_FALSE(info1->enabled()); | 104 EXPECT_FALSE(info1->enabled()); |
106 | 105 |
107 manager_->Enable(3, false); | 106 manager_->Enable(3, false); |
108 ASSERT_EQ(0u, infos.size()); | 107 ASSERT_EQ(0u, infos.size()); |
109 EXPECT_FALSE(info2->enabled()); | 108 EXPECT_FALSE(info2->enabled()); |
110 } | 109 } |
111 | 110 |
112 TEST_F(VertexAttribManagerTest, SetAttribInfo) { | 111 TEST_F(VertexAttribManagerTest, SetAttribInfo) { |
113 BufferManager buffer_manager(NULL, NULL); | 112 BufferManager buffer_manager(NULL); |
114 buffer_manager.CreateBuffer(1, 2); | 113 buffer_manager.CreateBuffer(1, 2); |
115 Buffer* buffer = buffer_manager.GetBuffer(1); | 114 Buffer* buffer = buffer_manager.GetBuffer(1); |
116 ASSERT_TRUE(buffer != NULL); | 115 ASSERT_TRUE(buffer != NULL); |
117 | 116 |
118 VertexAttrib* info = | 117 VertexAttrib* info = |
119 manager_->GetVertexAttrib(1); | 118 manager_->GetVertexAttrib(1); |
120 | 119 |
121 manager_->SetAttribInfo(1, buffer, 3, GL_SHORT, GL_TRUE, 32, 32, 4); | 120 manager_->SetAttribInfo(1, buffer, 3, GL_SHORT, GL_TRUE, 32, 32, 4); |
122 | 121 |
123 EXPECT_EQ(buffer, info->buffer()); | 122 EXPECT_EQ(buffer, info->buffer()); |
(...skipping 15 matching lines...) Expand all Loading... |
139 EXPECT_TRUE(manager_->HaveFixedAttribs()); | 138 EXPECT_TRUE(manager_->HaveFixedAttribs()); |
140 manager_->SetAttribInfo(3, NULL, 4, GL_FIXED, GL_FALSE, 0, 16, 0); | 139 manager_->SetAttribInfo(3, NULL, 4, GL_FIXED, GL_FALSE, 0, 16, 0); |
141 EXPECT_TRUE(manager_->HaveFixedAttribs()); | 140 EXPECT_TRUE(manager_->HaveFixedAttribs()); |
142 manager_->SetAttribInfo(1, NULL, 4, GL_FLOAT, GL_FALSE, 0, 16, 0); | 141 manager_->SetAttribInfo(1, NULL, 4, GL_FLOAT, GL_FALSE, 0, 16, 0); |
143 EXPECT_TRUE(manager_->HaveFixedAttribs()); | 142 EXPECT_TRUE(manager_->HaveFixedAttribs()); |
144 manager_->SetAttribInfo(3, NULL, 4, GL_FLOAT, GL_FALSE, 0, 16, 0); | 143 manager_->SetAttribInfo(3, NULL, 4, GL_FLOAT, GL_FALSE, 0, 16, 0); |
145 EXPECT_FALSE(manager_->HaveFixedAttribs()); | 144 EXPECT_FALSE(manager_->HaveFixedAttribs()); |
146 } | 145 } |
147 | 146 |
148 TEST_F(VertexAttribManagerTest, CanAccess) { | 147 TEST_F(VertexAttribManagerTest, CanAccess) { |
149 MockGLES2Decoder decoder; | 148 BufferManager buffer_manager(NULL); |
150 BufferManager buffer_manager(NULL, NULL); | |
151 buffer_manager.CreateBuffer(1, 2); | 149 buffer_manager.CreateBuffer(1, 2); |
152 Buffer* buffer = buffer_manager.GetBuffer(1); | 150 Buffer* buffer = buffer_manager.GetBuffer(1); |
153 ASSERT_TRUE(buffer != NULL); | 151 ASSERT_TRUE(buffer != NULL); |
154 | 152 |
155 VertexAttrib* info = | 153 VertexAttrib* info = |
156 manager_->GetVertexAttrib(1); | 154 manager_->GetVertexAttrib(1); |
157 | 155 |
158 EXPECT_TRUE(info->CanAccess(0)); | 156 EXPECT_TRUE(info->CanAccess(0)); |
159 manager_->Enable(1, true); | 157 manager_->Enable(1, true); |
160 EXPECT_FALSE(info->CanAccess(0)); | 158 EXPECT_FALSE(info->CanAccess(0)); |
161 | 159 |
162 manager_->SetAttribInfo(1, buffer, 4, GL_FLOAT, GL_FALSE, 0, 16, 0); | 160 manager_->SetAttribInfo(1, buffer, 4, GL_FLOAT, GL_FALSE, 0, 16, 0); |
163 EXPECT_FALSE(info->CanAccess(0)); | 161 EXPECT_FALSE(info->CanAccess(0)); |
164 | 162 |
165 EXPECT_TRUE(buffer_manager.SetTarget(buffer, GL_ARRAY_BUFFER)); | 163 EXPECT_TRUE(buffer_manager.SetTarget(buffer, GL_ARRAY_BUFFER)); |
166 TestHelper::DoBufferData( | 164 buffer_manager.SetInfo(buffer, 15, GL_STATIC_DRAW); |
167 gl_.get(), &decoder, &buffer_manager, buffer, 15, GL_STATIC_DRAW, NULL, | |
168 GL_NO_ERROR); | |
169 | 165 |
170 EXPECT_FALSE(info->CanAccess(0)); | 166 EXPECT_FALSE(info->CanAccess(0)); |
171 TestHelper::DoBufferData( | 167 buffer_manager.SetInfo(buffer, 16, GL_STATIC_DRAW); |
172 gl_.get(), &decoder, &buffer_manager, buffer, 16, GL_STATIC_DRAW, NULL, | |
173 GL_NO_ERROR); | |
174 EXPECT_TRUE(info->CanAccess(0)); | 168 EXPECT_TRUE(info->CanAccess(0)); |
175 EXPECT_FALSE(info->CanAccess(1)); | 169 EXPECT_FALSE(info->CanAccess(1)); |
176 | 170 |
177 manager_->SetAttribInfo(1, buffer, 4, GL_FLOAT, GL_FALSE, 0, 16, 1); | 171 manager_->SetAttribInfo(1, buffer, 4, GL_FLOAT, GL_FALSE, 0, 16, 1); |
178 EXPECT_FALSE(info->CanAccess(0)); | 172 EXPECT_FALSE(info->CanAccess(0)); |
179 | 173 |
180 TestHelper::DoBufferData( | 174 buffer_manager.SetInfo(buffer, 32, GL_STATIC_DRAW); |
181 gl_.get(), &decoder, &buffer_manager, buffer, 32, GL_STATIC_DRAW, NULL, | |
182 GL_NO_ERROR); | |
183 EXPECT_TRUE(info->CanAccess(0)); | 175 EXPECT_TRUE(info->CanAccess(0)); |
184 EXPECT_FALSE(info->CanAccess(1)); | 176 EXPECT_FALSE(info->CanAccess(1)); |
185 manager_->SetAttribInfo(1, buffer, 4, GL_FLOAT, GL_FALSE, 0, 16, 0); | 177 manager_->SetAttribInfo(1, buffer, 4, GL_FLOAT, GL_FALSE, 0, 16, 0); |
186 EXPECT_TRUE(info->CanAccess(1)); | 178 EXPECT_TRUE(info->CanAccess(1)); |
187 manager_->SetAttribInfo(1, buffer, 4, GL_FLOAT, GL_FALSE, 0, 20, 0); | 179 manager_->SetAttribInfo(1, buffer, 4, GL_FLOAT, GL_FALSE, 0, 20, 0); |
188 EXPECT_TRUE(info->CanAccess(0)); | 180 EXPECT_TRUE(info->CanAccess(0)); |
189 EXPECT_FALSE(info->CanAccess(1)); | 181 EXPECT_FALSE(info->CanAccess(1)); |
190 | 182 |
191 // The VertexAttribManager must be destroyed before the BufferManager | 183 // The VertexAttribManager must be destroyed before the BufferManager |
192 // so it releases its buffers. | 184 // so it releases its buffers. |
193 manager_ = NULL; | 185 manager_ = NULL; |
194 buffer_manager.Destroy(false); | 186 buffer_manager.Destroy(false); |
195 } | 187 } |
196 | 188 |
197 TEST_F(VertexAttribManagerTest, Unbind) { | 189 TEST_F(VertexAttribManagerTest, Unbind) { |
198 BufferManager buffer_manager(NULL, NULL); | 190 BufferManager buffer_manager(NULL); |
199 buffer_manager.CreateBuffer(1, 2); | 191 buffer_manager.CreateBuffer(1, 2); |
200 buffer_manager.CreateBuffer(3, 4); | 192 buffer_manager.CreateBuffer(3, 4); |
201 Buffer* buffer1 = buffer_manager.GetBuffer(1); | 193 Buffer* buffer1 = buffer_manager.GetBuffer(1); |
202 Buffer* buffer2 = buffer_manager.GetBuffer(3); | 194 Buffer* buffer2 = buffer_manager.GetBuffer(3); |
203 ASSERT_TRUE(buffer1 != NULL); | 195 ASSERT_TRUE(buffer1 != NULL); |
204 ASSERT_TRUE(buffer2 != NULL); | 196 ASSERT_TRUE(buffer2 != NULL); |
205 | 197 |
206 VertexAttrib* info1 = | 198 VertexAttrib* info1 = |
207 manager_->GetVertexAttrib(1); | 199 manager_->GetVertexAttrib(1); |
208 VertexAttrib* info3 = | 200 VertexAttrib* info3 = |
(...skipping 15 matching lines...) Expand all Loading... |
224 // Check they were detached | 216 // Check they were detached |
225 EXPECT_TRUE(NULL == info1->buffer()); | 217 EXPECT_TRUE(NULL == info1->buffer()); |
226 EXPECT_TRUE(NULL == info3->buffer()); | 218 EXPECT_TRUE(NULL == info3->buffer()); |
227 | 219 |
228 // The VertexAttribManager must be destroyed before the BufferManager | 220 // The VertexAttribManager must be destroyed before the BufferManager |
229 // so it releases its buffers. | 221 // so it releases its buffers. |
230 manager_ = NULL; | 222 manager_ = NULL; |
231 buffer_manager.Destroy(false); | 223 buffer_manager.Destroy(false); |
232 } | 224 } |
233 | 225 |
234 // TODO(gman): Test ValidateBindings | |
235 // TODO(gman): Test ValidateBindings with client side arrays. | |
236 | |
237 } // namespace gles2 | 226 } // namespace gles2 |
238 } // namespace gpu | 227 } // namespace gpu |
239 | 228 |
240 | 229 |
OLD | NEW |