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

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

Issue 16293004: Update gpu/ to use scoped_refptr<T>::get() rather than implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 7 years, 6 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 | Annotate | Revision Log
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/renderbuffer_manager.h" 5 #include "gpu/command_buffer/service/renderbuffer_manager.h"
6 6
7 #include <set> 7 #include <set>
8 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 8 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
9 #include "gpu/command_buffer/service/mocks.h" 9 #include "gpu/command_buffer/service/mocks.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 : public RenderbufferManagerTestBase { 51 : public RenderbufferManagerTestBase {
52 protected: 52 protected:
53 virtual void SetUp() { 53 virtual void SetUp() {
54 mock_memory_tracker_ = new StrictMock<MockMemoryTracker>(); 54 mock_memory_tracker_ = new StrictMock<MockMemoryTracker>();
55 SetUpBase(mock_memory_tracker_.get()); 55 SetUpBase(mock_memory_tracker_.get());
56 } 56 }
57 57
58 scoped_refptr<MockMemoryTracker> mock_memory_tracker_; 58 scoped_refptr<MockMemoryTracker> mock_memory_tracker_;
59 }; 59 };
60 60
61 #define EXPECT_MEMORY_ALLOCATION_CHANGE(old_size, new_size, pool) \ 61 #define EXPECT_MEMORY_ALLOCATION_CHANGE(old_size, new_size, pool) \
62 EXPECT_CALL(*mock_memory_tracker_, \ 62 EXPECT_CALL(*mock_memory_tracker_.get(), \
63 TrackMemoryAllocatedChange(old_size, new_size, pool)) \ 63 TrackMemoryAllocatedChange(old_size, new_size, pool)) \
64 .Times(1) \ 64 .Times(1).RetiresOnSaturation()
65 .RetiresOnSaturation() \
66 65
67 // GCC requires these declarations, but MSVC requires they not be present 66 // GCC requires these declarations, but MSVC requires they not be present
68 #ifndef COMPILER_MSVC 67 #ifndef COMPILER_MSVC
69 const GLint RenderbufferManagerTestBase::kMaxSize; 68 const GLint RenderbufferManagerTestBase::kMaxSize;
70 const GLint RenderbufferManagerTestBase::kMaxSamples; 69 const GLint RenderbufferManagerTestBase::kMaxSamples;
71 #endif 70 #endif
72 71
73 TEST_F(RenderbufferManagerTest, Basic) { 72 TEST_F(RenderbufferManagerTest, Basic) {
74 const GLuint kClient1Id = 1; 73 const GLuint kClient1Id = 1;
75 const GLuint kService1Id = 11; 74 const GLuint kService1Id = 11;
76 const GLuint kClient2Id = 2; 75 const GLuint kClient2Id = 2;
77 EXPECT_EQ(kMaxSize, manager_->max_renderbuffer_size()); 76 EXPECT_EQ(kMaxSize, manager_->max_renderbuffer_size());
78 EXPECT_EQ(kMaxSamples, manager_->max_samples()); 77 EXPECT_EQ(kMaxSamples, manager_->max_samples());
79 EXPECT_FALSE(manager_->HaveUnclearedRenderbuffers()); 78 EXPECT_FALSE(manager_->HaveUnclearedRenderbuffers());
80 // Check we can create renderbuffer. 79 // Check we can create renderbuffer.
81 manager_->CreateRenderbuffer(kClient1Id, kService1Id); 80 manager_->CreateRenderbuffer(kClient1Id, kService1Id);
82 // Check renderbuffer got created. 81 // Check renderbuffer got created.
83 scoped_refptr<Renderbuffer> renderbuffer1 = 82 scoped_refptr<Renderbuffer> renderbuffer1 =
84 manager_->GetRenderbuffer(kClient1Id); 83 manager_->GetRenderbuffer(kClient1Id);
85 ASSERT_TRUE(renderbuffer1 != NULL); 84 ASSERT_TRUE(renderbuffer1.get() != NULL);
86 EXPECT_FALSE(manager_->HaveUnclearedRenderbuffers()); 85 EXPECT_FALSE(manager_->HaveUnclearedRenderbuffers());
87 EXPECT_EQ(kClient1Id, renderbuffer1->client_id()); 86 EXPECT_EQ(kClient1Id, renderbuffer1->client_id());
88 // Check we get nothing for a non-existent renderbuffer. 87 // Check we get nothing for a non-existent renderbuffer.
89 EXPECT_TRUE(manager_->GetRenderbuffer(kClient2Id) == NULL); 88 EXPECT_TRUE(manager_->GetRenderbuffer(kClient2Id) == NULL);
90 // Check trying to a remove non-existent renderbuffers does not crash. 89 // Check trying to a remove non-existent renderbuffers does not crash.
91 manager_->RemoveRenderbuffer(kClient2Id); 90 manager_->RemoveRenderbuffer(kClient2Id);
92 // Check that the renderbuffer is deleted when the last ref is released. 91 // Check that the renderbuffer is deleted when the last ref is released.
93 EXPECT_CALL(*gl_, DeleteRenderbuffersEXT(1, ::testing::Pointee(kService1Id))) 92 EXPECT_CALL(*gl_, DeleteRenderbuffersEXT(1, ::testing::Pointee(kService1Id)))
94 .Times(1) 93 .Times(1)
95 .RetiresOnSaturation(); 94 .RetiresOnSaturation();
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 .Times(1) 197 .Times(1)
199 .RetiresOnSaturation(); 198 .RetiresOnSaturation();
200 } 199 }
201 200
202 TEST_F(RenderbufferManagerTest, UseDeletedRenderbufferInfo) { 201 TEST_F(RenderbufferManagerTest, UseDeletedRenderbufferInfo) {
203 const GLuint kClient1Id = 1; 202 const GLuint kClient1Id = 1;
204 const GLuint kService1Id = 11; 203 const GLuint kService1Id = 11;
205 manager_->CreateRenderbuffer(kClient1Id, kService1Id); 204 manager_->CreateRenderbuffer(kClient1Id, kService1Id);
206 scoped_refptr<Renderbuffer> renderbuffer1( 205 scoped_refptr<Renderbuffer> renderbuffer1(
207 manager_->GetRenderbuffer(kClient1Id)); 206 manager_->GetRenderbuffer(kClient1Id));
208 ASSERT_TRUE(renderbuffer1 != NULL); 207 ASSERT_TRUE(renderbuffer1.get() != NULL);
209 // Remove it. 208 // Remove it.
210 manager_->RemoveRenderbuffer(kClient1Id); 209 manager_->RemoveRenderbuffer(kClient1Id);
211 // Use after removing. 210 // Use after removing.
212 const GLsizei kSamples = 4; 211 const GLsizei kSamples = 4;
213 const GLenum kFormat = GL_RGBA4; 212 const GLenum kFormat = GL_RGBA4;
214 const GLsizei kWidth = 128; 213 const GLsizei kWidth = 128;
215 const GLsizei kHeight = 64; 214 const GLsizei kHeight = 64;
216 manager_->SetInfo(renderbuffer1, kSamples, kFormat, kWidth, kHeight); 215 manager_->SetInfo(renderbuffer1.get(), kSamples, kFormat, kWidth, kHeight);
217 // See that it still affects manager. 216 // See that it still affects manager.
218 EXPECT_TRUE(manager_->HaveUnclearedRenderbuffers()); 217 EXPECT_TRUE(manager_->HaveUnclearedRenderbuffers());
219 manager_->SetCleared(renderbuffer1, true); 218 manager_->SetCleared(renderbuffer1.get(), true);
220 EXPECT_FALSE(manager_->HaveUnclearedRenderbuffers()); 219 EXPECT_FALSE(manager_->HaveUnclearedRenderbuffers());
221 // Check that the renderbuffer is deleted when the last ref is released. 220 // Check that the renderbuffer is deleted when the last ref is released.
222 EXPECT_CALL(*gl_, DeleteRenderbuffersEXT(1, ::testing::Pointee(kService1Id))) 221 EXPECT_CALL(*gl_, DeleteRenderbuffersEXT(1, ::testing::Pointee(kService1Id)))
223 .Times(1) 222 .Times(1)
224 .RetiresOnSaturation(); 223 .RetiresOnSaturation();
225 renderbuffer1 = NULL; 224 renderbuffer1 = NULL;
226 } 225 }
227 226
228 namespace { 227 namespace {
229 228
230 bool InSet(std::set<std::string>* string_set, const std::string& str) { 229 bool InSet(std::set<std::string>* string_set, const std::string& str) {
231 std::pair<std::set<std::string>::iterator, bool> result = 230 std::pair<std::set<std::string>::iterator, bool> result =
232 string_set->insert(str); 231 string_set->insert(str);
233 return !result.second; 232 return !result.second;
234 } 233 }
235 234
236 } // anonymous namespace 235 } // anonymous namespace
237 236
238 TEST_F(RenderbufferManagerTest, AddToSignature) { 237 TEST_F(RenderbufferManagerTest, AddToSignature) {
239 const GLuint kClient1Id = 1; 238 const GLuint kClient1Id = 1;
240 const GLuint kService1Id = 11; 239 const GLuint kService1Id = 11;
241 manager_->CreateRenderbuffer(kClient1Id, kService1Id); 240 manager_->CreateRenderbuffer(kClient1Id, kService1Id);
242 scoped_refptr<Renderbuffer> renderbuffer1( 241 scoped_refptr<Renderbuffer> renderbuffer1(
243 manager_->GetRenderbuffer(kClient1Id)); 242 manager_->GetRenderbuffer(kClient1Id));
244 ASSERT_TRUE(renderbuffer1 != NULL); 243 ASSERT_TRUE(renderbuffer1.get() != NULL);
245 const GLsizei kSamples = 4; 244 const GLsizei kSamples = 4;
246 const GLenum kFormat = GL_RGBA4; 245 const GLenum kFormat = GL_RGBA4;
247 const GLsizei kWidth = 128; 246 const GLsizei kWidth = 128;
248 const GLsizei kHeight = 64; 247 const GLsizei kHeight = 64;
249 manager_->SetInfo(renderbuffer1, kSamples, kFormat, kWidth, kHeight); 248 manager_->SetInfo(renderbuffer1.get(), kSamples, kFormat, kWidth, kHeight);
250 std::string signature1; 249 std::string signature1;
251 std::string signature2; 250 std::string signature2;
252 renderbuffer1->AddToSignature(&signature1); 251 renderbuffer1->AddToSignature(&signature1);
253 252
254 std::set<std::string> string_set; 253 std::set<std::string> string_set;
255 EXPECT_FALSE(InSet(&string_set, signature1)); 254 EXPECT_FALSE(InSet(&string_set, signature1));
256 255
257 // change things and see that the signatures change. 256 // change things and see that the signatures change.
258 manager_->SetInfo(renderbuffer1, kSamples + 1, kFormat, kWidth, kHeight); 257 manager_->SetInfo(
258 renderbuffer1.get(), kSamples + 1, kFormat, kWidth, kHeight);
259 renderbuffer1->AddToSignature(&signature2); 259 renderbuffer1->AddToSignature(&signature2);
260 EXPECT_FALSE(InSet(&string_set, signature2)); 260 EXPECT_FALSE(InSet(&string_set, signature2));
261 261
262 manager_->SetInfo(renderbuffer1, kSamples, kFormat + 1, kWidth, kHeight); 262 manager_->SetInfo(
263 renderbuffer1.get(), kSamples, kFormat + 1, kWidth, kHeight);
263 signature2.clear(); 264 signature2.clear();
264 renderbuffer1->AddToSignature(&signature2); 265 renderbuffer1->AddToSignature(&signature2);
265 EXPECT_FALSE(InSet(&string_set, signature2)); 266 EXPECT_FALSE(InSet(&string_set, signature2));
266 267
267 manager_->SetInfo(renderbuffer1, kSamples, kFormat, kWidth + 1, kHeight); 268 manager_->SetInfo(
269 renderbuffer1.get(), kSamples, kFormat, kWidth + 1, kHeight);
268 signature2.clear(); 270 signature2.clear();
269 renderbuffer1->AddToSignature(&signature2); 271 renderbuffer1->AddToSignature(&signature2);
270 EXPECT_FALSE(InSet(&string_set, signature2)); 272 EXPECT_FALSE(InSet(&string_set, signature2));
271 273
272 manager_->SetInfo(renderbuffer1, kSamples, kFormat, kWidth, kHeight + 1); 274 manager_->SetInfo(
275 renderbuffer1.get(), kSamples, kFormat, kWidth, kHeight + 1);
273 signature2.clear(); 276 signature2.clear();
274 renderbuffer1->AddToSignature(&signature2); 277 renderbuffer1->AddToSignature(&signature2);
275 EXPECT_FALSE(InSet(&string_set, signature2)); 278 EXPECT_FALSE(InSet(&string_set, signature2));
276 279
277 // put it back to the same and it should be the same. 280 // put it back to the same and it should be the same.
278 manager_->SetInfo(renderbuffer1, kSamples, kFormat, kWidth, kHeight); 281 manager_->SetInfo(renderbuffer1.get(), kSamples, kFormat, kWidth, kHeight);
279 signature2.clear(); 282 signature2.clear();
280 renderbuffer1->AddToSignature(&signature2); 283 renderbuffer1->AddToSignature(&signature2);
281 EXPECT_EQ(signature1, signature2); 284 EXPECT_EQ(signature1, signature2);
282 285
283 // Check the set was acutally getting different signatures. 286 // Check the set was acutally getting different signatures.
284 EXPECT_EQ(5u, string_set.size()); 287 EXPECT_EQ(5u, string_set.size());
285 288
286 EXPECT_CALL(*gl_, DeleteRenderbuffersEXT(1, ::testing::Pointee(kService1Id))) 289 EXPECT_CALL(*gl_, DeleteRenderbuffersEXT(1, ::testing::Pointee(kService1Id)))
287 .Times(1) 290 .Times(1)
288 .RetiresOnSaturation(); 291 .RetiresOnSaturation();
289 } 292 }
290 293
291 } // namespace gles2 294 } // namespace gles2
292 } // namespace gpu 295 } // namespace gpu
293 296
294 297
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/renderbuffer_manager.cc ('k') | gpu/command_buffer/service/shader_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698