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

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

Issue 21159007: cc: Adding support for RGBA_4444 tile textures (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move stride check to RWP Created 7 years, 3 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
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 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
(...skipping 22 matching lines...) Expand all
33 using WebKit::WGC3Dbyte; 33 using WebKit::WGC3Dbyte;
34 using WebKit::WGC3Denum; 34 using WebKit::WGC3Denum;
35 using WebKit::WGC3Dint; 35 using WebKit::WGC3Dint;
36 using WebKit::WGC3Dsizei; 36 using WebKit::WGC3Dsizei;
37 using WebKit::WGC3Duint; 37 using WebKit::WGC3Duint;
38 using WebKit::WebGLId; 38 using WebKit::WebGLId;
39 39
40 namespace cc { 40 namespace cc {
41 namespace { 41 namespace {
42 42
43 size_t TextureSize(gfx::Size size, WGC3Denum format) { 43 size_t TextureSize(gfx::Size size, ResourceFormat format) {
44 unsigned int components_per_pixel = 4; 44 unsigned int components_per_pixel = 4;
45 unsigned int bytes_per_component = 1; 45 unsigned int bytes_per_component = 1;
46 return size.width() * size.height() * components_per_pixel * 46 return size.width() * size.height() * components_per_pixel *
47 bytes_per_component; 47 bytes_per_component;
48 } 48 }
49 49
50 class TextureStateTrackingContext : public TestWebGraphicsContext3D { 50 class TextureStateTrackingContext : public TestWebGraphicsContext3D {
51 public: 51 public:
52 MOCK_METHOD2(bindTexture, void(WGC3Denum target, WebGLId texture)); 52 MOCK_METHOD2(bindTexture, void(WGC3Denum target, WebGLId texture));
53 MOCK_METHOD3(texParameteri, 53 MOCK_METHOD3(texParameteri,
54 void(WGC3Denum target, WGC3Denum pname, WGC3Dint param)); 54 void(WGC3Denum target, WGC3Denum pname, WGC3Dint param));
55 MOCK_METHOD1(waitSyncPoint, void(unsigned sync_point)); 55 MOCK_METHOD1(waitSyncPoint, void(unsigned sync_point));
56 MOCK_METHOD0(insertSyncPoint, unsigned(void)); 56 MOCK_METHOD0(insertSyncPoint, unsigned(void));
57 MOCK_METHOD2(produceTextureCHROMIUM, void(WGC3Denum target, 57 MOCK_METHOD2(produceTextureCHROMIUM, void(WGC3Denum target,
58 const WGC3Dbyte* mailbox)); 58 const WGC3Dbyte* mailbox));
59 MOCK_METHOD2(consumeTextureCHROMIUM, void(WGC3Denum target, 59 MOCK_METHOD2(consumeTextureCHROMIUM, void(WGC3Denum target,
60 const WGC3Dbyte* mailbox)); 60 const WGC3Dbyte* mailbox));
61 61
62 // Force all textures to be "1" so we can test for them. 62 // Force all textures to be "1" so we can test for them.
63 virtual WebKit::WebGLId NextTextureId() OVERRIDE { return 1; } 63 virtual WebKit::WebGLId NextTextureId() OVERRIDE { return 1; }
64 }; 64 };
65 65
66 struct Texture : public base::RefCounted<Texture> { 66 struct Texture : public base::RefCounted<Texture> {
67 Texture() : format(0), filter(GL_NEAREST_MIPMAP_LINEAR) {} 67 Texture() : format(RGBA_8888),
68 filter(GL_NEAREST_MIPMAP_LINEAR) {}
68 69
69 void Reallocate(gfx::Size size, WGC3Denum format) { 70 void Reallocate(gfx::Size size, ResourceFormat format) {
70 this->size = size; 71 this->size = size;
71 this->format = format; 72 this->format = format;
72 this->data.reset(new uint8_t[TextureSize(size, format)]); 73 this->data.reset(new uint8_t[TextureSize(size, format)]);
73 } 74 }
74 75
75 gfx::Size size; 76 gfx::Size size;
76 WGC3Denum format; 77 ResourceFormat format;
77 WGC3Denum filter; 78 WGC3Denum filter;
78 scoped_ptr<uint8_t[]> data; 79 scoped_ptr<uint8_t[]> data;
79 80
80 private: 81 private:
81 friend class base::RefCounted<Texture>; 82 friend class base::RefCounted<Texture>;
82 ~Texture() {} 83 ~Texture() {}
83 }; 84 };
84 85
85 // Shared data between multiple ResourceProviderContext. This contains mailbox 86 // Shared data between multiple ResourceProviderContext. This contains mailbox
86 // contents as well as information about sync points. 87 // contents as well as information about sync points.
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 WGC3Dint yoffset, 230 WGC3Dint yoffset,
230 WGC3Dsizei width, 231 WGC3Dsizei width,
231 WGC3Dsizei height, 232 WGC3Dsizei height,
232 WGC3Denum format, 233 WGC3Denum format,
233 WGC3Denum type, 234 WGC3Denum type,
234 const void* pixels) OVERRIDE { 235 const void* pixels) OVERRIDE {
235 ASSERT_TRUE(current_texture_); 236 ASSERT_TRUE(current_texture_);
236 ASSERT_EQ(static_cast<unsigned>(GL_TEXTURE_2D), target); 237 ASSERT_EQ(static_cast<unsigned>(GL_TEXTURE_2D), target);
237 ASSERT_FALSE(level); 238 ASSERT_FALSE(level);
238 ASSERT_TRUE(textures_[current_texture_].get()); 239 ASSERT_TRUE(textures_[current_texture_].get());
239 ASSERT_EQ(textures_[current_texture_]->format, format); 240 ASSERT_EQ(
241 ResourceProvider::GetGLDataFormat(textures_[current_texture_]->format),
242 format);
240 ASSERT_EQ(static_cast<unsigned>(GL_UNSIGNED_BYTE), type); 243 ASSERT_EQ(static_cast<unsigned>(GL_UNSIGNED_BYTE), type);
241 ASSERT_TRUE(pixels); 244 ASSERT_TRUE(pixels);
242 SetPixels(xoffset, yoffset, width, height, pixels); 245 SetPixels(xoffset, yoffset, width, height, pixels);
243 } 246 }
244 247
245 virtual void texParameteri(WGC3Denum target, WGC3Denum param, WGC3Dint value) 248 virtual void texParameteri(WGC3Denum target, WGC3Denum param, WGC3Dint value)
246 OVERRIDE { 249 OVERRIDE {
247 ASSERT_TRUE(current_texture_); 250 ASSERT_TRUE(current_texture_);
248 ASSERT_EQ(static_cast<unsigned>(GL_TEXTURE_2D), target); 251 ASSERT_EQ(static_cast<unsigned>(GL_TEXTURE_2D), target);
249 scoped_refptr<Texture> texture = textures_[current_texture_]; 252 scoped_refptr<Texture> texture = textures_[current_texture_];
(...skipping 22 matching lines...) Expand all
272 } 275 }
273 276
274 virtual void consumeTextureCHROMIUM(WGC3Denum target, 277 virtual void consumeTextureCHROMIUM(WGC3Denum target,
275 const WGC3Dbyte* mailbox) OVERRIDE { 278 const WGC3Dbyte* mailbox) OVERRIDE {
276 ASSERT_TRUE(current_texture_); 279 ASSERT_TRUE(current_texture_);
277 ASSERT_EQ(static_cast<unsigned>(GL_TEXTURE_2D), target); 280 ASSERT_EQ(static_cast<unsigned>(GL_TEXTURE_2D), target);
278 textures_[current_texture_] = shared_data_->ConsumeTexture( 281 textures_[current_texture_] = shared_data_->ConsumeTexture(
279 mailbox, last_waited_sync_point_); 282 mailbox, last_waited_sync_point_);
280 } 283 }
281 284
282 void GetPixels(gfx::Size size, WGC3Denum format, uint8_t* pixels) { 285 void GetPixels(gfx::Size size, ResourceFormat format, uint8_t* pixels) {
283 ASSERT_TRUE(current_texture_); 286 ASSERT_TRUE(current_texture_);
284 scoped_refptr<Texture> texture = textures_[current_texture_]; 287 scoped_refptr<Texture> texture = textures_[current_texture_];
285 ASSERT_TRUE(texture.get()); 288 ASSERT_TRUE(texture.get());
286 ASSERT_EQ(texture->size, size); 289 ASSERT_EQ(texture->size, size);
287 ASSERT_EQ(texture->format, format); 290 ASSERT_EQ(texture->format, format);
288 memcpy(pixels, texture->data.get(), TextureSize(size, format)); 291 memcpy(pixels, texture->data.get(), TextureSize(size, format));
289 } 292 }
290 293
291 WGC3Denum GetTextureFilter() { 294 WGC3Denum GetTextureFilter() {
292 DCHECK(current_texture_); 295 DCHECK(current_texture_);
(...skipping 10 matching lines...) Expand all
303 : TestWebGraphicsContext3D(attrs), 306 : TestWebGraphicsContext3D(attrs),
304 shared_data_(shared_data), 307 shared_data_(shared_data),
305 current_texture_(0), 308 current_texture_(0),
306 last_waited_sync_point_(0) {} 309 last_waited_sync_point_(0) {}
307 310
308 private: 311 private:
309 void AllocateTexture(gfx::Size size, WGC3Denum format) { 312 void AllocateTexture(gfx::Size size, WGC3Denum format) {
310 ASSERT_TRUE(current_texture_); 313 ASSERT_TRUE(current_texture_);
311 scoped_refptr<Texture> texture = textures_[current_texture_]; 314 scoped_refptr<Texture> texture = textures_[current_texture_];
312 ASSERT_TRUE(texture.get()); 315 ASSERT_TRUE(texture.get());
313 texture->Reallocate(size, format); 316 ResourceFormat texture_format = RGBA_8888;
317 switch (format) {
318 case GL_RGBA:
319 texture_format = RGBA_8888;
320 break;
321 case GL_BGRA_EXT:
322 texture_format = BGRA_8888;
323 break;
324 }
325 texture->Reallocate(size, texture_format);
314 } 326 }
315 327
316 void SetPixels(int xoffset, 328 void SetPixels(int xoffset,
317 int yoffset, 329 int yoffset,
318 int width, 330 int width,
319 int height, 331 int height,
320 const void* pixels) { 332 const void* pixels) {
321 ASSERT_TRUE(current_texture_); 333 ASSERT_TRUE(current_texture_);
322 scoped_refptr<Texture> texture = textures_[current_texture_]; 334 scoped_refptr<Texture> texture = textures_[current_texture_];
323 ASSERT_TRUE(texture.get()); 335 ASSERT_TRUE(texture.get());
(...skipping 24 matching lines...) Expand all
348 WebGLId current_texture_; 360 WebGLId current_texture_;
349 TextureMap textures_; 361 TextureMap textures_;
350 unsigned last_waited_sync_point_; 362 unsigned last_waited_sync_point_;
351 PendingProduceTextureList pending_produce_textures_; 363 PendingProduceTextureList pending_produce_textures_;
352 }; 364 };
353 365
354 void GetResourcePixels(ResourceProvider* resource_provider, 366 void GetResourcePixels(ResourceProvider* resource_provider,
355 ResourceProviderContext* context, 367 ResourceProviderContext* context,
356 ResourceProvider::ResourceId id, 368 ResourceProvider::ResourceId id,
357 gfx::Size size, 369 gfx::Size size,
358 WGC3Denum format, 370 ResourceFormat format,
359 uint8_t* pixels) { 371 uint8_t* pixels) {
360 switch (resource_provider->default_resource_type()) { 372 switch (resource_provider->default_resource_type()) {
361 case ResourceProvider::GLTexture: { 373 case ResourceProvider::GLTexture: {
362 ResourceProvider::ScopedReadLockGL lock_gl(resource_provider, id); 374 ResourceProvider::ScopedReadLockGL lock_gl(resource_provider, id);
363 ASSERT_NE(0U, lock_gl.texture_id()); 375 ASSERT_NE(0U, lock_gl.texture_id());
364 context->bindTexture(GL_TEXTURE_2D, lock_gl.texture_id()); 376 context->bindTexture(GL_TEXTURE_2D, lock_gl.texture_id());
365 context->GetPixels(size, format, pixels); 377 context->GetPixels(size, format, pixels);
366 break; 378 break;
367 } 379 }
368 case ResourceProvider::Bitmap: { 380 case ResourceProvider::Bitmap: {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 } 412 }
401 case ResourceProvider::Bitmap: 413 case ResourceProvider::Bitmap:
402 output_surface_ = FakeOutputSurface::CreateSoftware( 414 output_surface_ = FakeOutputSurface::CreateSoftware(
403 make_scoped_ptr(new SoftwareOutputDevice)); 415 make_scoped_ptr(new SoftwareOutputDevice));
404 break; 416 break;
405 case ResourceProvider::InvalidType: 417 case ResourceProvider::InvalidType:
406 NOTREACHED(); 418 NOTREACHED();
407 break; 419 break;
408 } 420 }
409 CHECK(output_surface_->BindToClient(&output_surface_client_)); 421 CHECK(output_surface_->BindToClient(&output_surface_client_));
410 resource_provider_ = ResourceProvider::Create(output_surface_.get(), 0); 422 resource_provider_ = ResourceProvider::Create(
423 output_surface_.get(), 0, false);
411 } 424 }
412 425
413 static void SetResourceFilter(ResourceProvider* resource_provider, 426 static void SetResourceFilter(ResourceProvider* resource_provider,
414 ResourceProvider::ResourceId id, 427 ResourceProvider::ResourceId id,
415 WGC3Denum filter) { 428 WGC3Denum filter) {
416 ResourceProvider::ScopedSamplerGL sampler( 429 ResourceProvider::ScopedSamplerGL sampler(
417 resource_provider, id, GL_TEXTURE_2D, filter); 430 resource_provider, id, GL_TEXTURE_2D, filter);
418 } 431 }
419 432
420 ResourceProviderContext* context() { return context3d_; } 433 ResourceProviderContext* context() { return context3d_; }
421 434
422 protected: 435 protected:
423 scoped_ptr<ContextSharedData> shared_data_; 436 scoped_ptr<ContextSharedData> shared_data_;
424 ResourceProviderContext* context3d_; 437 ResourceProviderContext* context3d_;
425 FakeOutputSurfaceClient output_surface_client_; 438 FakeOutputSurfaceClient output_surface_client_;
426 scoped_ptr<OutputSurface> output_surface_; 439 scoped_ptr<OutputSurface> output_surface_;
427 scoped_ptr<ResourceProvider> resource_provider_; 440 scoped_ptr<ResourceProvider> resource_provider_;
428 }; 441 };
429 442
430 void CheckCreateResource(ResourceProvider::ResourceType expected_default_type, 443 void CheckCreateResource(ResourceProvider::ResourceType expected_default_type,
431 ResourceProvider* resource_provider, 444 ResourceProvider* resource_provider,
432 ResourceProviderContext* context) { 445 ResourceProviderContext* context) {
433 DCHECK_EQ(expected_default_type, resource_provider->default_resource_type()); 446 DCHECK_EQ(expected_default_type, resource_provider->default_resource_type());
434 447
435 gfx::Size size(1, 1); 448 gfx::Size size(1, 1);
436 WGC3Denum format = GL_RGBA; 449 ResourceFormat format = RGBA_8888;
437 size_t pixel_size = TextureSize(size, format); 450 size_t pixel_size = TextureSize(size, format);
438 ASSERT_EQ(4U, pixel_size); 451 ASSERT_EQ(4U, pixel_size);
439 452
440 ResourceProvider::ResourceId id = resource_provider->CreateResource( 453 ResourceProvider::ResourceId id = resource_provider->CreateResource(
441 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 454 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
442 EXPECT_EQ(1, static_cast<int>(resource_provider->num_resources())); 455 EXPECT_EQ(1, static_cast<int>(resource_provider->num_resources()));
443 if (expected_default_type == ResourceProvider::GLTexture) 456 if (expected_default_type == ResourceProvider::GLTexture)
444 EXPECT_EQ(0, context->texture_count()); 457 EXPECT_EQ(0, context->texture_count());
445 458
446 uint8_t data[4] = { 1, 2, 3, 4 }; 459 uint8_t data[4] = { 1, 2, 3, 4 };
447 gfx::Rect rect(size); 460 gfx::Rect rect(size);
448 resource_provider->SetPixels(id, data, rect, rect, gfx::Vector2d()); 461 resource_provider->SetPixels(id, data, rect, rect, gfx::Vector2d());
449 if (expected_default_type == ResourceProvider::GLTexture) 462 if (expected_default_type == ResourceProvider::GLTexture)
450 EXPECT_EQ(1, context->texture_count()); 463 EXPECT_EQ(1, context->texture_count());
451 464
452 uint8_t result[4] = { 0 }; 465 uint8_t result[4] = { 0 };
453 GetResourcePixels(resource_provider, context, id, size, format, result); 466 GetResourcePixels(resource_provider, context, id, size, format, result);
454 EXPECT_EQ(0, memcmp(data, result, pixel_size)); 467 EXPECT_EQ(0, memcmp(data, result, pixel_size));
455 468
456 resource_provider->DeleteResource(id); 469 resource_provider->DeleteResource(id);
457 EXPECT_EQ(0, static_cast<int>(resource_provider->num_resources())); 470 EXPECT_EQ(0, static_cast<int>(resource_provider->num_resources()));
458 if (expected_default_type == ResourceProvider::GLTexture) 471 if (expected_default_type == ResourceProvider::GLTexture)
459 EXPECT_EQ(0, context->texture_count()); 472 EXPECT_EQ(0, context->texture_count());
460 } 473 }
461 474
462 TEST_P(ResourceProviderTest, Basic) { 475 TEST_P(ResourceProviderTest, Basic) {
463 CheckCreateResource(GetParam(), resource_provider_.get(), context()); 476 CheckCreateResource(GetParam(), resource_provider_.get(), context());
464 } 477 }
465 478
466 TEST_P(ResourceProviderTest, Upload) { 479 TEST_P(ResourceProviderTest, Upload) {
467 gfx::Size size(2, 2); 480 gfx::Size size(2, 2);
468 WGC3Denum format = GL_RGBA; 481 ResourceFormat format = RGBA_8888;
469 size_t pixel_size = TextureSize(size, format); 482 size_t pixel_size = TextureSize(size, format);
470 ASSERT_EQ(16U, pixel_size); 483 ASSERT_EQ(16U, pixel_size);
471 484
472 ResourceProvider::ResourceId id = resource_provider_->CreateResource( 485 ResourceProvider::ResourceId id = resource_provider_->CreateResource(
473 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 486 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
474 487
475 uint8_t image[16] = { 0 }; 488 uint8_t image[16] = { 0 };
476 gfx::Rect image_rect(size); 489 gfx::Rect image_rect(size);
477 resource_provider_->SetPixels( 490 resource_provider_->SetPixels(
478 id, image, image_rect, image_rect, gfx::Vector2d()); 491 id, image, image_rect, image_rect, gfx::Vector2d());
479 492
480 for (uint8_t i = 0; i < pixel_size; ++i) 493 for (uint8_t i = 0; i < pixel_size; ++i)
481 image[i] = i; 494 image[i] = i;
482 495
483 uint8_t result[16] = { 0 }; 496 uint8_t result[16] = { 0 };
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 ResourceProviderContext::Create(shared_data_.get())); 552 ResourceProviderContext::Create(shared_data_.get()));
540 ResourceProviderContext* child_context = child_context_owned.get(); 553 ResourceProviderContext* child_context = child_context_owned.get();
541 554
542 FakeOutputSurfaceClient child_output_surface_client; 555 FakeOutputSurfaceClient child_output_surface_client;
543 scoped_ptr<OutputSurface> child_output_surface( 556 scoped_ptr<OutputSurface> child_output_surface(
544 FakeOutputSurface::Create3d( 557 FakeOutputSurface::Create3d(
545 child_context_owned.PassAs<TestWebGraphicsContext3D>())); 558 child_context_owned.PassAs<TestWebGraphicsContext3D>()));
546 CHECK(child_output_surface->BindToClient(&child_output_surface_client)); 559 CHECK(child_output_surface->BindToClient(&child_output_surface_client));
547 560
548 scoped_ptr<ResourceProvider> child_resource_provider( 561 scoped_ptr<ResourceProvider> child_resource_provider(
549 ResourceProvider::Create(child_output_surface.get(), 0)); 562 ResourceProvider::Create(child_output_surface.get(), 0, false));
550 563
551 gfx::Size size(1, 1); 564 gfx::Size size(1, 1);
552 WGC3Denum format = GL_RGBA; 565 ResourceFormat format = RGBA_8888;
553 size_t pixel_size = TextureSize(size, format); 566 size_t pixel_size = TextureSize(size, format);
554 ASSERT_EQ(4U, pixel_size); 567 ASSERT_EQ(4U, pixel_size);
555 568
556 ResourceProvider::ResourceId id1 = child_resource_provider->CreateResource( 569 ResourceProvider::ResourceId id1 = child_resource_provider->CreateResource(
557 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 570 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
558 uint8_t data1[4] = { 1, 2, 3, 4 }; 571 uint8_t data1[4] = { 1, 2, 3, 4 };
559 gfx::Rect rect(size); 572 gfx::Rect rect(size);
560 child_resource_provider->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); 573 child_resource_provider->SetPixels(id1, data1, rect, rect, gfx::Vector2d());
561 574
562 ResourceProvider::ResourceId id2 = child_resource_provider->CreateResource( 575 ResourceProvider::ResourceId id2 = child_resource_provider->CreateResource(
563 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 576 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
564 uint8_t data2[4] = { 5, 5, 5, 5 }; 577 uint8_t data2[4] = { 5, 5, 5, 5 };
565 child_resource_provider->SetPixels(id2, data2, rect, rect, gfx::Vector2d()); 578 child_resource_provider->SetPixels(id2, data2, rect, rect, gfx::Vector2d());
566 579
567 int child_id = resource_provider_->CreateChild(); 580 int child_id = resource_provider_->CreateChild();
568 { 581 {
569 // Transfer some resources to the parent. 582 // Transfer some resources to the parent.
570 ResourceProvider::ResourceIdArray resource_ids_to_transfer; 583 ResourceProvider::ResourceIdArray resource_ids_to_transfer;
571 resource_ids_to_transfer.push_back(id1); 584 resource_ids_to_transfer.push_back(id1);
572 resource_ids_to_transfer.push_back(id2); 585 resource_ids_to_transfer.push_back(id2);
573 TransferableResourceArray list; 586 TransferableResourceArray list;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
675 scoped_ptr<ResourceProviderContext> child_context_owned( 688 scoped_ptr<ResourceProviderContext> child_context_owned(
676 ResourceProviderContext::Create(shared_data_.get())); 689 ResourceProviderContext::Create(shared_data_.get()));
677 690
678 FakeOutputSurfaceClient child_output_surface_client; 691 FakeOutputSurfaceClient child_output_surface_client;
679 scoped_ptr<OutputSurface> child_output_surface( 692 scoped_ptr<OutputSurface> child_output_surface(
680 FakeOutputSurface::Create3d( 693 FakeOutputSurface::Create3d(
681 child_context_owned.PassAs<TestWebGraphicsContext3D>())); 694 child_context_owned.PassAs<TestWebGraphicsContext3D>()));
682 CHECK(child_output_surface->BindToClient(&child_output_surface_client)); 695 CHECK(child_output_surface->BindToClient(&child_output_surface_client));
683 696
684 scoped_ptr<ResourceProvider> child_resource_provider( 697 scoped_ptr<ResourceProvider> child_resource_provider(
685 ResourceProvider::Create(child_output_surface.get(), 0)); 698 ResourceProvider::Create(child_output_surface.get(), 0, false));
686 699
687 gfx::Size size(1, 1); 700 gfx::Size size(1, 1);
688 WGC3Denum format = GL_RGBA; 701 ResourceFormat format = RGBA_8888;
689 size_t pixel_size = TextureSize(size, format); 702 size_t pixel_size = TextureSize(size, format);
690 ASSERT_EQ(4U, pixel_size); 703 ASSERT_EQ(4U, pixel_size);
691 704
692 ResourceProvider::ResourceId id = child_resource_provider->CreateResource( 705 ResourceProvider::ResourceId id = child_resource_provider->CreateResource(
693 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 706 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
694 uint8_t data[4] = { 1, 2, 3, 4 }; 707 uint8_t data[4] = { 1, 2, 3, 4 };
695 gfx::Rect rect(size); 708 gfx::Rect rect(size);
696 child_resource_provider->SetPixels(id, data, rect, rect, gfx::Vector2d()); 709 child_resource_provider->SetPixels(id, data, rect, rect, gfx::Vector2d());
697 710
698 int child_id = resource_provider_->CreateChild(); 711 int child_id = resource_provider_->CreateChild();
699 { 712 {
700 // Transfer some resource to the parent. 713 // Transfer some resource to the parent.
701 ResourceProvider::ResourceIdArray resource_ids_to_transfer; 714 ResourceProvider::ResourceIdArray resource_ids_to_transfer;
702 resource_ids_to_transfer.push_back(id); 715 resource_ids_to_transfer.push_back(id);
703 TransferableResourceArray list; 716 TransferableResourceArray list;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
736 scoped_ptr<TextureStateTrackingContext> child_context_owned( 749 scoped_ptr<TextureStateTrackingContext> child_context_owned(
737 new TextureStateTrackingContext); 750 new TextureStateTrackingContext);
738 TextureStateTrackingContext* child_context = child_context_owned.get(); 751 TextureStateTrackingContext* child_context = child_context_owned.get();
739 752
740 FakeOutputSurfaceClient child_output_surface_client; 753 FakeOutputSurfaceClient child_output_surface_client;
741 scoped_ptr<OutputSurface> child_output_surface(FakeOutputSurface::Create3d( 754 scoped_ptr<OutputSurface> child_output_surface(FakeOutputSurface::Create3d(
742 child_context_owned.PassAs<TestWebGraphicsContext3D>())); 755 child_context_owned.PassAs<TestWebGraphicsContext3D>()));
743 CHECK(child_output_surface->BindToClient(&child_output_surface_client)); 756 CHECK(child_output_surface->BindToClient(&child_output_surface_client));
744 757
745 scoped_ptr<ResourceProvider> child_resource_provider( 758 scoped_ptr<ResourceProvider> child_resource_provider(
746 ResourceProvider::Create(child_output_surface.get(), 0)); 759 ResourceProvider::Create(child_output_surface.get(), 0, false));
747 760
748 scoped_ptr<TextureStateTrackingContext> parent_context_owned( 761 scoped_ptr<TextureStateTrackingContext> parent_context_owned(
749 new TextureStateTrackingContext); 762 new TextureStateTrackingContext);
750 TextureStateTrackingContext* parent_context = parent_context_owned.get(); 763 TextureStateTrackingContext* parent_context = parent_context_owned.get();
751 764
752 FakeOutputSurfaceClient parent_output_surface_client; 765 FakeOutputSurfaceClient parent_output_surface_client;
753 scoped_ptr<OutputSurface> parent_output_surface(FakeOutputSurface::Create3d( 766 scoped_ptr<OutputSurface> parent_output_surface(FakeOutputSurface::Create3d(
754 parent_context_owned.PassAs<TestWebGraphicsContext3D>())); 767 parent_context_owned.PassAs<TestWebGraphicsContext3D>()));
755 CHECK(parent_output_surface->BindToClient(&parent_output_surface_client)); 768 CHECK(parent_output_surface->BindToClient(&parent_output_surface_client));
756 769
757 scoped_ptr<ResourceProvider> parent_resource_provider( 770 scoped_ptr<ResourceProvider> parent_resource_provider(
758 ResourceProvider::Create(parent_output_surface.get(), 0)); 771 ResourceProvider::Create(parent_output_surface.get(), 0, false));
759 772
760 gfx::Size size(1, 1); 773 gfx::Size size(1, 1);
761 WGC3Denum format = GL_RGBA; 774 ResourceFormat format = RGBA_8888;
762 int texture_id = 1; 775 int texture_id = 1;
763 776
764 size_t pixel_size = TextureSize(size, format); 777 size_t pixel_size = TextureSize(size, format);
765 ASSERT_EQ(4U, pixel_size); 778 ASSERT_EQ(4U, pixel_size);
766 779
767 ResourceProvider::ResourceId id = child_resource_provider->CreateResource( 780 ResourceProvider::ResourceId id = child_resource_provider->CreateResource(
768 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 781 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
769 782
770 // The new texture is created with GL_LINEAR. 783 // The new texture is created with GL_LINEAR.
771 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, texture_id)) 784 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, texture_id))
772 .Times(2); // Once to create and once to allocate. 785 .Times(2); // Once to create and once to allocate.
773 EXPECT_CALL(*child_context, 786 EXPECT_CALL(*child_context,
774 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); 787 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR));
775 EXPECT_CALL(*child_context, 788 EXPECT_CALL(*child_context,
776 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); 789 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR));
777 EXPECT_CALL( 790 EXPECT_CALL(
778 *child_context, 791 *child_context,
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
935 EXPECT_LE(sync_point, list[0].sync_point); 948 EXPECT_LE(sync_point, list[0].sync_point);
936 EXPECT_EQ(0, 949 EXPECT_EQ(0,
937 memcmp(mailbox.name, list[0].mailbox.name, sizeof(mailbox.name))); 950 memcmp(mailbox.name, list[0].mailbox.name, sizeof(mailbox.name)));
938 EXPECT_EQ(0u, release_sync_point); 951 EXPECT_EQ(0u, release_sync_point);
939 952
940 context()->waitSyncPoint(list[0].sync_point); 953 context()->waitSyncPoint(list[0].sync_point);
941 unsigned other_texture = context()->createTexture(); 954 unsigned other_texture = context()->createTexture();
942 context()->bindTexture(GL_TEXTURE_2D, other_texture); 955 context()->bindTexture(GL_TEXTURE_2D, other_texture);
943 context()->consumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); 956 context()->consumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name);
944 uint8_t test_data[4] = { 0 }; 957 uint8_t test_data[4] = { 0 };
945 context()->GetPixels(gfx::Size(1, 1), GL_RGBA, test_data); 958 context()->GetPixels(
959 gfx::Size(1, 1), RGBA_8888, test_data);
946 EXPECT_EQ(0, memcmp(data, test_data, sizeof(data))); 960 EXPECT_EQ(0, memcmp(data, test_data, sizeof(data)));
947 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); 961 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name);
948 context()->deleteTexture(other_texture); 962 context()->deleteTexture(other_texture);
949 list[0].sync_point = context()->insertSyncPoint(); 963 list[0].sync_point = context()->insertSyncPoint();
950 EXPECT_LT(0u, list[0].sync_point); 964 EXPECT_LT(0u, list[0].sync_point);
951 965
952 // Receive the resource, then delete it, expect the sync points to be 966 // Receive the resource, then delete it, expect the sync points to be
953 // consistent. 967 // consistent.
954 ReturnedResourceArray returned; 968 ReturnedResourceArray returned;
955 TransferableResource::ReturnResources(list, &returned); 969 TransferableResource::ReturnResources(list, &returned);
(...skipping 25 matching lines...) Expand all
981 EXPECT_LE(sync_point, list[0].sync_point); 995 EXPECT_LE(sync_point, list[0].sync_point);
982 EXPECT_EQ(0, 996 EXPECT_EQ(0,
983 memcmp(mailbox.name, list[0].mailbox.name, sizeof(mailbox.name))); 997 memcmp(mailbox.name, list[0].mailbox.name, sizeof(mailbox.name)));
984 EXPECT_EQ(0u, release_sync_point); 998 EXPECT_EQ(0u, release_sync_point);
985 999
986 context()->waitSyncPoint(list[0].sync_point); 1000 context()->waitSyncPoint(list[0].sync_point);
987 unsigned other_texture = context()->createTexture(); 1001 unsigned other_texture = context()->createTexture();
988 context()->bindTexture(GL_TEXTURE_2D, other_texture); 1002 context()->bindTexture(GL_TEXTURE_2D, other_texture);
989 context()->consumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); 1003 context()->consumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name);
990 uint8_t test_data[4] = { 0 }; 1004 uint8_t test_data[4] = { 0 };
991 context()->GetPixels(gfx::Size(1, 1), GL_RGBA, test_data); 1005 context()->GetPixels(
1006 gfx::Size(1, 1), RGBA_8888, test_data);
992 EXPECT_EQ(0, memcmp(data, test_data, sizeof(data))); 1007 EXPECT_EQ(0, memcmp(data, test_data, sizeof(data)));
993 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); 1008 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name);
994 context()->deleteTexture(other_texture); 1009 context()->deleteTexture(other_texture);
995 list[0].sync_point = context()->insertSyncPoint(); 1010 list[0].sync_point = context()->insertSyncPoint();
996 EXPECT_LT(0u, list[0].sync_point); 1011 EXPECT_LT(0u, list[0].sync_point);
997 1012
998 // Delete the resource, which shouldn't do anything. 1013 // Delete the resource, which shouldn't do anything.
999 resource_provider_->DeleteResource(resource); 1014 resource_provider_->DeleteResource(resource);
1000 EXPECT_EQ(1, context()->texture_count()); 1015 EXPECT_EQ(1, context()->texture_count());
1001 EXPECT_EQ(0u, release_sync_point); 1016 EXPECT_EQ(0u, release_sync_point);
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
1154 scoped_ptr<TextureStateTrackingContext> context_owned( 1169 scoped_ptr<TextureStateTrackingContext> context_owned(
1155 new TextureStateTrackingContext); 1170 new TextureStateTrackingContext);
1156 TextureStateTrackingContext* context = context_owned.get(); 1171 TextureStateTrackingContext* context = context_owned.get();
1157 1172
1158 FakeOutputSurfaceClient output_surface_client; 1173 FakeOutputSurfaceClient output_surface_client;
1159 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( 1174 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d(
1160 context_owned.PassAs<TestWebGraphicsContext3D>())); 1175 context_owned.PassAs<TestWebGraphicsContext3D>()));
1161 CHECK(output_surface->BindToClient(&output_surface_client)); 1176 CHECK(output_surface->BindToClient(&output_surface_client));
1162 1177
1163 scoped_ptr<ResourceProvider> resource_provider( 1178 scoped_ptr<ResourceProvider> resource_provider(
1164 ResourceProvider::Create(output_surface.get(), 0)); 1179 ResourceProvider::Create(output_surface.get(), 0, false));
1165 1180
1166 gfx::Size size(1, 1); 1181 gfx::Size size(1, 1);
1167 WGC3Denum format = GL_RGBA; 1182 ResourceFormat format = RGBA_8888;
1168 int texture_id = 1; 1183 int texture_id = 1;
1169 1184
1170 ResourceProvider::ResourceId id = resource_provider->CreateResource( 1185 ResourceProvider::ResourceId id = resource_provider->CreateResource(
1171 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 1186 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
1172 1187
1173 // Check that the texture gets created with the right sampler settings. 1188 // Check that the texture gets created with the right sampler settings.
1174 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)) 1189 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id))
1175 .Times(2); // Once to create and once to allocate. 1190 .Times(2); // Once to create and once to allocate.
1176 EXPECT_CALL(*context, 1191 EXPECT_CALL(*context,
1177 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); 1192 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR));
1178 EXPECT_CALL(*context, 1193 EXPECT_CALL(*context,
1179 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); 1194 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR));
1180 EXPECT_CALL( 1195 EXPECT_CALL(
1181 *context, 1196 *context,
1182 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); 1197 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE));
1183 EXPECT_CALL( 1198 EXPECT_CALL(
1184 *context, 1199 *context,
1185 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); 1200 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE));
1186 EXPECT_CALL(*context, 1201 EXPECT_CALL(*context,
1187 texParameteri(GL_TEXTURE_2D, 1202 texParameteri(GL_TEXTURE_2D,
1188 GL_TEXTURE_POOL_CHROMIUM, 1203 GL_TEXTURE_POOL_CHROMIUM,
1189 GL_TEXTURE_POOL_UNMANAGED_CHROMIUM)); 1204 GL_TEXTURE_POOL_UNMANAGED_CHROMIUM));
1205
1190 resource_provider->AllocateForTesting(id); 1206 resource_provider->AllocateForTesting(id);
1191 Mock::VerifyAndClearExpectations(context); 1207 Mock::VerifyAndClearExpectations(context);
1192 1208
1193 // Creating a sampler with the default filter should not change any texture 1209 // Creating a sampler with the default filter should not change any texture
1194 // parameters. 1210 // parameters.
1195 { 1211 {
1196 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); 1212 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id));
1197 ResourceProvider::ScopedSamplerGL sampler( 1213 ResourceProvider::ScopedSamplerGL sampler(
1198 resource_provider.get(), id, GL_TEXTURE_2D, GL_LINEAR); 1214 resource_provider.get(), id, GL_TEXTURE_2D, GL_LINEAR);
1199 Mock::VerifyAndClearExpectations(context); 1215 Mock::VerifyAndClearExpectations(context);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1234 scoped_ptr<TextureStateTrackingContext> context_owned( 1250 scoped_ptr<TextureStateTrackingContext> context_owned(
1235 new TextureStateTrackingContext); 1251 new TextureStateTrackingContext);
1236 TextureStateTrackingContext* context = context_owned.get(); 1252 TextureStateTrackingContext* context = context_owned.get();
1237 1253
1238 FakeOutputSurfaceClient output_surface_client; 1254 FakeOutputSurfaceClient output_surface_client;
1239 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( 1255 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d(
1240 context_owned.PassAs<TestWebGraphicsContext3D>())); 1256 context_owned.PassAs<TestWebGraphicsContext3D>()));
1241 CHECK(output_surface->BindToClient(&output_surface_client)); 1257 CHECK(output_surface->BindToClient(&output_surface_client));
1242 1258
1243 scoped_ptr<ResourceProvider> resource_provider( 1259 scoped_ptr<ResourceProvider> resource_provider(
1244 ResourceProvider::Create(output_surface.get(), 0)); 1260 ResourceProvider::Create(output_surface.get(), 0, false));
1245 1261
1246 gfx::Size size(1, 1); 1262 gfx::Size size(1, 1);
1247 WGC3Denum format = GL_RGBA; 1263 ResourceFormat format = RGBA_8888;
1248 int texture_id = 1; 1264 int texture_id = 1;
1249 1265
1250 // Check that the texture gets created with the right sampler settings. 1266 // Check that the texture gets created with the right sampler settings.
1251 ResourceProvider::ResourceId id = resource_provider->CreateManagedResource( 1267 ResourceProvider::ResourceId id = resource_provider->CreateManagedResource(
1252 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 1268 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
1253 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); 1269 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id));
1254 EXPECT_CALL(*context, 1270 EXPECT_CALL(*context,
1255 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); 1271 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR));
1256 EXPECT_CALL(*context, 1272 EXPECT_CALL(*context,
1257 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); 1273 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR));
1258 EXPECT_CALL( 1274 EXPECT_CALL(
1259 *context, 1275 *context,
1260 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); 1276 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE));
1261 EXPECT_CALL( 1277 EXPECT_CALL(
1262 *context, 1278 *context,
(...skipping 16 matching lines...) Expand all
1279 scoped_ptr<TextureStateTrackingContext> context_owned( 1295 scoped_ptr<TextureStateTrackingContext> context_owned(
1280 new TextureStateTrackingContext); 1296 new TextureStateTrackingContext);
1281 TextureStateTrackingContext* context = context_owned.get(); 1297 TextureStateTrackingContext* context = context_owned.get();
1282 1298
1283 FakeOutputSurfaceClient output_surface_client; 1299 FakeOutputSurfaceClient output_surface_client;
1284 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( 1300 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d(
1285 context_owned.PassAs<TestWebGraphicsContext3D>())); 1301 context_owned.PassAs<TestWebGraphicsContext3D>()));
1286 CHECK(output_surface->BindToClient(&output_surface_client)); 1302 CHECK(output_surface->BindToClient(&output_surface_client));
1287 1303
1288 scoped_ptr<ResourceProvider> resource_provider( 1304 scoped_ptr<ResourceProvider> resource_provider(
1289 ResourceProvider::Create(output_surface.get(), 0)); 1305 ResourceProvider::Create(output_surface.get(), 0, false));
1290 1306
1291 gfx::Size size(1, 1); 1307 gfx::Size size(1, 1);
1292 WGC3Denum format = GL_RGBA; 1308 ResourceFormat format = RGBA_8888;
1293 int texture_id = 1; 1309 int texture_id = 1;
1294 GLenum texture_pool = GL_TEXTURE_POOL_UNMANAGED_CHROMIUM; 1310 GLenum texture_pool = GL_TEXTURE_POOL_UNMANAGED_CHROMIUM;
1295 1311
1296 for (int i = 0; i < 2; ++i) { 1312 for (int i = 0; i < 2; ++i) {
1297 GLint wrap_mode = i ? GL_CLAMP_TO_EDGE : GL_REPEAT; 1313 GLint wrap_mode = i ? GL_CLAMP_TO_EDGE : GL_REPEAT;
1298 // Check that the texture gets created with the right sampler settings. 1314 // Check that the texture gets created with the right sampler settings.
1299 ResourceProvider::ResourceId id = resource_provider->CreateGLTexture( 1315 ResourceProvider::ResourceId id =
1300 size, format, texture_pool, wrap_mode, 1316 resource_provider->CreateGLTexture(size,
1301 ResourceProvider::TextureUsageAny); 1317 texture_pool,
1318 wrap_mode,
1319 ResourceProvider::TextureUsageAny,
1320 format);
1302 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); 1321 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id));
1303 EXPECT_CALL(*context, 1322 EXPECT_CALL(*context,
1304 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); 1323 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR));
1305 EXPECT_CALL(*context, 1324 EXPECT_CALL(*context,
1306 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); 1325 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR));
1307 EXPECT_CALL( 1326 EXPECT_CALL(
1308 *context, 1327 *context,
1309 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_mode)); 1328 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_mode));
1310 EXPECT_CALL( 1329 EXPECT_CALL(
1311 *context, 1330 *context,
(...skipping 20 matching lines...) Expand all
1332 scoped_ptr<base::SharedMemory> shared_memory( 1351 scoped_ptr<base::SharedMemory> shared_memory(
1333 CreateAndFillSharedMemory(size, kBadBeef)); 1352 CreateAndFillSharedMemory(size, kBadBeef));
1334 1353
1335 FakeOutputSurfaceClient output_surface_client; 1354 FakeOutputSurfaceClient output_surface_client;
1336 scoped_ptr<OutputSurface> output_surface( 1355 scoped_ptr<OutputSurface> output_surface(
1337 FakeOutputSurface::CreateSoftware(make_scoped_ptr( 1356 FakeOutputSurface::CreateSoftware(make_scoped_ptr(
1338 new SoftwareOutputDevice))); 1357 new SoftwareOutputDevice)));
1339 CHECK(output_surface->BindToClient(&output_surface_client)); 1358 CHECK(output_surface->BindToClient(&output_surface_client));
1340 1359
1341 scoped_ptr<ResourceProvider> resource_provider( 1360 scoped_ptr<ResourceProvider> resource_provider(
1342 ResourceProvider::Create(output_surface.get(), 0)); 1361 ResourceProvider::Create(output_surface.get(), 0, false));
1343 1362
1344 TextureMailbox::ReleaseCallback callback = base::Bind(&EmptyReleaseCallback); 1363 TextureMailbox::ReleaseCallback callback = base::Bind(&EmptyReleaseCallback);
1345 TextureMailbox mailbox(shared_memory.get(), size, callback); 1364 TextureMailbox mailbox(shared_memory.get(), size, callback);
1346 1365
1347 ResourceProvider::ResourceId id = 1366 ResourceProvider::ResourceId id =
1348 resource_provider->CreateResourceFromTextureMailbox(mailbox); 1367 resource_provider->CreateResourceFromTextureMailbox(mailbox);
1349 EXPECT_NE(0u, id); 1368 EXPECT_NE(0u, id);
1350 1369
1351 { 1370 {
1352 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), id); 1371 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), id);
(...skipping 12 matching lines...) Expand all
1365 scoped_ptr<TextureStateTrackingContext> context_owned( 1384 scoped_ptr<TextureStateTrackingContext> context_owned(
1366 new TextureStateTrackingContext); 1385 new TextureStateTrackingContext);
1367 TextureStateTrackingContext* context = context_owned.get(); 1386 TextureStateTrackingContext* context = context_owned.get();
1368 1387
1369 FakeOutputSurfaceClient output_surface_client; 1388 FakeOutputSurfaceClient output_surface_client;
1370 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( 1389 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d(
1371 context_owned.PassAs<TestWebGraphicsContext3D>())); 1390 context_owned.PassAs<TestWebGraphicsContext3D>()));
1372 CHECK(output_surface->BindToClient(&output_surface_client)); 1391 CHECK(output_surface->BindToClient(&output_surface_client));
1373 1392
1374 scoped_ptr<ResourceProvider> resource_provider( 1393 scoped_ptr<ResourceProvider> resource_provider(
1375 ResourceProvider::Create(output_surface.get(), 0)); 1394 ResourceProvider::Create(output_surface.get(), 0, false));
1376 1395
1377 unsigned texture_id = 1; 1396 unsigned texture_id = 1;
1378 unsigned sync_point = 30; 1397 unsigned sync_point = 30;
1379 unsigned target = GL_TEXTURE_2D; 1398 unsigned target = GL_TEXTURE_2D;
1380 1399
1381 EXPECT_CALL(*context, bindTexture(_, _)).Times(0); 1400 EXPECT_CALL(*context, bindTexture(_, _)).Times(0);
1382 EXPECT_CALL(*context, waitSyncPoint(_)).Times(0); 1401 EXPECT_CALL(*context, waitSyncPoint(_)).Times(0);
1383 EXPECT_CALL(*context, insertSyncPoint()).Times(0); 1402 EXPECT_CALL(*context, insertSyncPoint()).Times(0);
1384 EXPECT_CALL(*context, produceTextureCHROMIUM(_, _)).Times(0); 1403 EXPECT_CALL(*context, produceTextureCHROMIUM(_, _)).Times(0);
1385 EXPECT_CALL(*context, consumeTextureCHROMIUM(_, _)).Times(0); 1404 EXPECT_CALL(*context, consumeTextureCHROMIUM(_, _)).Times(0);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1429 scoped_ptr<TextureStateTrackingContext> context_owned( 1448 scoped_ptr<TextureStateTrackingContext> context_owned(
1430 new TextureStateTrackingContext); 1449 new TextureStateTrackingContext);
1431 TextureStateTrackingContext* context = context_owned.get(); 1450 TextureStateTrackingContext* context = context_owned.get();
1432 1451
1433 FakeOutputSurfaceClient output_surface_client; 1452 FakeOutputSurfaceClient output_surface_client;
1434 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( 1453 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d(
1435 context_owned.PassAs<TestWebGraphicsContext3D>())); 1454 context_owned.PassAs<TestWebGraphicsContext3D>()));
1436 CHECK(output_surface->BindToClient(&output_surface_client)); 1455 CHECK(output_surface->BindToClient(&output_surface_client));
1437 1456
1438 scoped_ptr<ResourceProvider> resource_provider( 1457 scoped_ptr<ResourceProvider> resource_provider(
1439 ResourceProvider::Create(output_surface.get(), 0)); 1458 ResourceProvider::Create(output_surface.get(), 0, false));
1440 1459
1441 unsigned texture_id = 1; 1460 unsigned texture_id = 1;
1442 unsigned sync_point = 30; 1461 unsigned sync_point = 30;
1443 unsigned target = GL_TEXTURE_EXTERNAL_OES; 1462 unsigned target = GL_TEXTURE_EXTERNAL_OES;
1444 1463
1445 EXPECT_CALL(*context, bindTexture(_, _)).Times(0); 1464 EXPECT_CALL(*context, bindTexture(_, _)).Times(0);
1446 EXPECT_CALL(*context, waitSyncPoint(_)).Times(0); 1465 EXPECT_CALL(*context, waitSyncPoint(_)).Times(0);
1447 EXPECT_CALL(*context, insertSyncPoint()).Times(0); 1466 EXPECT_CALL(*context, insertSyncPoint()).Times(0);
1448 EXPECT_CALL(*context, produceTextureCHROMIUM(_, _)).Times(0); 1467 EXPECT_CALL(*context, produceTextureCHROMIUM(_, _)).Times(0);
1449 EXPECT_CALL(*context, consumeTextureCHROMIUM(_, _)).Times(0); 1468 EXPECT_CALL(*context, consumeTextureCHROMIUM(_, _)).Times(0);
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1550 scoped_ptr<AllocationTrackingContext3D> context_owned( 1569 scoped_ptr<AllocationTrackingContext3D> context_owned(
1551 new StrictMock<AllocationTrackingContext3D>); 1570 new StrictMock<AllocationTrackingContext3D>);
1552 AllocationTrackingContext3D* context = context_owned.get(); 1571 AllocationTrackingContext3D* context = context_owned.get();
1553 1572
1554 FakeOutputSurfaceClient output_surface_client; 1573 FakeOutputSurfaceClient output_surface_client;
1555 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( 1574 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d(
1556 context_owned.PassAs<TestWebGraphicsContext3D>())); 1575 context_owned.PassAs<TestWebGraphicsContext3D>()));
1557 CHECK(output_surface->BindToClient(&output_surface_client)); 1576 CHECK(output_surface->BindToClient(&output_surface_client));
1558 1577
1559 scoped_ptr<ResourceProvider> resource_provider( 1578 scoped_ptr<ResourceProvider> resource_provider(
1560 ResourceProvider::Create(output_surface.get(), 0)); 1579 ResourceProvider::Create(output_surface.get(), 0, false));
1561 1580
1562 gfx::Size size(2, 2); 1581 gfx::Size size(2, 2);
1563 gfx::Vector2d offset(0, 0); 1582 gfx::Vector2d offset(0, 0);
1564 gfx::Rect rect(0, 0, 2, 2); 1583 gfx::Rect rect(0, 0, 2, 2);
1565 WGC3Denum format = GL_RGBA; 1584 ResourceFormat format = RGBA_8888;
1566 ResourceProvider::ResourceId id = 0; 1585 ResourceProvider::ResourceId id = 0;
1567 uint8_t pixels[16] = { 0 }; 1586 uint8_t pixels[16] = { 0 };
1568 int texture_id = 123; 1587 int texture_id = 123;
1569 1588
1570 // Lazy allocation. Don't allocate when creating the resource. 1589 // Lazy allocation. Don't allocate when creating the resource.
1571 id = resource_provider->CreateResource( 1590 id = resource_provider->CreateResource(
1572 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 1591 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
1573 1592
1574 EXPECT_CALL(*context, createTexture()).WillOnce(Return(texture_id)); 1593 EXPECT_CALL(*context, createTexture()).WillOnce(Return(texture_id));
1575 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(1); 1594 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(1);
1576 resource_provider->CreateForTesting(id); 1595 resource_provider->CreateForTesting(id);
1577 1596
1578 EXPECT_CALL(*context, deleteTexture(texture_id)).Times(1); 1597 EXPECT_CALL(*context, deleteTexture(texture_id)).Times(1);
1579 resource_provider->DeleteResource(id); 1598 resource_provider->DeleteResource(id);
1580 1599
1581 Mock::VerifyAndClearExpectations(context); 1600 Mock::VerifyAndClearExpectations(context);
1582 1601
1583 // Do allocate when we set the pixels. 1602 // Do allocate when we set the pixels.
1584 id = resource_provider->CreateResource( 1603 id = resource_provider->CreateResource(
1585 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 1604 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
1586 1605
1587 EXPECT_CALL(*context, createTexture()).WillOnce(Return(texture_id)); 1606 EXPECT_CALL(*context, createTexture()).WillOnce(Return(texture_id));
1588 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(3); 1607 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(3);
1589 EXPECT_CALL(*context, texImage2D(_, _, _, 2, 2, _, _, _, _)).Times(1); 1608 EXPECT_CALL(*context, texImage2D(_, _, _, 2, 2, _, _, _, _)).Times(1);
1590 EXPECT_CALL(*context, texSubImage2D(_, _, _, _, 2, 2, _, _, _)).Times(1); 1609 EXPECT_CALL(*context, texSubImage2D(_, _, _, _, 2, 2, _, _, _)).Times(1);
1591 resource_provider->SetPixels(id, pixels, rect, rect, offset); 1610 resource_provider->SetPixels(id, pixels, rect, rect, offset);
1592 1611
1593 EXPECT_CALL(*context, deleteTexture(texture_id)).Times(1); 1612 EXPECT_CALL(*context, deleteTexture(texture_id)).Times(1);
1594 resource_provider->DeleteResource(id); 1613 resource_provider->DeleteResource(id);
1595 1614
1596 Mock::VerifyAndClearExpectations(context); 1615 Mock::VerifyAndClearExpectations(context);
1597 1616
1598 // Same for async version. 1617 // Same for async version.
1599 id = resource_provider->CreateResource( 1618 id = resource_provider->CreateResource(
1600 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 1619 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
1601 resource_provider->AcquirePixelBuffer(id); 1620 resource_provider->AcquirePixelBuffer(id);
1602 1621
1603 EXPECT_CALL(*context, createTexture()).WillOnce(Return(texture_id)); 1622 EXPECT_CALL(*context, createTexture()).WillOnce(Return(texture_id));
1604 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); 1623 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2);
1605 EXPECT_CALL(*context, asyncTexImage2DCHROMIUM(_, _, _, 2, 2, _, _, _, _)) 1624 EXPECT_CALL(*context, asyncTexImage2DCHROMIUM(_, _, _, 2, 2, _, _, _, _))
1606 .Times(1); 1625 .Times(1);
1607 resource_provider->BeginSetPixels(id); 1626 resource_provider->BeginSetPixels(id);
1608 ASSERT_TRUE(resource_provider->DidSetPixelsComplete(id)); 1627 ASSERT_TRUE(resource_provider->DidSetPixelsComplete(id));
1609 1628
1610 resource_provider->ReleasePixelBuffer(id); 1629 resource_provider->ReleasePixelBuffer(id);
(...skipping 10 matching lines...) Expand all
1621 scoped_ptr<AllocationTrackingContext3D> context_owned( 1640 scoped_ptr<AllocationTrackingContext3D> context_owned(
1622 new StrictMock<AllocationTrackingContext3D>); 1641 new StrictMock<AllocationTrackingContext3D>);
1623 AllocationTrackingContext3D* context = context_owned.get(); 1642 AllocationTrackingContext3D* context = context_owned.get();
1624 1643
1625 FakeOutputSurfaceClient output_surface_client; 1644 FakeOutputSurfaceClient output_surface_client;
1626 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( 1645 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d(
1627 context_owned.PassAs<TestWebGraphicsContext3D>())); 1646 context_owned.PassAs<TestWebGraphicsContext3D>()));
1628 CHECK(output_surface->BindToClient(&output_surface_client)); 1647 CHECK(output_surface->BindToClient(&output_surface_client));
1629 1648
1630 gfx::Size size(2, 2); 1649 gfx::Size size(2, 2);
1631 WGC3Denum format = GL_RGBA; 1650 ResourceFormat format = RGBA_8888;
1632 ResourceProvider::ResourceId id = 0; 1651 ResourceProvider::ResourceId id = 0;
1633 int texture_id = 123; 1652 int texture_id = 123;
1634 1653
1635 scoped_ptr<ResourceProvider> resource_provider( 1654 scoped_ptr<ResourceProvider> resource_provider(
1636 ResourceProvider::Create(output_surface.get(), 0)); 1655 ResourceProvider::Create(output_surface.get(), 0, false));
1637 1656
1638 id = resource_provider->CreateResource( 1657 id = resource_provider->CreateResource(
1639 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 1658 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
1640 resource_provider->AcquirePixelBuffer(id); 1659 resource_provider->AcquirePixelBuffer(id);
1641 1660
1642 EXPECT_CALL(*context, createTexture()).WillOnce(Return(texture_id)); 1661 EXPECT_CALL(*context, createTexture()).WillOnce(Return(texture_id));
1643 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); 1662 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2);
1644 EXPECT_CALL(*context, asyncTexImage2DCHROMIUM(_, _, _, 2, 2, _, _, _, _)) 1663 EXPECT_CALL(*context, asyncTexImage2DCHROMIUM(_, _, _, 2, 2, _, _, _, _))
1645 .Times(1); 1664 .Times(1);
1646 resource_provider->BeginSetPixels(id); 1665 resource_provider->BeginSetPixels(id);
1647 1666
1648 EXPECT_TRUE(resource_provider->DidSetPixelsComplete(id)); 1667 EXPECT_TRUE(resource_provider->DidSetPixelsComplete(id));
1649 1668
1650 resource_provider->ReleasePixelBuffer(id); 1669 resource_provider->ReleasePixelBuffer(id);
1651 1670
1652 EXPECT_CALL(*context, deleteTexture(texture_id)).Times(1); 1671 EXPECT_CALL(*context, deleteTexture(texture_id)).Times(1);
1653 resource_provider->DeleteResource(id); 1672 resource_provider->DeleteResource(id);
1654 1673
1655 Mock::VerifyAndClearExpectations(context); 1674 Mock::VerifyAndClearExpectations(context);
1656 } 1675 }
1657 1676
1658 TEST_P(ResourceProviderTest, PixelBuffer_Bitmap) { 1677 TEST_P(ResourceProviderTest, PixelBuffer_Bitmap) {
1659 if (GetParam() != ResourceProvider::Bitmap) 1678 if (GetParam() != ResourceProvider::Bitmap)
1660 return; 1679 return;
1661 FakeOutputSurfaceClient output_surface_client; 1680 FakeOutputSurfaceClient output_surface_client;
1662 scoped_ptr<OutputSurface> output_surface( 1681 scoped_ptr<OutputSurface> output_surface(
1663 FakeOutputSurface::CreateSoftware(make_scoped_ptr( 1682 FakeOutputSurface::CreateSoftware(make_scoped_ptr(
1664 new SoftwareOutputDevice))); 1683 new SoftwareOutputDevice)));
1665 CHECK(output_surface->BindToClient(&output_surface_client)); 1684 CHECK(output_surface->BindToClient(&output_surface_client));
1666 1685
1667 gfx::Size size(1, 1); 1686 gfx::Size size(1, 1);
1668 WGC3Denum format = GL_RGBA; 1687 ResourceFormat format = RGBA_8888;
1669 ResourceProvider::ResourceId id = 0; 1688 ResourceProvider::ResourceId id = 0;
1670 const uint32_t kBadBeef = 0xbadbeef; 1689 const uint32_t kBadBeef = 0xbadbeef;
1671 1690
1672 scoped_ptr<ResourceProvider> resource_provider( 1691 scoped_ptr<ResourceProvider> resource_provider(
1673 ResourceProvider::Create(output_surface.get(), 0)); 1692 ResourceProvider::Create(output_surface.get(), 0, false));
1674 1693
1675 id = resource_provider->CreateResource( 1694 id = resource_provider->CreateResource(
1676 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 1695 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
1677 resource_provider->AcquirePixelBuffer(id); 1696 resource_provider->AcquirePixelBuffer(id);
1678 1697
1679 void* data = resource_provider->MapPixelBuffer(id); 1698 void* data = resource_provider->MapPixelBuffer(id);
1680 ASSERT_TRUE(!!data); 1699 ASSERT_TRUE(!!data);
1681 memcpy(data, &kBadBeef, sizeof(kBadBeef)); 1700 memcpy(data, &kBadBeef, sizeof(kBadBeef));
1682 resource_provider->UnmapPixelBuffer(id); 1701 resource_provider->UnmapPixelBuffer(id);
1683 1702
1684 resource_provider->BeginSetPixels(id); 1703 resource_provider->BeginSetPixels(id);
1685 EXPECT_TRUE(resource_provider->DidSetPixelsComplete(id)); 1704 EXPECT_TRUE(resource_provider->DidSetPixelsComplete(id));
1686 1705
(...skipping 17 matching lines...) Expand all
1704 scoped_ptr<AllocationTrackingContext3D> context_owned( 1723 scoped_ptr<AllocationTrackingContext3D> context_owned(
1705 new StrictMock<AllocationTrackingContext3D>); 1724 new StrictMock<AllocationTrackingContext3D>);
1706 AllocationTrackingContext3D* context = context_owned.get(); 1725 AllocationTrackingContext3D* context = context_owned.get();
1707 1726
1708 FakeOutputSurfaceClient output_surface_client; 1727 FakeOutputSurfaceClient output_surface_client;
1709 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( 1728 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d(
1710 context_owned.PassAs<TestWebGraphicsContext3D>())); 1729 context_owned.PassAs<TestWebGraphicsContext3D>()));
1711 CHECK(output_surface->BindToClient(&output_surface_client)); 1730 CHECK(output_surface->BindToClient(&output_surface_client));
1712 1731
1713 gfx::Size size(2, 2); 1732 gfx::Size size(2, 2);
1714 WGC3Denum format = GL_RGBA; 1733 ResourceFormat format = RGBA_8888;
1715 ResourceProvider::ResourceId id = 0; 1734 ResourceProvider::ResourceId id = 0;
1716 int texture_id = 123; 1735 int texture_id = 123;
1717 1736
1718 scoped_ptr<ResourceProvider> resource_provider( 1737 scoped_ptr<ResourceProvider> resource_provider(
1719 ResourceProvider::Create(output_surface.get(), 0)); 1738 ResourceProvider::Create(output_surface.get(), 0, false));
1720 1739
1721 id = resource_provider->CreateResource( 1740 id = resource_provider->CreateResource(
1722 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 1741 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
1723 resource_provider->AcquirePixelBuffer(id); 1742 resource_provider->AcquirePixelBuffer(id);
1724 1743
1725 EXPECT_CALL(*context, createTexture()).WillOnce(Return(texture_id)); 1744 EXPECT_CALL(*context, createTexture()).WillOnce(Return(texture_id));
1726 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); 1745 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2);
1727 EXPECT_CALL(*context, asyncTexImage2DCHROMIUM(_, _, _, 2, 2, _, _, _, _)) 1746 EXPECT_CALL(*context, asyncTexImage2DCHROMIUM(_, _, _, 2, 2, _, _, _, _))
1728 .Times(1); 1747 .Times(1);
1729 resource_provider->BeginSetPixels(id); 1748 resource_provider->BeginSetPixels(id);
1730 1749
1731 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(1); 1750 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(1);
1732 EXPECT_CALL(*context, waitAsyncTexImage2DCHROMIUM(GL_TEXTURE_2D)).Times(1); 1751 EXPECT_CALL(*context, waitAsyncTexImage2DCHROMIUM(GL_TEXTURE_2D)).Times(1);
(...skipping 12 matching lines...) Expand all
1745 scoped_ptr<AllocationTrackingContext3D> context_owned( 1764 scoped_ptr<AllocationTrackingContext3D> context_owned(
1746 new NiceMock<AllocationTrackingContext3D>); 1765 new NiceMock<AllocationTrackingContext3D>);
1747 AllocationTrackingContext3D* context = context_owned.get(); 1766 AllocationTrackingContext3D* context = context_owned.get();
1748 1767
1749 FakeOutputSurfaceClient output_surface_client; 1768 FakeOutputSurfaceClient output_surface_client;
1750 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( 1769 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d(
1751 context_owned.PassAs<TestWebGraphicsContext3D>())); 1770 context_owned.PassAs<TestWebGraphicsContext3D>()));
1752 CHECK(output_surface->BindToClient(&output_surface_client)); 1771 CHECK(output_surface->BindToClient(&output_surface_client));
1753 1772
1754 gfx::Size size(2, 2); 1773 gfx::Size size(2, 2);
1755 WGC3Denum format = GL_RGBA; 1774 ResourceFormat format = RGBA_8888;
1756 ResourceProvider::ResourceId id = 0; 1775 ResourceProvider::ResourceId id = 0;
1757 int texture_id = 123; 1776 int texture_id = 123;
1758 1777
1759 scoped_ptr<ResourceProvider> resource_provider( 1778 scoped_ptr<ResourceProvider> resource_provider(
1760 ResourceProvider::Create(output_surface.get(), 0)); 1779 ResourceProvider::Create(output_surface.get(), 0, false));
1761 1780
1762 EXPECT_CALL(*context, createTexture()).WillRepeatedly(Return(texture_id)); 1781 EXPECT_CALL(*context, createTexture()).WillRepeatedly(Return(texture_id));
1763 1782
1764 id = resource_provider->CreateResource( 1783 id = resource_provider->CreateResource(
1765 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 1784 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
1766 context->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB, 1785 context->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB,
1767 GL_INNOCENT_CONTEXT_RESET_ARB); 1786 GL_INNOCENT_CONTEXT_RESET_ARB);
1768 resource_provider->AcquirePixelBuffer(id); 1787 resource_provider->AcquirePixelBuffer(id);
1769 uint8_t* buffer = resource_provider->MapPixelBuffer(id); 1788 uint8_t* buffer = resource_provider->MapPixelBuffer(id);
1770 EXPECT_TRUE(buffer == NULL); 1789 EXPECT_TRUE(buffer == NULL);
1771 resource_provider->UnmapPixelBuffer(id); 1790 resource_provider->UnmapPixelBuffer(id);
1772 resource_provider->ReleasePixelBuffer(id); 1791 resource_provider->ReleasePixelBuffer(id);
1773 Mock::VerifyAndClearExpectations(context); 1792 Mock::VerifyAndClearExpectations(context);
1774 } 1793 }
1775 1794
1776 TEST_P(ResourceProviderTest, Image_GLTexture) { 1795 TEST_P(ResourceProviderTest, Image_GLTexture) {
1777 // Only for GL textures. 1796 // Only for GL textures.
1778 if (GetParam() != ResourceProvider::GLTexture) 1797 if (GetParam() != ResourceProvider::GLTexture)
1779 return; 1798 return;
1780 scoped_ptr<AllocationTrackingContext3D> context_owned( 1799 scoped_ptr<AllocationTrackingContext3D> context_owned(
1781 new StrictMock<AllocationTrackingContext3D>); 1800 new StrictMock<AllocationTrackingContext3D>);
1782 AllocationTrackingContext3D* context = context_owned.get(); 1801 AllocationTrackingContext3D* context = context_owned.get();
1783 1802
1784 FakeOutputSurfaceClient output_surface_client; 1803 FakeOutputSurfaceClient output_surface_client;
1785 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( 1804 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d(
1786 context_owned.PassAs<TestWebGraphicsContext3D>())); 1805 context_owned.PassAs<TestWebGraphicsContext3D>()));
1787 CHECK(output_surface->BindToClient(&output_surface_client)); 1806 CHECK(output_surface->BindToClient(&output_surface_client));
1788 1807
1789 const int kWidth = 2; 1808 const int kWidth = 2;
1790 const int kHeight = 2; 1809 const int kHeight = 2;
1791 gfx::Size size(kWidth, kHeight); 1810 gfx::Size size(kWidth, kHeight);
1792 WGC3Denum format = GL_RGBA; 1811 ResourceFormat format = RGBA_8888;
1793 ResourceProvider::ResourceId id = 0; 1812 ResourceProvider::ResourceId id = 0;
1794 const unsigned kTextureId = 123u; 1813 const unsigned kTextureId = 123u;
1795 const unsigned kImageId = 234u; 1814 const unsigned kImageId = 234u;
1796 1815
1797 scoped_ptr<ResourceProvider> resource_provider( 1816 scoped_ptr<ResourceProvider> resource_provider(
1798 ResourceProvider::Create(output_surface.get(), 0)); 1817 ResourceProvider::Create(output_surface.get(), 0, false));
1799 1818
1800 id = resource_provider->CreateResource( 1819 id = resource_provider->CreateResource(
1801 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 1820 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
1802 EXPECT_CALL(*context, createImageCHROMIUM(kWidth, kHeight, GL_RGBA8_OES)) 1821 EXPECT_CALL(*context, createImageCHROMIUM(kWidth, kHeight, GL_RGBA8_OES))
1803 .WillOnce(Return(kImageId)) 1822 .WillOnce(Return(kImageId))
1804 .RetiresOnSaturation(); 1823 .RetiresOnSaturation();
1805 resource_provider->AcquireImage(id); 1824 resource_provider->AcquireImage(id);
1806 1825
1807 void* dummy_mapped_buffer_address = NULL; 1826 void* dummy_mapped_buffer_address = NULL;
1808 EXPECT_CALL(*context, mapImageCHROMIUM(kImageId, GL_READ_WRITE)) 1827 EXPECT_CALL(*context, mapImageCHROMIUM(kImageId, GL_READ_WRITE))
1809 .WillOnce(Return(dummy_mapped_buffer_address)) 1828 .WillOnce(Return(dummy_mapped_buffer_address))
1810 .RetiresOnSaturation(); 1829 .RetiresOnSaturation();
1811 resource_provider->MapImage(id); 1830 resource_provider->MapImage(id);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1854 TEST_P(ResourceProviderTest, Image_Bitmap) { 1873 TEST_P(ResourceProviderTest, Image_Bitmap) {
1855 if (GetParam() != ResourceProvider::Bitmap) 1874 if (GetParam() != ResourceProvider::Bitmap)
1856 return; 1875 return;
1857 FakeOutputSurfaceClient output_surface_client; 1876 FakeOutputSurfaceClient output_surface_client;
1858 scoped_ptr<OutputSurface> output_surface( 1877 scoped_ptr<OutputSurface> output_surface(
1859 FakeOutputSurface::CreateSoftware(make_scoped_ptr( 1878 FakeOutputSurface::CreateSoftware(make_scoped_ptr(
1860 new SoftwareOutputDevice))); 1879 new SoftwareOutputDevice)));
1861 CHECK(output_surface->BindToClient(&output_surface_client)); 1880 CHECK(output_surface->BindToClient(&output_surface_client));
1862 1881
1863 gfx::Size size(1, 1); 1882 gfx::Size size(1, 1);
1864 WGC3Denum format = GL_RGBA; 1883 ResourceFormat format = RGBA_8888;
1865 ResourceProvider::ResourceId id = 0; 1884 ResourceProvider::ResourceId id = 0;
1866 const uint32_t kBadBeef = 0xbadbeef; 1885 const uint32_t kBadBeef = 0xbadbeef;
1867 1886
1868 scoped_ptr<ResourceProvider> resource_provider( 1887 scoped_ptr<ResourceProvider> resource_provider(
1869 ResourceProvider::Create(output_surface.get(), 0)); 1888 ResourceProvider::Create(output_surface.get(), 0, false));
1870 1889
1871 id = resource_provider->CreateResource( 1890 id = resource_provider->CreateResource(
1872 size, format, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny); 1891 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
1873 resource_provider->AcquireImage(id); 1892 resource_provider->AcquireImage(id);
1874 1893
1875 const int kStride = 0; 1894 const int kStride = 0;
1876 int stride = resource_provider->GetImageStride(id); 1895 int stride = resource_provider->GetImageStride(id);
1877 EXPECT_EQ(kStride, stride); 1896 EXPECT_EQ(kStride, stride);
1878 1897
1879 void* data = resource_provider->MapImage(id); 1898 void* data = resource_provider->MapImage(id);
1880 ASSERT_TRUE(!!data); 1899 ASSERT_TRUE(!!data);
1881 memcpy(data, &kBadBeef, sizeof(kBadBeef)); 1900 memcpy(data, &kBadBeef, sizeof(kBadBeef));
1882 resource_provider->UnmapImage(id); 1901 resource_provider->UnmapImage(id);
(...skipping 27 matching lines...) Expand all
1910 } 1929 }
1911 1930
1912 TEST(ResourceProviderTest, BasicInitializeGLSoftware) { 1931 TEST(ResourceProviderTest, BasicInitializeGLSoftware) {
1913 scoped_ptr<ContextSharedData> shared_data = ContextSharedData::Create(); 1932 scoped_ptr<ContextSharedData> shared_data = ContextSharedData::Create();
1914 FakeOutputSurfaceClient client; 1933 FakeOutputSurfaceClient client;
1915 scoped_ptr<FakeOutputSurface> output_surface( 1934 scoped_ptr<FakeOutputSurface> output_surface(
1916 FakeOutputSurface::CreateDeferredGL( 1935 FakeOutputSurface::CreateDeferredGL(
1917 scoped_ptr<SoftwareOutputDevice>(new SoftwareOutputDevice))); 1936 scoped_ptr<SoftwareOutputDevice>(new SoftwareOutputDevice)));
1918 EXPECT_TRUE(output_surface->BindToClient(&client)); 1937 EXPECT_TRUE(output_surface->BindToClient(&client));
1919 scoped_ptr<ResourceProvider> resource_provider( 1938 scoped_ptr<ResourceProvider> resource_provider(
1920 ResourceProvider::Create(output_surface.get(), 0)); 1939 ResourceProvider::Create(output_surface.get(), 0, false));
1921 1940
1922 CheckCreateResource(ResourceProvider::Bitmap, resource_provider.get(), NULL); 1941 CheckCreateResource(ResourceProvider::Bitmap, resource_provider.get(), NULL);
1923 1942
1924 InitializeGLAndCheck(shared_data.get(), 1943 InitializeGLAndCheck(shared_data.get(),
1925 resource_provider.get(), 1944 resource_provider.get(),
1926 output_surface.get()); 1945 output_surface.get());
1927 1946
1928 resource_provider->InitializeSoftware(); 1947 resource_provider->InitializeSoftware();
1929 output_surface->ReleaseGL(); 1948 output_surface->ReleaseGL();
1930 CheckCreateResource(ResourceProvider::Bitmap, resource_provider.get(), NULL); 1949 CheckCreateResource(ResourceProvider::Bitmap, resource_provider.get(), NULL);
1931 1950
1932 InitializeGLAndCheck(shared_data.get(), 1951 InitializeGLAndCheck(shared_data.get(),
1933 resource_provider.get(), 1952 resource_provider.get(),
1934 output_surface.get()); 1953 output_surface.get());
1935 } 1954 }
1936 1955
1937 INSTANTIATE_TEST_CASE_P( 1956 INSTANTIATE_TEST_CASE_P(
1938 ResourceProviderTests, 1957 ResourceProviderTests,
1939 ResourceProviderTest, 1958 ResourceProviderTest,
1940 ::testing::Values(ResourceProvider::GLTexture, ResourceProvider::Bitmap)); 1959 ::testing::Values(ResourceProvider::GLTexture, ResourceProvider::Bitmap));
1941 1960
1942 } // namespace 1961 } // namespace
1943 } // namespace cc 1962 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698