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

Side by Side Diff: cc/test/test_web_graphics_context_3d.cc

Issue 18796008: Implement shareResources==true in TestWebGraphicsContext3D (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Also make TestWebGraphicsContext3D default constructor share resources Created 7 years, 5 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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 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 "cc/test/test_web_graphics_context_3d.h" 5 #include "cc/test/test_web_graphics_context_3d.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 17 matching lines...) Expand all
28 28
29 static const WebGLId kFramebufferId = 1; 29 static const WebGLId kFramebufferId = 1;
30 static const WebGLId kProgramId = 2; 30 static const WebGLId kProgramId = 2;
31 static const WebGLId kRenderbufferId = 3; 31 static const WebGLId kRenderbufferId = 3;
32 static const WebGLId kShaderId = 4; 32 static const WebGLId kShaderId = 4;
33 33
34 static unsigned s_context_id = 1; 34 static unsigned s_context_id = 1;
35 35
36 const WebGLId TestWebGraphicsContext3D::kExternalTextureId = 1337; 36 const WebGLId TestWebGraphicsContext3D::kExternalTextureId = 1337;
37 37
38 TestWebGraphicsContext3D::Namespace*
39 TestWebGraphicsContext3D::shared_namespace_ = NULL;
danakj 2013/07/16 02:57:02 This will be a leak. Should we refcount and clean
piman 2013/07/16 03:06:39 It is refcounted, and it cleans itself up :) See T
danakj 2013/07/16 03:26:11 Oh right, cool.
40
41 TestWebGraphicsContext3D::Namespace::Namespace()
42 : next_buffer_id(1),
43 next_image_id(1),
44 next_texture_id(1) {
45 }
46
47 TestWebGraphicsContext3D::Namespace::~Namespace() {
48 if (shared_namespace_ == this)
danakj 2013/07/16 03:26:11 Do we need a lock for accessing the shared_namespa
piman 2013/07/16 04:50:55 Yes, we do! Thanks!
49 shared_namespace_ = NULL;
50 }
51
38 TestWebGraphicsContext3D::TestWebGraphicsContext3D() 52 TestWebGraphicsContext3D::TestWebGraphicsContext3D()
39 : FakeWebGraphicsContext3D(), 53 : FakeWebGraphicsContext3D(),
40 context_id_(s_context_id++), 54 context_id_(s_context_id++),
41 next_buffer_id_(1),
42 next_image_id_(1),
43 next_texture_id_(1),
44 support_swapbuffers_complete_callback_(true), 55 support_swapbuffers_complete_callback_(true),
45 have_extension_io_surface_(false), 56 have_extension_io_surface_(false),
46 have_extension_egl_image_(false), 57 have_extension_egl_image_(false),
47 times_make_current_succeeds_(-1), 58 times_make_current_succeeds_(-1),
48 times_bind_texture_succeeds_(-1), 59 times_bind_texture_succeeds_(-1),
49 times_end_query_succeeds_(-1), 60 times_end_query_succeeds_(-1),
50 context_lost_(false), 61 context_lost_(false),
51 times_map_image_chromium_succeeds_(-1), 62 times_map_image_chromium_succeeds_(-1),
52 times_map_buffer_chromium_succeeds_(-1), 63 times_map_buffer_chromium_succeeds_(-1),
53 context_lost_callback_(NULL), 64 context_lost_callback_(NULL),
54 swap_buffers_callback_(NULL), 65 swap_buffers_callback_(NULL),
55 memory_allocation_changed_callback_(NULL), 66 memory_allocation_changed_callback_(NULL),
56 max_texture_size_(1024), 67 max_texture_size_(1024),
57 width_(0), 68 width_(0),
58 height_(0), 69 height_(0),
59 bound_buffer_(0), 70 bound_buffer_(0),
71 namespace_(new Namespace),
60 weak_ptr_factory_(this) { 72 weak_ptr_factory_(this) {
73 if (shared_namespace_) {
danakj 2013/07/16 03:26:11 can you DCHECK(attributes.shareResources) here so
piman 2013/07/16 04:50:55 Created helper function (made conditional).
74 namespace_ = shared_namespace_;
75 } else {
76 namespace_ = new Namespace;
77 shared_namespace_ = namespace_;
danakj 2013/07/16 03:26:11 .get()
piman 2013/07/16 04:50:55 Done.
78 }
61 } 79 }
62 80
63 TestWebGraphicsContext3D::TestWebGraphicsContext3D( 81 TestWebGraphicsContext3D::TestWebGraphicsContext3D(
64 const WebGraphicsContext3D::Attributes& attributes) 82 const WebGraphicsContext3D::Attributes& attributes)
65 : FakeWebGraphicsContext3D(), 83 : FakeWebGraphicsContext3D(),
66 context_id_(s_context_id++), 84 context_id_(s_context_id++),
67 next_buffer_id_(1),
68 next_image_id_(1),
69 next_texture_id_(1),
70 attributes_(attributes), 85 attributes_(attributes),
71 support_swapbuffers_complete_callback_(true), 86 support_swapbuffers_complete_callback_(true),
72 have_extension_io_surface_(false), 87 have_extension_io_surface_(false),
73 have_extension_egl_image_(false), 88 have_extension_egl_image_(false),
74 times_make_current_succeeds_(-1), 89 times_make_current_succeeds_(-1),
75 times_bind_texture_succeeds_(-1), 90 times_bind_texture_succeeds_(-1),
76 times_end_query_succeeds_(-1), 91 times_end_query_succeeds_(-1),
77 context_lost_(false), 92 context_lost_(false),
78 times_map_image_chromium_succeeds_(-1), 93 times_map_image_chromium_succeeds_(-1),
79 times_map_buffer_chromium_succeeds_(-1), 94 times_map_buffer_chromium_succeeds_(-1),
80 context_lost_callback_(NULL), 95 context_lost_callback_(NULL),
81 swap_buffers_callback_(NULL), 96 swap_buffers_callback_(NULL),
82 memory_allocation_changed_callback_(NULL), 97 memory_allocation_changed_callback_(NULL),
83 max_texture_size_(1024), 98 max_texture_size_(1024),
84 width_(0), 99 width_(0),
85 height_(0), 100 height_(0),
86 bound_buffer_(0), 101 bound_buffer_(0),
87 weak_ptr_factory_(this) { 102 weak_ptr_factory_(this) {
103 if (attributes.shareResources) {
104 if (shared_namespace_) {
105 namespace_ = shared_namespace_;
danakj 2013/07/16 03:26:11 cast from raw pointer to scoped_refptr is kinda ic
piman 2013/07/16 04:50:55 It's not a cast but an assignment.. What bothers y
danakj 2013/07/16 05:39:00 Yeh, I've seen this used in chromium before as wel
106 } else {
107 namespace_ = new Namespace;
108 shared_namespace_ = namespace_;
danakj 2013/07/16 03:26:11 .get()
piman 2013/07/16 04:50:55 Done.
109 }
110 } else {
111 namespace_ = new Namespace;
112 }
88 } 113 }
89 114
90 TestWebGraphicsContext3D::~TestWebGraphicsContext3D() { 115 TestWebGraphicsContext3D::~TestWebGraphicsContext3D() {
91 for (size_t i = 0; i < sync_point_callbacks_.size(); ++i) { 116 for (size_t i = 0; i < sync_point_callbacks_.size(); ++i) {
92 if (sync_point_callbacks_[i] != NULL) 117 if (sync_point_callbacks_[i] != NULL)
93 delete sync_point_callbacks_[i]; 118 delete sync_point_callbacks_[i];
94 } 119 }
95 } 120 }
96 121
97 bool TestWebGraphicsContext3D::makeContextCurrent() { 122 bool TestWebGraphicsContext3D::makeContextCurrent() {
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 WGC3Dboolean TestWebGraphicsContext3D::isTexture( 225 WGC3Dboolean TestWebGraphicsContext3D::isTexture(
201 WebGLId texture) { 226 WebGLId texture) {
202 return false; 227 return false;
203 } 228 }
204 229
205 WebGLId TestWebGraphicsContext3D::createBuffer() { 230 WebGLId TestWebGraphicsContext3D::createBuffer() {
206 return NextBufferId(); 231 return NextBufferId();
207 } 232 }
208 233
209 void TestWebGraphicsContext3D::deleteBuffer(WebGLId id) { 234 void TestWebGraphicsContext3D::deleteBuffer(WebGLId id) {
235 base::AutoLock lock(namespace_->lock);
210 unsigned context_id = id >> 17; 236 unsigned context_id = id >> 17;
211 unsigned buffer_id = id & 0x1ffff; 237 unsigned buffer_id = id & 0x1ffff;
212 DCHECK(buffer_id && buffer_id < next_buffer_id_); 238 DCHECK(buffer_id && buffer_id < namespace_->next_buffer_id);
213 DCHECK_EQ(context_id, context_id_); 239 DCHECK_EQ(context_id, context_id_);
214 } 240 }
215 241
216 WebGLId TestWebGraphicsContext3D::createFramebuffer() { 242 WebGLId TestWebGraphicsContext3D::createFramebuffer() {
217 return kFramebufferId | context_id_ << 16; 243 return kFramebufferId | context_id_ << 16;
218 } 244 }
219 245
220 void TestWebGraphicsContext3D::deleteFramebuffer(WebGLId id) { 246 void TestWebGraphicsContext3D::deleteFramebuffer(WebGLId id) {
221 EXPECT_EQ(kFramebufferId | context_id_ << 16, id); 247 EXPECT_EQ(kFramebufferId | context_id_ << 16, id);
222 } 248 }
(...skipping 18 matching lines...) Expand all
241 return kShaderId | context_id_ << 16; 267 return kShaderId | context_id_ << 16;
242 } 268 }
243 269
244 void TestWebGraphicsContext3D::deleteShader(WebGLId id) { 270 void TestWebGraphicsContext3D::deleteShader(WebGLId id) {
245 EXPECT_EQ(kShaderId | context_id_ << 16, id); 271 EXPECT_EQ(kShaderId | context_id_ << 16, id);
246 } 272 }
247 273
248 WebGLId TestWebGraphicsContext3D::createTexture() { 274 WebGLId TestWebGraphicsContext3D::createTexture() {
249 WebGLId texture_id = NextTextureId(); 275 WebGLId texture_id = NextTextureId();
250 DCHECK_NE(texture_id, kExternalTextureId); 276 DCHECK_NE(texture_id, kExternalTextureId);
251 textures_.push_back(texture_id); 277 base::AutoLock lock(namespace_->lock);
278 namespace_->textures.push_back(texture_id);
252 return texture_id; 279 return texture_id;
253 } 280 }
254 281
255 void TestWebGraphicsContext3D::deleteTexture(WebGLId texture_id) { 282 void TestWebGraphicsContext3D::deleteTexture(WebGLId texture_id) {
256 DCHECK(std::find(textures_.begin(), textures_.end(), texture_id) != 283 base::AutoLock lock(namespace_->lock);
257 textures_.end()); 284 std::vector<WebKit::WebGLId>& textures = namespace_->textures;
258 textures_.erase(std::find(textures_.begin(), textures_.end(), texture_id)); 285 DCHECK(std::find(textures.begin(), textures.end(), texture_id) !=
286 textures.end());
287 textures.erase(std::find(textures.begin(), textures.end(), texture_id));
259 } 288 }
260 289
261 void TestWebGraphicsContext3D::attachShader(WebGLId program, WebGLId shader) { 290 void TestWebGraphicsContext3D::attachShader(WebGLId program, WebGLId shader) {
262 EXPECT_EQ(kProgramId | context_id_ << 16, program); 291 EXPECT_EQ(kProgramId | context_id_ << 16, program);
263 EXPECT_EQ(kShaderId | context_id_ << 16, shader); 292 EXPECT_EQ(kShaderId | context_id_ << 16, shader);
264 } 293 }
265 294
266 void TestWebGraphicsContext3D::useProgram(WebGLId program) { 295 void TestWebGraphicsContext3D::useProgram(WebGLId program) {
267 if (!program) 296 if (!program)
268 return; 297 return;
(...skipping 21 matching lines...) Expand all
290 loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB, 319 loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB,
291 GL_INNOCENT_CONTEXT_RESET_ARB); 320 GL_INNOCENT_CONTEXT_RESET_ARB);
292 } 321 }
293 --times_bind_texture_succeeds_; 322 --times_bind_texture_succeeds_;
294 } 323 }
295 324
296 if (!texture_id) 325 if (!texture_id)
297 return; 326 return;
298 if (texture_id == kExternalTextureId) 327 if (texture_id == kExternalTextureId)
299 return; 328 return;
300 DCHECK(std::find(textures_.begin(), textures_.end(), texture_id) != 329 base::AutoLock lock(namespace_->lock);
301 textures_.end()); 330 std::vector<WebKit::WebGLId>& textures = namespace_->textures;
331 DCHECK(std::find(textures.begin(), textures.end(), texture_id) !=
332 textures.end());
302 used_textures_.insert(texture_id); 333 used_textures_.insert(texture_id);
303 } 334 }
304 335
305 void TestWebGraphicsContext3D::endQueryEXT(WGC3Denum target) { 336 void TestWebGraphicsContext3D::endQueryEXT(WGC3Denum target) {
306 if (times_end_query_succeeds_ >= 0) { 337 if (times_end_query_succeeds_ >= 0) {
307 if (!times_end_query_succeeds_) { 338 if (!times_end_query_succeeds_) {
308 loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB, 339 loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB,
309 GL_INNOCENT_CONTEXT_RESET_ARB); 340 GL_INNOCENT_CONTEXT_RESET_ARB);
310 } 341 }
311 --times_end_query_succeeds_; 342 --times_end_query_succeeds_;
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 swap_buffers_callback_->onSwapBuffersComplete(); 446 swap_buffers_callback_->onSwapBuffersComplete();
416 } 447 }
417 448
418 void TestWebGraphicsContext3D::bindBuffer(WebKit::WGC3Denum target, 449 void TestWebGraphicsContext3D::bindBuffer(WebKit::WGC3Denum target,
419 WebKit::WebGLId buffer) { 450 WebKit::WebGLId buffer) {
420 bound_buffer_ = buffer; 451 bound_buffer_ = buffer;
421 if (!bound_buffer_) 452 if (!bound_buffer_)
422 return; 453 return;
423 unsigned context_id = buffer >> 17; 454 unsigned context_id = buffer >> 17;
424 unsigned buffer_id = buffer & 0x1ffff; 455 unsigned buffer_id = buffer & 0x1ffff;
425 DCHECK(buffer_id && buffer_id < next_buffer_id_); 456 base::AutoLock lock(namespace_->lock);
457 DCHECK(buffer_id && buffer_id < namespace_->next_buffer_id);
426 DCHECK_EQ(context_id, context_id_); 458 DCHECK_EQ(context_id, context_id_);
427 459
428 if (buffers_.count(bound_buffer_) == 0) 460 ScopedPtrHashMap<unsigned, Buffer>& buffers = namespace_->buffers;
429 buffers_.set(bound_buffer_, make_scoped_ptr(new Buffer).Pass()); 461 if (buffers.count(bound_buffer_) == 0)
462 buffers.set(bound_buffer_, make_scoped_ptr(new Buffer).Pass());
430 463
431 buffers_.get(bound_buffer_)->target = target; 464 buffers.get(bound_buffer_)->target = target;
432 } 465 }
433 466
434 void TestWebGraphicsContext3D::bufferData(WebKit::WGC3Denum target, 467 void TestWebGraphicsContext3D::bufferData(WebKit::WGC3Denum target,
435 WebKit::WGC3Dsizeiptr size, 468 WebKit::WGC3Dsizeiptr size,
436 const void* data, 469 const void* data,
437 WebKit::WGC3Denum usage) { 470 WebKit::WGC3Denum usage) {
438 DCHECK_GT(buffers_.count(bound_buffer_), 0u); 471 base::AutoLock lock(namespace_->lock);
439 DCHECK_EQ(target, buffers_.get(bound_buffer_)->target); 472 ScopedPtrHashMap<unsigned, Buffer>& buffers = namespace_->buffers;
473 DCHECK_GT(buffers.count(bound_buffer_), 0u);
474 DCHECK_EQ(target, buffers.get(bound_buffer_)->target);
440 if (context_lost_) { 475 if (context_lost_) {
441 buffers_.get(bound_buffer_)->pixels.reset(); 476 buffers.get(bound_buffer_)->pixels.reset();
442 return; 477 return;
443 } 478 }
444 buffers_.get(bound_buffer_)->pixels.reset(new uint8[size]); 479 buffers.get(bound_buffer_)->pixels.reset(new uint8[size]);
445 if (data != NULL) 480 if (data != NULL)
446 memcpy(buffers_.get(bound_buffer_)->pixels.get(), data, size); 481 memcpy(buffers.get(bound_buffer_)->pixels.get(), data, size);
447 } 482 }
448 483
449 void* TestWebGraphicsContext3D::mapBufferCHROMIUM(WebKit::WGC3Denum target, 484 void* TestWebGraphicsContext3D::mapBufferCHROMIUM(WebKit::WGC3Denum target,
450 WebKit::WGC3Denum access) { 485 WebKit::WGC3Denum access) {
451 DCHECK_GT(buffers_.count(bound_buffer_), 0u); 486 base::AutoLock lock(namespace_->lock);
452 DCHECK_EQ(target, buffers_.get(bound_buffer_)->target); 487 ScopedPtrHashMap<unsigned, Buffer>& buffers = namespace_->buffers;
488 DCHECK_GT(buffers.count(bound_buffer_), 0u);
489 DCHECK_EQ(target, buffers.get(bound_buffer_)->target);
453 if (times_map_buffer_chromium_succeeds_ >= 0) { 490 if (times_map_buffer_chromium_succeeds_ >= 0) {
454 if (!times_map_buffer_chromium_succeeds_) { 491 if (!times_map_buffer_chromium_succeeds_) {
455 return NULL; 492 return NULL;
456 } 493 }
457 --times_map_buffer_chromium_succeeds_; 494 --times_map_buffer_chromium_succeeds_;
458 } 495 }
459 return buffers_.get(bound_buffer_)->pixels.get(); 496 return buffers.get(bound_buffer_)->pixels.get();
460 } 497 }
461 498
462 WebKit::WGC3Dboolean TestWebGraphicsContext3D::unmapBufferCHROMIUM( 499 WebKit::WGC3Dboolean TestWebGraphicsContext3D::unmapBufferCHROMIUM(
463 WebKit::WGC3Denum target) { 500 WebKit::WGC3Denum target) {
464 DCHECK_GT(buffers_.count(bound_buffer_), 0u); 501 base::AutoLock lock(namespace_->lock);
465 DCHECK_EQ(target, buffers_.get(bound_buffer_)->target); 502 ScopedPtrHashMap<unsigned, Buffer>& buffers = namespace_->buffers;
466 buffers_.get(bound_buffer_)->pixels.reset(); 503 DCHECK_GT(buffers.count(bound_buffer_), 0u);
504 DCHECK_EQ(target, buffers.get(bound_buffer_)->target);
505 buffers.get(bound_buffer_)->pixels.reset();
467 return true; 506 return true;
468 } 507 }
469 508
470 void TestWebGraphicsContext3D::bindTexImage2DCHROMIUM( 509 void TestWebGraphicsContext3D::bindTexImage2DCHROMIUM(
471 WebKit::WGC3Denum target, 510 WebKit::WGC3Denum target,
472 WebKit::WGC3Dint image_id) { 511 WebKit::WGC3Dint image_id) {
473 DCHECK_GT(images_.count(image_id), 0u); 512 base::AutoLock lock(namespace_->lock);
513 DCHECK_GT(namespace_->images.count(image_id), 0u);
474 } 514 }
475 515
476 WebKit::WGC3Duint TestWebGraphicsContext3D::createImageCHROMIUM( 516 WebKit::WGC3Duint TestWebGraphicsContext3D::createImageCHROMIUM(
477 WebKit::WGC3Dsizei width, WebKit::WGC3Dsizei height, 517 WebKit::WGC3Dsizei width, WebKit::WGC3Dsizei height,
478 WebKit::WGC3Denum internalformat) { 518 WebKit::WGC3Denum internalformat) {
479 DCHECK_EQ(GL_RGBA8_OES, static_cast<int>(internalformat)); 519 DCHECK_EQ(GL_RGBA8_OES, static_cast<int>(internalformat));
480 WebKit::WGC3Duint image_id = NextImageId(); 520 WebKit::WGC3Duint image_id = NextImageId();
481 images_.set(image_id, make_scoped_ptr(new Image).Pass()); 521 base::AutoLock lock(namespace_->lock);
482 images_.get(image_id)->pixels.reset(new uint8[width * height * 4]); 522 ScopedPtrHashMap<unsigned, Image> &images = namespace_->images;
danakj 2013/07/16 03:26:11 & images (cpplint fail)
piman 2013/07/16 04:50:55 Done.
523 images.set(image_id, make_scoped_ptr(new Image).Pass());
524 images.get(image_id)->pixels.reset(new uint8[width * height * 4]);
483 return image_id; 525 return image_id;
484 } 526 }
485 527
486 void TestWebGraphicsContext3D::destroyImageCHROMIUM( 528 void TestWebGraphicsContext3D::destroyImageCHROMIUM(
487 WebKit::WGC3Duint id) { 529 WebKit::WGC3Duint id) {
530 base::AutoLock lock(namespace_->lock);
488 unsigned context_id = id >> 17; 531 unsigned context_id = id >> 17;
489 unsigned image_id = id & 0x1ffff; 532 unsigned image_id = id & 0x1ffff;
490 DCHECK(image_id && image_id < next_image_id_); 533 DCHECK(image_id && image_id < namespace_->next_image_id);
491 DCHECK_EQ(context_id, context_id_); 534 DCHECK_EQ(context_id, context_id_);
492 } 535 }
493 536
494 void TestWebGraphicsContext3D::getImageParameterivCHROMIUM( 537 void TestWebGraphicsContext3D::getImageParameterivCHROMIUM(
495 WebKit::WGC3Duint image_id, 538 WebKit::WGC3Duint image_id,
496 WebKit::WGC3Denum pname, 539 WebKit::WGC3Denum pname,
497 WebKit::WGC3Dint* params) { 540 WebKit::WGC3Dint* params) {
498 DCHECK_GT(images_.count(image_id), 0u); 541 base::AutoLock lock(namespace_->lock);
542 DCHECK_GT(namespace_->images.count(image_id), 0u);
499 DCHECK_EQ(GL_IMAGE_ROWBYTES_CHROMIUM, static_cast<int>(pname)); 543 DCHECK_EQ(GL_IMAGE_ROWBYTES_CHROMIUM, static_cast<int>(pname));
500 *params = 0; 544 *params = 0;
501 } 545 }
502 546
503 void* TestWebGraphicsContext3D::mapImageCHROMIUM(WebKit::WGC3Duint image_id, 547 void* TestWebGraphicsContext3D::mapImageCHROMIUM(WebKit::WGC3Duint image_id,
504 WebKit::WGC3Denum access) { 548 WebKit::WGC3Denum access) {
505 DCHECK_GT(images_.count(image_id), 0u); 549 base::AutoLock lock(namespace_->lock);
550 ScopedPtrHashMap<unsigned, Image> &images = namespace_->images;
danakj 2013/07/16 03:26:11 & images
piman 2013/07/16 04:50:55 Done.
551 DCHECK_GT(images.count(image_id), 0u);
506 if (times_map_image_chromium_succeeds_ >= 0) { 552 if (times_map_image_chromium_succeeds_ >= 0) {
507 if (!times_map_image_chromium_succeeds_) { 553 if (!times_map_image_chromium_succeeds_) {
508 return NULL; 554 return NULL;
509 } 555 }
510 --times_map_image_chromium_succeeds_; 556 --times_map_image_chromium_succeeds_;
511 } 557 }
512 return images_.get(image_id)->pixels.get(); 558 return images.get(image_id)->pixels.get();
513 } 559 }
514 560
515 void TestWebGraphicsContext3D::unmapImageCHROMIUM( 561 void TestWebGraphicsContext3D::unmapImageCHROMIUM(
516 WebKit::WGC3Duint image_id) { 562 WebKit::WGC3Duint image_id) {
517 DCHECK_GT(images_.count(image_id), 0u); 563 base::AutoLock lock(namespace_->lock);
564 DCHECK_GT(namespace_->images.count(image_id), 0u);
565 }
566
567 size_t TestWebGraphicsContext3D::NumTextures() const {
568 base::AutoLock lock(namespace_->lock);
569 return namespace_->textures.size();
570 }
571
572 WebKit::WebGLId TestWebGraphicsContext3D::TextureAt(int i) const {
573 base::AutoLock lock(namespace_->lock);
574 return namespace_->textures[i];
518 } 575 }
519 576
520 WebGLId TestWebGraphicsContext3D::NextTextureId() { 577 WebGLId TestWebGraphicsContext3D::NextTextureId() {
521 WebGLId texture_id = next_texture_id_++; 578 base::AutoLock lock(namespace_->lock);
579 WebGLId texture_id = namespace_->next_texture_id++;
522 DCHECK(texture_id < (1 << 16)); 580 DCHECK(texture_id < (1 << 16));
523 texture_id |= context_id_ << 16; 581 texture_id |= context_id_ << 16;
524 return texture_id; 582 return texture_id;
525 } 583 }
526 584
527 WebGLId TestWebGraphicsContext3D::NextBufferId() { 585 WebGLId TestWebGraphicsContext3D::NextBufferId() {
528 WebGLId buffer_id = next_buffer_id_++; 586 base::AutoLock lock(namespace_->lock);
587 WebGLId buffer_id = namespace_->next_buffer_id++;
529 DCHECK(buffer_id < (1 << 17)); 588 DCHECK(buffer_id < (1 << 17));
530 buffer_id |= context_id_ << 17; 589 buffer_id |= context_id_ << 17;
531 return buffer_id; 590 return buffer_id;
532 } 591 }
533 592
534 WebKit::WGC3Duint TestWebGraphicsContext3D::NextImageId() { 593 WebKit::WGC3Duint TestWebGraphicsContext3D::NextImageId() {
535 WebKit::WGC3Duint image_id = next_image_id_++; 594 base::AutoLock lock(namespace_->lock);
595 WGC3Duint image_id = namespace_->next_image_id++;
536 DCHECK(image_id < (1 << 17)); 596 DCHECK(image_id < (1 << 17));
537 image_id |= context_id_ << 17; 597 image_id |= context_id_ << 17;
538 return image_id; 598 return image_id;
539 } 599 }
540 600
541 void TestWebGraphicsContext3D::SetMemoryAllocation( 601 void TestWebGraphicsContext3D::SetMemoryAllocation(
542 WebKit::WebGraphicsMemoryAllocation allocation) { 602 WebKit::WebGraphicsMemoryAllocation allocation) {
543 if (!memory_allocation_changed_callback_) 603 if (!memory_allocation_changed_callback_)
544 return; 604 return;
545 memory_allocation_changed_callback_->onMemoryAllocationChanged(allocation); 605 memory_allocation_changed_callback_->onMemoryAllocationChanged(allocation);
546 } 606 }
547 607
548 TestWebGraphicsContext3D::Buffer::Buffer() : target(0) {} 608 TestWebGraphicsContext3D::Buffer::Buffer() : target(0) {}
549 609
550 TestWebGraphicsContext3D::Buffer::~Buffer() {} 610 TestWebGraphicsContext3D::Buffer::~Buffer() {}
551 611
552 TestWebGraphicsContext3D::Image::Image() {} 612 TestWebGraphicsContext3D::Image::Image() {}
553 613
554 TestWebGraphicsContext3D::Image::~Image() {} 614 TestWebGraphicsContext3D::Image::~Image() {}
555 615
556 } // namespace cc 616 } // namespace cc
OLDNEW
« cc/test/test_web_graphics_context_3d.h ('K') | « cc/test/test_web_graphics_context_3d.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698