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

Side by Side Diff: cc/resources/resource_provider_unittest.cc

Issue 645853008: Standardize usage of virtual/override/final in cc/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Formatted Created 6 years, 2 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
« no previous file with comments | « cc/resources/resource_provider.cc ('k') | cc/resources/resource_update_controller_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 "cc/resources/resource_provider.h" 5 #include "cc/resources/resource_provider.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 10
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 base::hash_map<unsigned, uint32> sync_point_for_mailbox_; 163 base::hash_map<unsigned, uint32> sync_point_for_mailbox_;
164 }; 164 };
165 165
166 class ResourceProviderContext : public TestWebGraphicsContext3D { 166 class ResourceProviderContext : public TestWebGraphicsContext3D {
167 public: 167 public:
168 static scoped_ptr<ResourceProviderContext> Create( 168 static scoped_ptr<ResourceProviderContext> Create(
169 ContextSharedData* shared_data) { 169 ContextSharedData* shared_data) {
170 return make_scoped_ptr(new ResourceProviderContext(shared_data)); 170 return make_scoped_ptr(new ResourceProviderContext(shared_data));
171 } 171 }
172 172
173 virtual GLuint insertSyncPoint() override { 173 GLuint insertSyncPoint() override {
174 uint32 sync_point = shared_data_->InsertSyncPoint(); 174 uint32 sync_point = shared_data_->InsertSyncPoint();
175 // Commit the produceTextureCHROMIUM calls at this point, so that 175 // Commit the produceTextureCHROMIUM calls at this point, so that
176 // they're associated with the sync point. 176 // they're associated with the sync point.
177 for (PendingProduceTextureList::iterator it = 177 for (PendingProduceTextureList::iterator it =
178 pending_produce_textures_.begin(); 178 pending_produce_textures_.begin();
179 it != pending_produce_textures_.end(); 179 it != pending_produce_textures_.end();
180 ++it) { 180 ++it) {
181 shared_data_->ProduceTexture( 181 shared_data_->ProduceTexture(
182 (*it)->mailbox, sync_point, (*it)->texture); 182 (*it)->mailbox, sync_point, (*it)->texture);
183 } 183 }
184 pending_produce_textures_.clear(); 184 pending_produce_textures_.clear();
185 return sync_point; 185 return sync_point;
186 } 186 }
187 187
188 virtual void waitSyncPoint(GLuint sync_point) override { 188 void waitSyncPoint(GLuint sync_point) override {
189 last_waited_sync_point_ = std::max(sync_point, last_waited_sync_point_); 189 last_waited_sync_point_ = std::max(sync_point, last_waited_sync_point_);
190 } 190 }
191 191
192 unsigned last_waited_sync_point() const { return last_waited_sync_point_; } 192 unsigned last_waited_sync_point() const { return last_waited_sync_point_; }
193 193
194 virtual void texStorage2DEXT(GLenum target, 194 void texStorage2DEXT(GLenum target,
195 GLint levels, 195 GLint levels,
196 GLuint internalformat, 196 GLuint internalformat,
197 GLint width, 197 GLint width,
198 GLint height) override { 198 GLint height) override {
199 CheckTextureIsBound(target); 199 CheckTextureIsBound(target);
200 ASSERT_EQ(static_cast<unsigned>(GL_TEXTURE_2D), target); 200 ASSERT_EQ(static_cast<unsigned>(GL_TEXTURE_2D), target);
201 ASSERT_EQ(1, levels); 201 ASSERT_EQ(1, levels);
202 GLenum format = GL_RGBA; 202 GLenum format = GL_RGBA;
203 switch (internalformat) { 203 switch (internalformat) {
204 case GL_RGBA8_OES: 204 case GL_RGBA8_OES:
205 break; 205 break;
206 case GL_BGRA8_EXT: 206 case GL_BGRA8_EXT:
207 format = GL_BGRA_EXT; 207 format = GL_BGRA_EXT;
208 break; 208 break;
209 default: 209 default:
210 NOTREACHED(); 210 NOTREACHED();
211 } 211 }
212 AllocateTexture(gfx::Size(width, height), format); 212 AllocateTexture(gfx::Size(width, height), format);
213 } 213 }
214 214
215 virtual void texImage2D(GLenum target, 215 void texImage2D(GLenum target,
216 GLint level, 216 GLint level,
217 GLenum internalformat, 217 GLenum internalformat,
218 GLsizei width, 218 GLsizei width,
219 GLsizei height, 219 GLsizei height,
220 GLint border, 220 GLint border,
221 GLenum format, 221 GLenum format,
222 GLenum type, 222 GLenum type,
223 const void* pixels) override { 223 const void* pixels) override {
224 CheckTextureIsBound(target); 224 CheckTextureIsBound(target);
225 ASSERT_EQ(static_cast<unsigned>(GL_TEXTURE_2D), target); 225 ASSERT_EQ(static_cast<unsigned>(GL_TEXTURE_2D), target);
226 ASSERT_FALSE(level); 226 ASSERT_FALSE(level);
227 ASSERT_EQ(internalformat, format); 227 ASSERT_EQ(internalformat, format);
228 ASSERT_FALSE(border); 228 ASSERT_FALSE(border);
229 ASSERT_EQ(static_cast<unsigned>(GL_UNSIGNED_BYTE), type); 229 ASSERT_EQ(static_cast<unsigned>(GL_UNSIGNED_BYTE), type);
230 AllocateTexture(gfx::Size(width, height), format); 230 AllocateTexture(gfx::Size(width, height), format);
231 if (pixels) 231 if (pixels)
232 SetPixels(0, 0, width, height, pixels); 232 SetPixels(0, 0, width, height, pixels);
233 } 233 }
234 234
235 virtual void texSubImage2D(GLenum target, 235 void texSubImage2D(GLenum target,
236 GLint level, 236 GLint level,
237 GLint xoffset, 237 GLint xoffset,
238 GLint yoffset, 238 GLint yoffset,
239 GLsizei width, 239 GLsizei width,
240 GLsizei height, 240 GLsizei height,
241 GLenum format, 241 GLenum format,
242 GLenum type, 242 GLenum type,
243 const void* pixels) override { 243 const void* pixels) override {
244 CheckTextureIsBound(target); 244 CheckTextureIsBound(target);
245 ASSERT_EQ(static_cast<unsigned>(GL_TEXTURE_2D), target); 245 ASSERT_EQ(static_cast<unsigned>(GL_TEXTURE_2D), target);
246 ASSERT_FALSE(level); 246 ASSERT_FALSE(level);
247 ASSERT_EQ(static_cast<unsigned>(GL_UNSIGNED_BYTE), type); 247 ASSERT_EQ(static_cast<unsigned>(GL_UNSIGNED_BYTE), type);
248 { 248 {
249 base::AutoLock lock_for_texture_access(namespace_->lock); 249 base::AutoLock lock_for_texture_access(namespace_->lock);
250 ASSERT_EQ(GLDataFormat(BoundTexture(target)->format), format); 250 ASSERT_EQ(GLDataFormat(BoundTexture(target)->format), format);
251 } 251 }
252 ASSERT_TRUE(pixels); 252 ASSERT_TRUE(pixels);
253 SetPixels(xoffset, yoffset, width, height, pixels); 253 SetPixels(xoffset, yoffset, width, height, pixels);
254 } 254 }
255 255
256 virtual void genMailboxCHROMIUM(GLbyte* mailbox) override { 256 void genMailboxCHROMIUM(GLbyte* mailbox) override {
257 return shared_data_->GenMailbox(mailbox); 257 return shared_data_->GenMailbox(mailbox);
258 } 258 }
259 259
260 virtual void produceTextureCHROMIUM(GLenum target, 260 void produceTextureCHROMIUM(GLenum target, const GLbyte* mailbox) override {
261 const GLbyte* mailbox) override {
262 CheckTextureIsBound(target); 261 CheckTextureIsBound(target);
263 262
264 // Delay moving the texture into the mailbox until the next 263 // Delay moving the texture into the mailbox until the next
265 // InsertSyncPoint, so that it is not visible to other contexts that 264 // InsertSyncPoint, so that it is not visible to other contexts that
266 // haven't waited on that sync point. 265 // haven't waited on that sync point.
267 scoped_ptr<PendingProduceTexture> pending(new PendingProduceTexture); 266 scoped_ptr<PendingProduceTexture> pending(new PendingProduceTexture);
268 memcpy(pending->mailbox, mailbox, sizeof(pending->mailbox)); 267 memcpy(pending->mailbox, mailbox, sizeof(pending->mailbox));
269 base::AutoLock lock_for_texture_access(namespace_->lock); 268 base::AutoLock lock_for_texture_access(namespace_->lock);
270 pending->texture = BoundTexture(target); 269 pending->texture = BoundTexture(target);
271 pending_produce_textures_.push_back(pending.Pass()); 270 pending_produce_textures_.push_back(pending.Pass());
272 } 271 }
273 272
274 virtual void consumeTextureCHROMIUM(GLenum target, 273 void consumeTextureCHROMIUM(GLenum target, const GLbyte* mailbox) override {
275 const GLbyte* mailbox) override {
276 CheckTextureIsBound(target); 274 CheckTextureIsBound(target);
277 base::AutoLock lock_for_texture_access(namespace_->lock); 275 base::AutoLock lock_for_texture_access(namespace_->lock);
278 scoped_refptr<TestTexture> texture = 276 scoped_refptr<TestTexture> texture =
279 shared_data_->ConsumeTexture(mailbox, last_waited_sync_point_); 277 shared_data_->ConsumeTexture(mailbox, last_waited_sync_point_);
280 namespace_->textures.Replace(BoundTextureId(target), texture); 278 namespace_->textures.Replace(BoundTextureId(target), texture);
281 } 279 }
282 280
283 void GetPixels(const gfx::Size& size, 281 void GetPixels(const gfx::Size& size,
284 ResourceFormat format, 282 ResourceFormat format,
285 uint8_t* pixels) { 283 uint8_t* pixels) {
(...skipping 3311 matching lines...) Expand 10 before | Expand all | Expand 10 after
3597 resource_provider->DeleteResource(id); 3595 resource_provider->DeleteResource(id);
3598 } 3596 }
3599 3597
3600 INSTANTIATE_TEST_CASE_P( 3598 INSTANTIATE_TEST_CASE_P(
3601 ResourceProviderTests, 3599 ResourceProviderTests,
3602 ResourceProviderTest, 3600 ResourceProviderTest,
3603 ::testing::Values(ResourceProvider::GLTexture, ResourceProvider::Bitmap)); 3601 ::testing::Values(ResourceProvider::GLTexture, ResourceProvider::Bitmap));
3604 3602
3605 class TextureIdAllocationTrackingContext : public TestWebGraphicsContext3D { 3603 class TextureIdAllocationTrackingContext : public TestWebGraphicsContext3D {
3606 public: 3604 public:
3607 virtual GLuint NextTextureId() override { 3605 GLuint NextTextureId() override {
3608 base::AutoLock lock(namespace_->lock); 3606 base::AutoLock lock(namespace_->lock);
3609 return namespace_->next_texture_id++; 3607 return namespace_->next_texture_id++;
3610 } 3608 }
3611 virtual void RetireTextureId(GLuint) override {} 3609 void RetireTextureId(GLuint) override {}
3612 GLuint PeekTextureId() { 3610 GLuint PeekTextureId() {
3613 base::AutoLock lock(namespace_->lock); 3611 base::AutoLock lock(namespace_->lock);
3614 return namespace_->next_texture_id; 3612 return namespace_->next_texture_id;
3615 } 3613 }
3616 }; 3614 };
3617 3615
3618 TEST(ResourceProviderTest, TextureAllocationChunkSize) { 3616 TEST(ResourceProviderTest, TextureAllocationChunkSize) {
3619 scoped_ptr<TextureIdAllocationTrackingContext> context_owned( 3617 scoped_ptr<TextureIdAllocationTrackingContext> context_owned(
3620 new TextureIdAllocationTrackingContext); 3618 new TextureIdAllocationTrackingContext);
3621 TextureIdAllocationTrackingContext* context = context_owned.get(); 3619 TextureIdAllocationTrackingContext* context = context_owned.get();
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
3668 resource_provider->AllocateForTesting(id); 3666 resource_provider->AllocateForTesting(id);
3669 Mock::VerifyAndClearExpectations(context); 3667 Mock::VerifyAndClearExpectations(context);
3670 3668
3671 DCHECK_EQ(10u, context->PeekTextureId()); 3669 DCHECK_EQ(10u, context->PeekTextureId());
3672 resource_provider->DeleteResource(id); 3670 resource_provider->DeleteResource(id);
3673 } 3671 }
3674 } 3672 }
3675 3673
3676 } // namespace 3674 } // namespace
3677 } // namespace cc 3675 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/resource_provider.cc ('k') | cc/resources/resource_update_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698