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

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

Issue 12326146: Refactor/Rename a bunch of GPU stuff (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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/buffer_manager.h" 5 #include "gpu/command_buffer/service/buffer_manager.h"
6 #include "gpu/command_buffer/service/mocks.h" 6 #include "gpu/command_buffer/service/mocks.h"
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "ui/gl/gl_mock.h" 8 #include "ui/gl/gl_mock.h"
9 9
10 using ::testing::StrictMock; 10 using ::testing::StrictMock;
11 11
12 namespace gpu { 12 namespace gpu {
13 namespace gles2 { 13 namespace gles2 {
14 14
15 class BufferManagerTestBase : public testing::Test { 15 class BufferManagerTestBase : public testing::Test {
16 protected: 16 protected:
17 void SetUpBase(MemoryTracker* memory_tracker) { 17 void SetUpBase(MemoryTracker* memory_tracker) {
18 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>()); 18 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
19 ::gfx::GLInterface::SetGLInterface(gl_.get()); 19 ::gfx::GLInterface::SetGLInterface(gl_.get());
20 manager_.reset(new BufferManager(memory_tracker)); 20 manager_.reset(new BufferManager(memory_tracker));
21 } 21 }
22 22
23 virtual void TearDown() { 23 virtual void TearDown() {
24 manager_->Destroy(false); 24 manager_->Destroy(false);
25 manager_.reset(); 25 manager_.reset();
26 ::gfx::GLInterface::SetGLInterface(NULL); 26 ::gfx::GLInterface::SetGLInterface(NULL);
27 gl_.reset(); 27 gl_.reset();
28 } 28 }
29 29
30 GLenum GetTarget(const BufferManager::BufferInfo* info) const { 30 GLenum GetTarget(const BufferManager::Buffer* info) const {
31 return info->target(); 31 return info->target();
32 } 32 }
33 33
34 // Use StrictMock to make 100% sure we know how GL will be called. 34 // Use StrictMock to make 100% sure we know how GL will be called.
35 scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_; 35 scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
36 scoped_ptr<BufferManager> manager_; 36 scoped_ptr<BufferManager> manager_;
37 }; 37 };
38 38
39 class BufferManagerTest : public BufferManagerTestBase { 39 class BufferManagerTest : public BufferManagerTestBase {
40 protected: 40 protected:
(...skipping 17 matching lines...) Expand all
58 TrackMemoryAllocatedChange(old_size, new_size, pool)) \ 58 TrackMemoryAllocatedChange(old_size, new_size, pool)) \
59 .Times(1) \ 59 .Times(1) \
60 .RetiresOnSaturation() \ 60 .RetiresOnSaturation() \
61 61
62 TEST_F(BufferManagerTest, Basic) { 62 TEST_F(BufferManagerTest, Basic) {
63 const GLuint kClientBuffer1Id = 1; 63 const GLuint kClientBuffer1Id = 1;
64 const GLuint kServiceBuffer1Id = 11; 64 const GLuint kServiceBuffer1Id = 11;
65 const GLsizeiptr kBuffer1Size = 123; 65 const GLsizeiptr kBuffer1Size = 123;
66 const GLuint kClientBuffer2Id = 2; 66 const GLuint kClientBuffer2Id = 2;
67 // Check we can create buffer. 67 // Check we can create buffer.
68 manager_->CreateBufferInfo(kClientBuffer1Id, kServiceBuffer1Id); 68 manager_->CreateBuffer(kClientBuffer1Id, kServiceBuffer1Id);
69 // Check buffer got created. 69 // Check buffer got created.
70 BufferManager::BufferInfo* info1 = manager_->GetBufferInfo(kClientBuffer1Id); 70 BufferManager::Buffer* info1 = manager_->GetBuffer(kClientBuffer1Id);
71 ASSERT_TRUE(info1 != NULL); 71 ASSERT_TRUE(info1 != NULL);
72 EXPECT_EQ(0u, GetTarget(info1)); 72 EXPECT_EQ(0u, GetTarget(info1));
73 EXPECT_EQ(0, info1->size()); 73 EXPECT_EQ(0, info1->size());
74 EXPECT_EQ(static_cast<GLenum>(GL_STATIC_DRAW), info1->usage()); 74 EXPECT_EQ(static_cast<GLenum>(GL_STATIC_DRAW), info1->usage());
75 EXPECT_FALSE(info1->IsDeleted()); 75 EXPECT_FALSE(info1->IsDeleted());
76 EXPECT_EQ(kServiceBuffer1Id, info1->service_id()); 76 EXPECT_EQ(kServiceBuffer1Id, info1->service_id());
77 GLuint client_id = 0; 77 GLuint client_id = 0;
78 EXPECT_TRUE(manager_->GetClientId(info1->service_id(), &client_id)); 78 EXPECT_TRUE(manager_->GetClientId(info1->service_id(), &client_id));
79 EXPECT_EQ(kClientBuffer1Id, client_id); 79 EXPECT_EQ(kClientBuffer1Id, client_id);
80 manager_->SetTarget(info1, GL_ELEMENT_ARRAY_BUFFER); 80 manager_->SetTarget(info1, GL_ELEMENT_ARRAY_BUFFER);
81 EXPECT_EQ(static_cast<GLenum>(GL_ELEMENT_ARRAY_BUFFER), GetTarget(info1)); 81 EXPECT_EQ(static_cast<GLenum>(GL_ELEMENT_ARRAY_BUFFER), GetTarget(info1));
82 // Check we and set its size. 82 // Check we and set its size.
83 manager_->SetInfo(info1, kBuffer1Size, GL_DYNAMIC_DRAW); 83 manager_->SetInfo(info1, kBuffer1Size, GL_DYNAMIC_DRAW);
84 EXPECT_EQ(kBuffer1Size, info1->size()); 84 EXPECT_EQ(kBuffer1Size, info1->size());
85 EXPECT_EQ(static_cast<GLenum>(GL_DYNAMIC_DRAW), info1->usage()); 85 EXPECT_EQ(static_cast<GLenum>(GL_DYNAMIC_DRAW), info1->usage());
86 // Check we get nothing for a non-existent buffer. 86 // Check we get nothing for a non-existent buffer.
87 EXPECT_TRUE(manager_->GetBufferInfo(kClientBuffer2Id) == NULL); 87 EXPECT_TRUE(manager_->GetBuffer(kClientBuffer2Id) == NULL);
88 // Check trying to a remove non-existent buffers does not crash. 88 // Check trying to a remove non-existent buffers does not crash.
89 manager_->RemoveBufferInfo(kClientBuffer2Id); 89 manager_->RemoveBuffer(kClientBuffer2Id);
90 // Check that it gets deleted when the last reference is released. 90 // Check that it gets deleted when the last reference is released.
91 EXPECT_CALL(*gl_, DeleteBuffersARB(1, ::testing::Pointee(kServiceBuffer1Id))) 91 EXPECT_CALL(*gl_, DeleteBuffersARB(1, ::testing::Pointee(kServiceBuffer1Id)))
92 .Times(1) 92 .Times(1)
93 .RetiresOnSaturation(); 93 .RetiresOnSaturation();
94 // Check we can't get the buffer after we remove it. 94 // Check we can't get the buffer after we remove it.
95 manager_->RemoveBufferInfo(kClientBuffer1Id); 95 manager_->RemoveBuffer(kClientBuffer1Id);
96 EXPECT_TRUE(manager_->GetBufferInfo(kClientBuffer1Id) == NULL); 96 EXPECT_TRUE(manager_->GetBuffer(kClientBuffer1Id) == NULL);
97 } 97 }
98 98
99 TEST_F(BufferManagerMemoryTrackerTest, Basic) { 99 TEST_F(BufferManagerMemoryTrackerTest, Basic) {
100 const GLuint kClientBuffer1Id = 1; 100 const GLuint kClientBuffer1Id = 1;
101 const GLuint kServiceBuffer1Id = 11; 101 const GLuint kServiceBuffer1Id = 11;
102 const GLsizeiptr kBuffer1Size1 = 123; 102 const GLsizeiptr kBuffer1Size1 = 123;
103 const GLsizeiptr kBuffer1Size2 = 456; 103 const GLsizeiptr kBuffer1Size2 = 456;
104 // Check we can create buffer. 104 // Check we can create buffer.
105 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kManaged); 105 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kManaged);
106 manager_->CreateBufferInfo(kClientBuffer1Id, kServiceBuffer1Id); 106 manager_->CreateBuffer(kClientBuffer1Id, kServiceBuffer1Id);
107 // Check buffer got created. 107 // Check buffer got created.
108 BufferManager::BufferInfo* info1 = manager_->GetBufferInfo(kClientBuffer1Id); 108 BufferManager::Buffer* info1 = manager_->GetBuffer(kClientBuffer1Id);
109 ASSERT_TRUE(info1 != NULL); 109 ASSERT_TRUE(info1 != NULL);
110 manager_->SetTarget(info1, GL_ELEMENT_ARRAY_BUFFER); 110 manager_->SetTarget(info1, GL_ELEMENT_ARRAY_BUFFER);
111 // Check we and set its size. 111 // Check we and set its size.
112 EXPECT_MEMORY_ALLOCATION_CHANGE(0, kBuffer1Size1, MemoryTracker::kManaged); 112 EXPECT_MEMORY_ALLOCATION_CHANGE(0, kBuffer1Size1, MemoryTracker::kManaged);
113 manager_->SetInfo(info1, kBuffer1Size1, GL_DYNAMIC_DRAW); 113 manager_->SetInfo(info1, kBuffer1Size1, GL_DYNAMIC_DRAW);
114 EXPECT_MEMORY_ALLOCATION_CHANGE(kBuffer1Size1, 0, MemoryTracker::kManaged); 114 EXPECT_MEMORY_ALLOCATION_CHANGE(kBuffer1Size1, 0, MemoryTracker::kManaged);
115 EXPECT_MEMORY_ALLOCATION_CHANGE(0, kBuffer1Size2, MemoryTracker::kManaged); 115 EXPECT_MEMORY_ALLOCATION_CHANGE(0, kBuffer1Size2, MemoryTracker::kManaged);
116 manager_->SetInfo(info1, kBuffer1Size2, GL_DYNAMIC_DRAW); 116 manager_->SetInfo(info1, kBuffer1Size2, GL_DYNAMIC_DRAW);
117 // On delete it will get freed. 117 // On delete it will get freed.
118 EXPECT_MEMORY_ALLOCATION_CHANGE(kBuffer1Size2, 0, MemoryTracker::kManaged); 118 EXPECT_MEMORY_ALLOCATION_CHANGE(kBuffer1Size2, 0, MemoryTracker::kManaged);
119 } 119 }
120 120
121 TEST_F(BufferManagerTest, Destroy) { 121 TEST_F(BufferManagerTest, Destroy) {
122 const GLuint kClient1Id = 1; 122 const GLuint kClient1Id = 1;
123 const GLuint kService1Id = 11; 123 const GLuint kService1Id = 11;
124 // Check we can create buffer. 124 // Check we can create buffer.
125 manager_->CreateBufferInfo(kClient1Id, kService1Id); 125 manager_->CreateBuffer(kClient1Id, kService1Id);
126 // Check buffer got created. 126 // Check buffer got created.
127 BufferManager::BufferInfo* info1 = 127 BufferManager::Buffer* info1 =
128 manager_->GetBufferInfo(kClient1Id); 128 manager_->GetBuffer(kClient1Id);
129 ASSERT_TRUE(info1 != NULL); 129 ASSERT_TRUE(info1 != NULL);
130 EXPECT_CALL(*gl_, DeleteBuffersARB(1, ::testing::Pointee(kService1Id))) 130 EXPECT_CALL(*gl_, DeleteBuffersARB(1, ::testing::Pointee(kService1Id)))
131 .Times(1) 131 .Times(1)
132 .RetiresOnSaturation(); 132 .RetiresOnSaturation();
133 manager_->Destroy(true); 133 manager_->Destroy(true);
134 // Check the resources were released. 134 // Check the resources were released.
135 info1 = manager_->GetBufferInfo(kClient1Id); 135 info1 = manager_->GetBuffer(kClient1Id);
136 ASSERT_TRUE(info1 == NULL); 136 ASSERT_TRUE(info1 == NULL);
137 } 137 }
138 138
139 TEST_F(BufferManagerTest, SetRange) { 139 TEST_F(BufferManagerTest, SetRange) {
140 const GLuint kClientBufferId = 1; 140 const GLuint kClientBufferId = 1;
141 const GLuint kServiceBufferId = 11; 141 const GLuint kServiceBufferId = 11;
142 const uint8 data[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}; 142 const uint8 data[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
143 manager_->CreateBufferInfo(kClientBufferId, kServiceBufferId); 143 manager_->CreateBuffer(kClientBufferId, kServiceBufferId);
144 BufferManager::BufferInfo* info = manager_->GetBufferInfo(kClientBufferId); 144 BufferManager::Buffer* info = manager_->GetBuffer(kClientBufferId);
145 ASSERT_TRUE(info != NULL); 145 ASSERT_TRUE(info != NULL);
146 manager_->SetTarget(info, GL_ELEMENT_ARRAY_BUFFER); 146 manager_->SetTarget(info, GL_ELEMENT_ARRAY_BUFFER);
147 manager_->SetInfo(info, sizeof(data), GL_STATIC_DRAW); 147 manager_->SetInfo(info, sizeof(data), GL_STATIC_DRAW);
148 EXPECT_TRUE(info->SetRange(0, sizeof(data), data)); 148 EXPECT_TRUE(info->SetRange(0, sizeof(data), data));
149 EXPECT_TRUE(info->SetRange(sizeof(data), 0, data)); 149 EXPECT_TRUE(info->SetRange(sizeof(data), 0, data));
150 EXPECT_FALSE(info->SetRange(sizeof(data), 1, data)); 150 EXPECT_FALSE(info->SetRange(sizeof(data), 1, data));
151 EXPECT_FALSE(info->SetRange(0, sizeof(data) + 1, data)); 151 EXPECT_FALSE(info->SetRange(0, sizeof(data) + 1, data));
152 EXPECT_FALSE(info->SetRange(-1, sizeof(data), data)); 152 EXPECT_FALSE(info->SetRange(-1, sizeof(data), data));
153 EXPECT_FALSE(info->SetRange(0, -1, data)); 153 EXPECT_FALSE(info->SetRange(0, -1, data));
154 manager_->SetInfo(info, 1, GL_STATIC_DRAW); 154 manager_->SetInfo(info, 1, GL_STATIC_DRAW);
155 const int size = 0x20000; 155 const int size = 0x20000;
156 scoped_array<uint8> temp(new uint8[size]); 156 scoped_array<uint8> temp(new uint8[size]);
157 EXPECT_FALSE(info->SetRange(0 - size, size, temp.get())); 157 EXPECT_FALSE(info->SetRange(0 - size, size, temp.get()));
158 EXPECT_FALSE(info->SetRange(1, size / 2, temp.get())); 158 EXPECT_FALSE(info->SetRange(1, size / 2, temp.get()));
159 } 159 }
160 160
161 TEST_F(BufferManagerTest, GetRange) { 161 TEST_F(BufferManagerTest, GetRange) {
162 const GLuint kClientBufferId = 1; 162 const GLuint kClientBufferId = 1;
163 const GLuint kServiceBufferId = 11; 163 const GLuint kServiceBufferId = 11;
164 const uint8 data[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}; 164 const uint8 data[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
165 manager_->CreateBufferInfo(kClientBufferId, kServiceBufferId); 165 manager_->CreateBuffer(kClientBufferId, kServiceBufferId);
166 BufferManager::BufferInfo* info = manager_->GetBufferInfo(kClientBufferId); 166 BufferManager::Buffer* info = manager_->GetBuffer(kClientBufferId);
167 ASSERT_TRUE(info != NULL); 167 ASSERT_TRUE(info != NULL);
168 manager_->SetTarget(info, GL_ELEMENT_ARRAY_BUFFER); 168 manager_->SetTarget(info, GL_ELEMENT_ARRAY_BUFFER);
169 manager_->SetInfo(info, sizeof(data), GL_STATIC_DRAW); 169 manager_->SetInfo(info, sizeof(data), GL_STATIC_DRAW);
170 const char* buf = static_cast<const char*>(info->GetRange(0, sizeof(data))); 170 const char* buf = static_cast<const char*>(info->GetRange(0, sizeof(data)));
171 ASSERT_TRUE(buf != NULL); 171 ASSERT_TRUE(buf != NULL);
172 const char* buf1 = 172 const char* buf1 =
173 static_cast<const char*>(info->GetRange(1, sizeof(data) - 1)); 173 static_cast<const char*>(info->GetRange(1, sizeof(data) - 1));
174 EXPECT_EQ(buf + 1, buf1); 174 EXPECT_EQ(buf + 1, buf1);
175 EXPECT_TRUE(info->GetRange(sizeof(data), 1) == NULL); 175 EXPECT_TRUE(info->GetRange(sizeof(data), 1) == NULL);
176 EXPECT_TRUE(info->GetRange(0, sizeof(data) + 1) == NULL); 176 EXPECT_TRUE(info->GetRange(0, sizeof(data) + 1) == NULL);
177 EXPECT_TRUE(info->GetRange(-1, sizeof(data)) == NULL); 177 EXPECT_TRUE(info->GetRange(-1, sizeof(data)) == NULL);
178 EXPECT_TRUE(info->GetRange(-0, -1) == NULL); 178 EXPECT_TRUE(info->GetRange(-0, -1) == NULL);
179 const int size = 0x20000; 179 const int size = 0x20000;
180 manager_->SetInfo(info, size / 2, GL_STATIC_DRAW); 180 manager_->SetInfo(info, size / 2, GL_STATIC_DRAW);
181 EXPECT_TRUE(info->GetRange(0 - size, size) == NULL); 181 EXPECT_TRUE(info->GetRange(0 - size, size) == NULL);
182 EXPECT_TRUE(info->GetRange(1, size / 2) == NULL); 182 EXPECT_TRUE(info->GetRange(1, size / 2) == NULL);
183 } 183 }
184 184
185 TEST_F(BufferManagerTest, GetMaxValueForRangeUint8) { 185 TEST_F(BufferManagerTest, GetMaxValueForRangeUint8) {
186 const GLuint kClientBufferId = 1; 186 const GLuint kClientBufferId = 1;
187 const GLuint kServiceBufferId = 11; 187 const GLuint kServiceBufferId = 11;
188 const uint8 data[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}; 188 const uint8 data[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
189 const uint8 new_data[] = {100, 120, 110}; 189 const uint8 new_data[] = {100, 120, 110};
190 manager_->CreateBufferInfo(kClientBufferId, kServiceBufferId); 190 manager_->CreateBuffer(kClientBufferId, kServiceBufferId);
191 BufferManager::BufferInfo* info = manager_->GetBufferInfo(kClientBufferId); 191 BufferManager::Buffer* info = manager_->GetBuffer(kClientBufferId);
192 ASSERT_TRUE(info != NULL); 192 ASSERT_TRUE(info != NULL);
193 manager_->SetTarget(info, GL_ELEMENT_ARRAY_BUFFER); 193 manager_->SetTarget(info, GL_ELEMENT_ARRAY_BUFFER);
194 manager_->SetInfo(info, sizeof(data), GL_STATIC_DRAW); 194 manager_->SetInfo(info, sizeof(data), GL_STATIC_DRAW);
195 EXPECT_TRUE(info->SetRange(0, sizeof(data), data)); 195 EXPECT_TRUE(info->SetRange(0, sizeof(data), data));
196 GLuint max_value; 196 GLuint max_value;
197 // Check entire range succeeds. 197 // Check entire range succeeds.
198 EXPECT_TRUE(info->GetMaxValueForRange(0, 10, GL_UNSIGNED_BYTE, &max_value)); 198 EXPECT_TRUE(info->GetMaxValueForRange(0, 10, GL_UNSIGNED_BYTE, &max_value));
199 EXPECT_EQ(10u, max_value); 199 EXPECT_EQ(10u, max_value);
200 // Check sub range succeeds. 200 // Check sub range succeeds.
201 EXPECT_TRUE(info->GetMaxValueForRange(4, 3, GL_UNSIGNED_BYTE, &max_value)); 201 EXPECT_TRUE(info->GetMaxValueForRange(4, 3, GL_UNSIGNED_BYTE, &max_value));
202 EXPECT_EQ(6u, max_value); 202 EXPECT_EQ(6u, max_value);
203 // Check changing sub range succeeds. 203 // Check changing sub range succeeds.
204 EXPECT_TRUE(info->SetRange(4, sizeof(new_data), new_data)); 204 EXPECT_TRUE(info->SetRange(4, sizeof(new_data), new_data));
205 EXPECT_TRUE(info->GetMaxValueForRange(4, 3, GL_UNSIGNED_BYTE, &max_value)); 205 EXPECT_TRUE(info->GetMaxValueForRange(4, 3, GL_UNSIGNED_BYTE, &max_value));
206 EXPECT_EQ(120u, max_value); 206 EXPECT_EQ(120u, max_value);
207 max_value = 0; 207 max_value = 0;
208 EXPECT_TRUE(info->GetMaxValueForRange(0, 10, GL_UNSIGNED_BYTE, &max_value)); 208 EXPECT_TRUE(info->GetMaxValueForRange(0, 10, GL_UNSIGNED_BYTE, &max_value));
209 EXPECT_EQ(120u, max_value); 209 EXPECT_EQ(120u, max_value);
210 // Check out of range fails. 210 // Check out of range fails.
211 EXPECT_FALSE(info->GetMaxValueForRange(0, 11, GL_UNSIGNED_BYTE, &max_value)); 211 EXPECT_FALSE(info->GetMaxValueForRange(0, 11, GL_UNSIGNED_BYTE, &max_value));
212 EXPECT_FALSE(info->GetMaxValueForRange(10, 1, GL_UNSIGNED_BYTE, &max_value)); 212 EXPECT_FALSE(info->GetMaxValueForRange(10, 1, GL_UNSIGNED_BYTE, &max_value));
213 } 213 }
214 214
215 TEST_F(BufferManagerTest, GetMaxValueForRangeUint16) { 215 TEST_F(BufferManagerTest, GetMaxValueForRangeUint16) {
216 const GLuint kClientBufferId = 1; 216 const GLuint kClientBufferId = 1;
217 const GLuint kServiceBufferId = 11; 217 const GLuint kServiceBufferId = 11;
218 const uint16 data[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}; 218 const uint16 data[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
219 const uint16 new_data[] = {100, 120, 110}; 219 const uint16 new_data[] = {100, 120, 110};
220 manager_->CreateBufferInfo(kClientBufferId, kServiceBufferId); 220 manager_->CreateBuffer(kClientBufferId, kServiceBufferId);
221 BufferManager::BufferInfo* info = manager_->GetBufferInfo(kClientBufferId); 221 BufferManager::Buffer* info = manager_->GetBuffer(kClientBufferId);
222 ASSERT_TRUE(info != NULL); 222 ASSERT_TRUE(info != NULL);
223 manager_->SetTarget(info, GL_ELEMENT_ARRAY_BUFFER); 223 manager_->SetTarget(info, GL_ELEMENT_ARRAY_BUFFER);
224 manager_->SetInfo(info, sizeof(data), GL_STATIC_DRAW); 224 manager_->SetInfo(info, sizeof(data), GL_STATIC_DRAW);
225 EXPECT_TRUE(info->SetRange(0, sizeof(data), data)); 225 EXPECT_TRUE(info->SetRange(0, sizeof(data), data));
226 GLuint max_value; 226 GLuint max_value;
227 // Check entire range succeeds. 227 // Check entire range succeeds.
228 EXPECT_TRUE(info->GetMaxValueForRange(0, 10, GL_UNSIGNED_SHORT, &max_value)); 228 EXPECT_TRUE(info->GetMaxValueForRange(0, 10, GL_UNSIGNED_SHORT, &max_value));
229 EXPECT_EQ(10u, max_value); 229 EXPECT_EQ(10u, max_value);
230 // Check odd offset fails for GL_UNSIGNED_SHORT. 230 // Check odd offset fails for GL_UNSIGNED_SHORT.
231 EXPECT_FALSE(info->GetMaxValueForRange(1, 10, GL_UNSIGNED_SHORT, &max_value)); 231 EXPECT_FALSE(info->GetMaxValueForRange(1, 10, GL_UNSIGNED_SHORT, &max_value));
(...skipping 10 matching lines...) Expand all
242 // Check out of range fails. 242 // Check out of range fails.
243 EXPECT_FALSE(info->GetMaxValueForRange(0, 11, GL_UNSIGNED_SHORT, &max_value)); 243 EXPECT_FALSE(info->GetMaxValueForRange(0, 11, GL_UNSIGNED_SHORT, &max_value));
244 EXPECT_FALSE(info->GetMaxValueForRange(20, 1, GL_UNSIGNED_SHORT, &max_value)); 244 EXPECT_FALSE(info->GetMaxValueForRange(20, 1, GL_UNSIGNED_SHORT, &max_value));
245 } 245 }
246 246
247 TEST_F(BufferManagerTest, GetMaxValueForRangeUint32) { 247 TEST_F(BufferManagerTest, GetMaxValueForRangeUint32) {
248 const GLuint kClientBufferId = 1; 248 const GLuint kClientBufferId = 1;
249 const GLuint kServiceBufferId = 11; 249 const GLuint kServiceBufferId = 11;
250 const uint32 data[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}; 250 const uint32 data[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
251 const uint32 new_data[] = {100, 120, 110}; 251 const uint32 new_data[] = {100, 120, 110};
252 manager_->CreateBufferInfo(kClientBufferId, kServiceBufferId); 252 manager_->CreateBuffer(kClientBufferId, kServiceBufferId);
253 BufferManager::BufferInfo* info = manager_->GetBufferInfo(kClientBufferId); 253 BufferManager::Buffer* info = manager_->GetBuffer(kClientBufferId);
254 ASSERT_TRUE(info != NULL); 254 ASSERT_TRUE(info != NULL);
255 manager_->SetTarget(info, GL_ELEMENT_ARRAY_BUFFER); 255 manager_->SetTarget(info, GL_ELEMENT_ARRAY_BUFFER);
256 manager_->SetInfo(info, sizeof(data), GL_STATIC_DRAW); 256 manager_->SetInfo(info, sizeof(data), GL_STATIC_DRAW);
257 EXPECT_TRUE(info->SetRange(0, sizeof(data), data)); 257 EXPECT_TRUE(info->SetRange(0, sizeof(data), data));
258 GLuint max_value; 258 GLuint max_value;
259 // Check entire range succeeds. 259 // Check entire range succeeds.
260 EXPECT_TRUE(info->GetMaxValueForRange(0, 10, GL_UNSIGNED_INT, &max_value)); 260 EXPECT_TRUE(info->GetMaxValueForRange(0, 10, GL_UNSIGNED_INT, &max_value));
261 EXPECT_EQ(10u, max_value); 261 EXPECT_EQ(10u, max_value);
262 // Check non aligned offsets fails for GL_UNSIGNED_INT. 262 // Check non aligned offsets fails for GL_UNSIGNED_INT.
263 EXPECT_FALSE(info->GetMaxValueForRange(1, 10, GL_UNSIGNED_INT, &max_value)); 263 EXPECT_FALSE(info->GetMaxValueForRange(1, 10, GL_UNSIGNED_INT, &max_value));
(...skipping 11 matching lines...) Expand all
275 EXPECT_EQ(120u, max_value); 275 EXPECT_EQ(120u, max_value);
276 // Check out of range fails. 276 // Check out of range fails.
277 EXPECT_FALSE(info->GetMaxValueForRange(0, 11, GL_UNSIGNED_INT, &max_value)); 277 EXPECT_FALSE(info->GetMaxValueForRange(0, 11, GL_UNSIGNED_INT, &max_value));
278 EXPECT_FALSE(info->GetMaxValueForRange(40, 1, GL_UNSIGNED_INT, &max_value)); 278 EXPECT_FALSE(info->GetMaxValueForRange(40, 1, GL_UNSIGNED_INT, &max_value));
279 } 279 }
280 280
281 TEST_F(BufferManagerTest, UseDeletedBuffer) { 281 TEST_F(BufferManagerTest, UseDeletedBuffer) {
282 const GLuint kClientBufferId = 1; 282 const GLuint kClientBufferId = 1;
283 const GLuint kServiceBufferId = 11; 283 const GLuint kServiceBufferId = 11;
284 const uint32 data[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}; 284 const uint32 data[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
285 manager_->CreateBufferInfo(kClientBufferId, kServiceBufferId); 285 manager_->CreateBuffer(kClientBufferId, kServiceBufferId);
286 BufferManager::BufferInfo::Ref info = 286 scoped_refptr<BufferManager::Buffer> info =
287 manager_->GetBufferInfo(kClientBufferId); 287 manager_->GetBuffer(kClientBufferId);
288 ASSERT_TRUE(info != NULL); 288 ASSERT_TRUE(info != NULL);
289 manager_->SetTarget(info, GL_ARRAY_BUFFER); 289 manager_->SetTarget(info, GL_ARRAY_BUFFER);
290 // Remove buffer 290 // Remove buffer
291 manager_->RemoveBufferInfo(kClientBufferId); 291 manager_->RemoveBuffer(kClientBufferId);
292 // Use it after removing 292 // Use it after removing
293 manager_->SetInfo(info, sizeof(data), GL_STATIC_DRAW); 293 manager_->SetInfo(info, sizeof(data), GL_STATIC_DRAW);
294 // Check that it gets deleted when the last reference is released. 294 // Check that it gets deleted when the last reference is released.
295 EXPECT_CALL(*gl_, DeleteBuffersARB(1, ::testing::Pointee(kServiceBufferId))) 295 EXPECT_CALL(*gl_, DeleteBuffersARB(1, ::testing::Pointee(kServiceBufferId)))
296 .Times(1) 296 .Times(1)
297 .RetiresOnSaturation(); 297 .RetiresOnSaturation();
298 info = NULL; 298 info = NULL;
299 } 299 }
300 300
301 } // namespace gles2 301 } // namespace gles2
302 } // namespace gpu 302 } // namespace gpu
303 303
304 304
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/buffer_manager.cc ('k') | gpu/command_buffer/service/context_group.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698