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

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

Issue 139013008: Implement support for rendering to 32-bit float textures on ES3 (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Make TexSubImage validation agree with TexImage validation Created 6 years, 10 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "gpu/command_buffer/service/error_state_mock.h" 5 #include "gpu/command_buffer/service/error_state_mock.h"
6 #include "gpu/command_buffer/service/framebuffer_manager.h" 6 #include "gpu/command_buffer/service/framebuffer_manager.h"
7 #include "gpu/command_buffer/service/feature_info.h" 7 #include "gpu/command_buffer/service/feature_info.h"
8 #include "gpu/command_buffer/service/renderbuffer_manager.h" 8 #include "gpu/command_buffer/service/renderbuffer_manager.h"
9 #include "gpu/command_buffer/service/test_helper.h" 9 #include "gpu/command_buffer/service/test_helper.h"
10 #include "gpu/command_buffer/service/texture_manager.h" 10 #include "gpu/command_buffer/service/texture_manager.h"
(...skipping 15 matching lines...) Expand all
26 } // namespace 26 } // namespace
27 27
28 class FramebufferManagerTest : public testing::Test { 28 class FramebufferManagerTest : public testing::Test {
29 public: 29 public:
30 FramebufferManagerTest() 30 FramebufferManagerTest()
31 : manager_(1, 1), 31 : manager_(1, 1),
32 texture_manager_( 32 texture_manager_(
33 NULL, new FeatureInfo(), kMaxTextureSize, kMaxCubemapSize), 33 NULL, new FeatureInfo(), kMaxTextureSize, kMaxCubemapSize),
34 renderbuffer_manager_(NULL, kMaxRenderbufferSize, kMaxSamples, 34 renderbuffer_manager_(NULL, kMaxRenderbufferSize, kMaxSamples,
35 kDepth24Supported) { 35 kDepth24Supported) {
36
37 } 36 }
38 virtual ~FramebufferManagerTest() { 37 virtual ~FramebufferManagerTest() {
39 manager_.Destroy(false); 38 manager_.Destroy(false);
40 texture_manager_.Destroy(false); 39 texture_manager_.Destroy(false);
41 renderbuffer_manager_.Destroy(false); 40 renderbuffer_manager_.Destroy(false);
42 } 41 }
43 42
44 protected: 43 protected:
45 virtual void SetUp() { 44 virtual void SetUp() {
46 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>()); 45 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 ASSERT_TRUE(framebuffer1 == NULL); 102 ASSERT_TRUE(framebuffer1 == NULL);
104 } 103 }
105 104
106 class FramebufferInfoTest : public testing::Test { 105 class FramebufferInfoTest : public testing::Test {
107 public: 106 public:
108 static const GLuint kClient1Id = 1; 107 static const GLuint kClient1Id = 1;
109 static const GLuint kService1Id = 11; 108 static const GLuint kService1Id = 11;
110 109
111 FramebufferInfoTest() 110 FramebufferInfoTest()
112 : manager_(1, 1), 111 : manager_(1, 1),
113 texture_manager_( 112 feature_info_(new FeatureInfo()),
114 NULL, new FeatureInfo(), kMaxTextureSize, kMaxCubemapSize),
115 renderbuffer_manager_(NULL, kMaxRenderbufferSize, kMaxSamples, 113 renderbuffer_manager_(NULL, kMaxRenderbufferSize, kMaxSamples,
116 kDepth24Supported) { 114 kDepth24Supported) {
115 texture_manager_.reset(new TextureManager(NULL, feature_info_.get(),
116 kMaxTextureSize, kMaxCubemapSize));
117 } 117 }
118 virtual ~FramebufferInfoTest() { 118 virtual ~FramebufferInfoTest() {
119 manager_.Destroy(false); 119 manager_.Destroy(false);
120 texture_manager_.Destroy(false); 120 texture_manager_->Destroy(false);
121 renderbuffer_manager_.Destroy(false); 121 renderbuffer_manager_.Destroy(false);
122 } 122 }
123 123
124 protected: 124 protected:
125 virtual void SetUp() { 125 virtual void SetUp() {
126 InitializeContext("", "");
127 }
128
129 void InitializeContext(const char* gl_version, const char* extensions) {
126 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>()); 130 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
127 ::gfx::MockGLInterface::SetGLInterface(gl_.get()); 131 ::gfx::MockGLInterface::SetGLInterface(gl_.get());
132 TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion(gl_.get(),
133 extensions, "", gl_version);
134 feature_info_->Initialize();
128 manager_.CreateFramebuffer(kClient1Id, kService1Id); 135 manager_.CreateFramebuffer(kClient1Id, kService1Id);
129 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); 136 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>());
130 framebuffer_ = manager_.GetFramebuffer(kClient1Id); 137 framebuffer_ = manager_.GetFramebuffer(kClient1Id);
131 ASSERT_TRUE(framebuffer_ != NULL); 138 ASSERT_TRUE(framebuffer_ != NULL);
132 } 139 }
133 140
134 virtual void TearDown() { 141 virtual void TearDown() {
135 ::gfx::MockGLInterface::SetGLInterface(NULL); 142 ::gfx::MockGLInterface::SetGLInterface(NULL);
136 gl_.reset(); 143 gl_.reset();
137 } 144 }
138 145
139 // Use StrictMock to make 100% sure we know how GL will be called. 146 // Use StrictMock to make 100% sure we know how GL will be called.
140 scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_; 147 scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
141 FramebufferManager manager_; 148 FramebufferManager manager_;
142 Framebuffer* framebuffer_; 149 Framebuffer* framebuffer_;
143 TextureManager texture_manager_; 150 scoped_refptr<FeatureInfo> feature_info_;
151 scoped_ptr<TextureManager> texture_manager_;
144 RenderbufferManager renderbuffer_manager_; 152 RenderbufferManager renderbuffer_manager_;
145 scoped_ptr<MockErrorState> error_state_; 153 scoped_ptr<MockErrorState> error_state_;
146 }; 154 };
147 155
148 // GCC requires these declarations, but MSVC requires they not be present 156 // GCC requires these declarations, but MSVC requires they not be present
149 #ifndef COMPILER_MSVC 157 #ifndef COMPILER_MSVC
150 const GLuint FramebufferInfoTest::kClient1Id; 158 const GLuint FramebufferInfoTest::kClient1Id;
151 const GLuint FramebufferInfoTest::kService1Id; 159 const GLuint FramebufferInfoTest::kService1Id;
152 #endif 160 #endif
153 161
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 269
262 renderbuffer_manager_.SetInfo( 270 renderbuffer_manager_.SetInfo(
263 renderbuffer2, kSamples2, kFormat2, kWidth2, kHeight2); 271 renderbuffer2, kSamples2, kFormat2, kWidth2, kHeight2);
264 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), 272 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
265 framebuffer_->IsPossiblyComplete()); 273 framebuffer_->IsPossiblyComplete());
266 EXPECT_FALSE(framebuffer_->IsCleared()); 274 EXPECT_FALSE(framebuffer_->IsCleared());
267 EXPECT_TRUE(framebuffer_->HasUnclearedAttachment(GL_DEPTH_ATTACHMENT)); 275 EXPECT_TRUE(framebuffer_->HasUnclearedAttachment(GL_DEPTH_ATTACHMENT));
268 276
269 // check marking them as cleared. 277 // check marking them as cleared.
270 manager_.MarkAttachmentsAsCleared( 278 manager_.MarkAttachmentsAsCleared(
271 framebuffer_, &renderbuffer_manager_, &texture_manager_); 279 framebuffer_, &renderbuffer_manager_, texture_manager_.get());
272 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_COLOR_ATTACHMENT0)); 280 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_COLOR_ATTACHMENT0));
273 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_DEPTH_ATTACHMENT)); 281 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_DEPTH_ATTACHMENT));
274 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), 282 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
275 framebuffer_->IsPossiblyComplete()); 283 framebuffer_->IsPossiblyComplete());
276 EXPECT_TRUE(framebuffer_->IsCleared()); 284 EXPECT_TRUE(framebuffer_->IsCleared());
277 285
278 // Check adding one that is already cleared. 286 // Check adding one that is already cleared.
279 renderbuffer_manager_.CreateRenderbuffer( 287 renderbuffer_manager_.CreateRenderbuffer(
280 kRenderbufferClient3Id, kRenderbufferService3Id); 288 kRenderbufferClient3Id, kRenderbufferService3Id);
281 Renderbuffer* renderbuffer3 = 289 Renderbuffer* renderbuffer3 =
(...skipping 30 matching lines...) Expand all
312 EXPECT_EQ(kWidth1, attachment->width()); 320 EXPECT_EQ(kWidth1, attachment->width());
313 EXPECT_EQ(kHeight1, attachment->height()); 321 EXPECT_EQ(kHeight1, attachment->height());
314 EXPECT_EQ(kSamples1, attachment->samples()); 322 EXPECT_EQ(kSamples1, attachment->samples());
315 EXPECT_EQ(kFormat1, attachment->internal_format()); 323 EXPECT_EQ(kFormat1, attachment->internal_format());
316 EXPECT_FALSE(attachment->cleared()); 324 EXPECT_FALSE(attachment->cleared());
317 325
318 EXPECT_TRUE(framebuffer_->HasUnclearedAttachment(GL_COLOR_ATTACHMENT0)); 326 EXPECT_TRUE(framebuffer_->HasUnclearedAttachment(GL_COLOR_ATTACHMENT0));
319 327
320 // Clear it. 328 // Clear it.
321 manager_.MarkAttachmentsAsCleared( 329 manager_.MarkAttachmentsAsCleared(
322 framebuffer_, &renderbuffer_manager_, &texture_manager_); 330 framebuffer_, &renderbuffer_manager_, texture_manager_.get());
323 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_COLOR_ATTACHMENT0)); 331 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_COLOR_ATTACHMENT0));
324 EXPECT_TRUE(framebuffer_->IsCleared()); 332 EXPECT_TRUE(framebuffer_->IsCleared());
325 333
326 // Check replacing an attachment 334 // Check replacing an attachment
327 renderbuffer_manager_.CreateRenderbuffer( 335 renderbuffer_manager_.CreateRenderbuffer(
328 kRenderbufferClient4Id, kRenderbufferService4Id); 336 kRenderbufferClient4Id, kRenderbufferService4Id);
329 Renderbuffer* renderbuffer4 = 337 Renderbuffer* renderbuffer4 =
330 renderbuffer_manager_.GetRenderbuffer(kRenderbufferClient4Id); 338 renderbuffer_manager_.GetRenderbuffer(kRenderbufferClient4Id);
331 ASSERT_TRUE(renderbuffer4 != NULL); 339 ASSERT_TRUE(renderbuffer4 != NULL);
332 renderbuffer_manager_.SetInfo( 340 renderbuffer_manager_.SetInfo(
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 const GLenum kFormat3 = GL_RGB565; 420 const GLenum kFormat3 = GL_RGB565;
413 const GLsizei kSamples3 = 0; 421 const GLsizei kSamples3 = 0;
414 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_COLOR_ATTACHMENT0)); 422 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_COLOR_ATTACHMENT0));
415 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_DEPTH_ATTACHMENT)); 423 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_DEPTH_ATTACHMENT));
416 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_STENCIL_ATTACHMENT)); 424 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_STENCIL_ATTACHMENT));
417 EXPECT_FALSE( 425 EXPECT_FALSE(
418 framebuffer_->HasUnclearedAttachment(GL_DEPTH_STENCIL_ATTACHMENT)); 426 framebuffer_->HasUnclearedAttachment(GL_DEPTH_STENCIL_ATTACHMENT));
419 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT), 427 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT),
420 framebuffer_->IsPossiblyComplete()); 428 framebuffer_->IsPossiblyComplete());
421 429
422 texture_manager_.CreateTexture(kTextureClient1Id, kTextureService1Id); 430 texture_manager_->CreateTexture(kTextureClient1Id, kTextureService1Id);
423 scoped_refptr<TextureRef> texture1( 431 scoped_refptr<TextureRef> texture1(
424 texture_manager_.GetTexture(kTextureClient1Id)); 432 texture_manager_->GetTexture(kTextureClient1Id));
425 ASSERT_TRUE(texture1.get() != NULL); 433 ASSERT_TRUE(texture1.get() != NULL);
426 434
427 // check adding one attachment 435 // check adding one attachment
428 framebuffer_->AttachTexture( 436 framebuffer_->AttachTexture(
429 GL_COLOR_ATTACHMENT0, texture1.get(), kTarget1, kLevel1, kSamples1); 437 GL_COLOR_ATTACHMENT0, texture1.get(), kTarget1, kLevel1, kSamples1);
430 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_COLOR_ATTACHMENT0)); 438 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_COLOR_ATTACHMENT0));
431 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT), 439 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT),
432 framebuffer_->IsPossiblyComplete()); 440 framebuffer_->IsPossiblyComplete());
433 EXPECT_TRUE(framebuffer_->IsCleared()); 441 EXPECT_TRUE(framebuffer_->IsCleared());
434 EXPECT_EQ(static_cast<GLenum>(0), framebuffer_->GetColorAttachmentFormat()); 442 EXPECT_EQ(static_cast<GLenum>(0), framebuffer_->GetColorAttachmentFormat());
435 443
436 // Try format that doesn't work with COLOR_ATTACHMENT0 444 // Try format that doesn't work with COLOR_ATTACHMENT0
437 texture_manager_.SetTarget(texture1.get(), GL_TEXTURE_2D); 445 texture_manager_->SetTarget(texture1.get(), GL_TEXTURE_2D);
438 texture_manager_.SetLevelInfo(texture1.get(), 446 texture_manager_->SetLevelInfo(texture1.get(),
439 GL_TEXTURE_2D, 447 GL_TEXTURE_2D,
440 kLevel1, 448 kLevel1,
441 kBadFormat1, 449 kBadFormat1,
442 kWidth1, 450 kWidth1,
443 kHeight1, 451 kHeight1,
444 kDepth, 452 kDepth,
445 kBorder, 453 kBorder,
446 kBadFormat1, 454 kBadFormat1,
447 kType, 455 kType,
448 true); 456 true);
449 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT), 457 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT),
450 framebuffer_->IsPossiblyComplete()); 458 framebuffer_->IsPossiblyComplete());
451 459
452 // Try a good format. 460 // Try a good format.
453 texture_manager_.SetLevelInfo(texture1.get(), 461 texture_manager_->SetLevelInfo(texture1.get(),
454 GL_TEXTURE_2D, 462 GL_TEXTURE_2D,
455 kLevel1, 463 kLevel1,
456 kFormat1, 464 kFormat1,
457 kWidth1, 465 kWidth1,
458 kHeight1, 466 kHeight1,
459 kDepth, 467 kDepth,
460 kBorder, 468 kBorder,
461 kFormat1, 469 kFormat1,
462 kType, 470 kType,
463 false); 471 false);
464 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), 472 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
465 framebuffer_->IsPossiblyComplete()); 473 framebuffer_->IsPossiblyComplete());
466 EXPECT_FALSE(framebuffer_->IsCleared()); 474 EXPECT_FALSE(framebuffer_->IsCleared());
467 texture_manager_.SetLevelInfo(texture1.get(), 475 texture_manager_->SetLevelInfo(texture1.get(),
468 GL_TEXTURE_2D, 476 GL_TEXTURE_2D,
469 kLevel1, 477 kLevel1,
470 kFormat1, 478 kFormat1,
471 kWidth1, 479 kWidth1,
472 kHeight1, 480 kHeight1,
473 kDepth, 481 kDepth,
474 kBorder, 482 kBorder,
475 kFormat1, 483 kFormat1,
476 kType, 484 kType,
477 true); 485 true);
478 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), 486 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
479 framebuffer_->IsPossiblyComplete()); 487 framebuffer_->IsPossiblyComplete());
480 EXPECT_TRUE(framebuffer_->IsCleared()); 488 EXPECT_TRUE(framebuffer_->IsCleared());
481 EXPECT_EQ(static_cast<GLenum>(kFormat1), 489 EXPECT_EQ(static_cast<GLenum>(kFormat1),
482 framebuffer_->GetColorAttachmentFormat()); 490 framebuffer_->GetColorAttachmentFormat());
483 491
484 const Framebuffer::Attachment* attachment = 492 const Framebuffer::Attachment* attachment =
485 framebuffer_->GetAttachment(GL_COLOR_ATTACHMENT0); 493 framebuffer_->GetAttachment(GL_COLOR_ATTACHMENT0);
486 ASSERT_TRUE(attachment != NULL); 494 ASSERT_TRUE(attachment != NULL);
487 EXPECT_EQ(kWidth1, attachment->width()); 495 EXPECT_EQ(kWidth1, attachment->width());
488 EXPECT_EQ(kHeight1, attachment->height()); 496 EXPECT_EQ(kHeight1, attachment->height());
489 EXPECT_EQ(kSamples1, attachment->samples()); 497 EXPECT_EQ(kSamples1, attachment->samples());
490 EXPECT_EQ(kFormat1, attachment->internal_format()); 498 EXPECT_EQ(kFormat1, attachment->internal_format());
491 EXPECT_TRUE(attachment->cleared()); 499 EXPECT_TRUE(attachment->cleared());
492 500
493 // Check replacing an attachment 501 // Check replacing an attachment
494 texture_manager_.CreateTexture(kTextureClient2Id, kTextureService2Id); 502 texture_manager_->CreateTexture(kTextureClient2Id, kTextureService2Id);
495 scoped_refptr<TextureRef> texture2( 503 scoped_refptr<TextureRef> texture2(
496 texture_manager_.GetTexture(kTextureClient2Id)); 504 texture_manager_->GetTexture(kTextureClient2Id));
497 ASSERT_TRUE(texture2.get() != NULL); 505 ASSERT_TRUE(texture2.get() != NULL);
498 texture_manager_.SetTarget(texture2.get(), GL_TEXTURE_2D); 506 texture_manager_->SetTarget(texture2.get(), GL_TEXTURE_2D);
499 texture_manager_.SetLevelInfo(texture2.get(), 507 texture_manager_->SetLevelInfo(texture2.get(),
500 GL_TEXTURE_2D, 508 GL_TEXTURE_2D,
501 kLevel2, 509 kLevel2,
502 kFormat2, 510 kFormat2,
503 kWidth2, 511 kWidth2,
504 kHeight2, 512 kHeight2,
505 kDepth, 513 kDepth,
506 kBorder, 514 kBorder,
507 kFormat2, 515 kFormat2,
508 kType, 516 kType,
509 true); 517 true);
510 518
511 framebuffer_->AttachTexture( 519 framebuffer_->AttachTexture(
512 GL_COLOR_ATTACHMENT0, texture2.get(), kTarget2, kLevel2, kSamples2); 520 GL_COLOR_ATTACHMENT0, texture2.get(), kTarget2, kLevel2, kSamples2);
513 EXPECT_EQ(static_cast<GLenum>(kFormat2), 521 EXPECT_EQ(static_cast<GLenum>(kFormat2),
514 framebuffer_->GetColorAttachmentFormat()); 522 framebuffer_->GetColorAttachmentFormat());
515 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), 523 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
516 framebuffer_->IsPossiblyComplete()); 524 framebuffer_->IsPossiblyComplete());
517 EXPECT_TRUE(framebuffer_->IsCleared()); 525 EXPECT_TRUE(framebuffer_->IsCleared());
518 526
519 attachment = framebuffer_->GetAttachment(GL_COLOR_ATTACHMENT0); 527 attachment = framebuffer_->GetAttachment(GL_COLOR_ATTACHMENT0);
520 ASSERT_TRUE(attachment != NULL); 528 ASSERT_TRUE(attachment != NULL);
521 EXPECT_EQ(kWidth2, attachment->width()); 529 EXPECT_EQ(kWidth2, attachment->width());
522 EXPECT_EQ(kHeight2, attachment->height()); 530 EXPECT_EQ(kHeight2, attachment->height());
523 EXPECT_EQ(kSamples2, attachment->samples()); 531 EXPECT_EQ(kSamples2, attachment->samples());
524 EXPECT_EQ(kFormat2, attachment->internal_format()); 532 EXPECT_EQ(kFormat2, attachment->internal_format());
525 EXPECT_TRUE(attachment->cleared()); 533 EXPECT_TRUE(attachment->cleared());
526 534
527 // Check changing attachment 535 // Check changing attachment
528 texture_manager_.SetLevelInfo(texture2.get(), 536 texture_manager_->SetLevelInfo(texture2.get(),
529 GL_TEXTURE_2D, 537 GL_TEXTURE_2D,
530 kLevel3, 538 kLevel3,
531 kFormat3, 539 kFormat3,
532 kWidth3, 540 kWidth3,
533 kHeight3, 541 kHeight3,
534 kDepth, 542 kDepth,
535 kBorder, 543 kBorder,
536 kFormat3, 544 kFormat3,
537 kType, 545 kType,
538 false); 546 false);
539 attachment = framebuffer_->GetAttachment(GL_COLOR_ATTACHMENT0); 547 attachment = framebuffer_->GetAttachment(GL_COLOR_ATTACHMENT0);
540 ASSERT_TRUE(attachment != NULL); 548 ASSERT_TRUE(attachment != NULL);
541 EXPECT_EQ(kWidth3, attachment->width()); 549 EXPECT_EQ(kWidth3, attachment->width());
542 EXPECT_EQ(kHeight3, attachment->height()); 550 EXPECT_EQ(kHeight3, attachment->height());
543 EXPECT_EQ(kSamples3, attachment->samples()); 551 EXPECT_EQ(kSamples3, attachment->samples());
544 EXPECT_EQ(kFormat3, attachment->internal_format()); 552 EXPECT_EQ(kFormat3, attachment->internal_format());
545 EXPECT_FALSE(attachment->cleared()); 553 EXPECT_FALSE(attachment->cleared());
546 EXPECT_EQ(static_cast<GLenum>(kFormat3), 554 EXPECT_EQ(static_cast<GLenum>(kFormat3),
547 framebuffer_->GetColorAttachmentFormat()); 555 framebuffer_->GetColorAttachmentFormat());
548 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), 556 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
549 framebuffer_->IsPossiblyComplete()); 557 framebuffer_->IsPossiblyComplete());
550 EXPECT_FALSE(framebuffer_->IsCleared()); 558 EXPECT_FALSE(framebuffer_->IsCleared());
551 559
552 // Set to size 0 560 // Set to size 0
553 texture_manager_.SetLevelInfo(texture2.get(), 561 texture_manager_->SetLevelInfo(texture2.get(),
554 GL_TEXTURE_2D, 562 GL_TEXTURE_2D,
555 kLevel3, 563 kLevel3,
556 kFormat3, 564 kFormat3,
557 0, 565 0,
558 0, 566 0,
559 kDepth, 567 kDepth,
560 kBorder, 568 kBorder,
561 kFormat3, 569 kFormat3,
562 kType, 570 kType,
563 false); 571 false);
564 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT), 572 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT),
565 framebuffer_->IsPossiblyComplete()); 573 framebuffer_->IsPossiblyComplete());
566 574
567 // Check removing it. 575 // Check removing it.
568 framebuffer_->AttachTexture(GL_COLOR_ATTACHMENT0, NULL, 0, 0, 0); 576 framebuffer_->AttachTexture(GL_COLOR_ATTACHMENT0, NULL, 0, 0, 0);
569 EXPECT_TRUE(framebuffer_->GetAttachment(GL_COLOR_ATTACHMENT0) == NULL); 577 EXPECT_TRUE(framebuffer_->GetAttachment(GL_COLOR_ATTACHMENT0) == NULL);
570 EXPECT_EQ(static_cast<GLenum>(0), framebuffer_->GetColorAttachmentFormat()); 578 EXPECT_EQ(static_cast<GLenum>(0), framebuffer_->GetColorAttachmentFormat());
571 579
572 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT), 580 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT),
573 framebuffer_->IsPossiblyComplete()); 581 framebuffer_->IsPossiblyComplete());
574 EXPECT_TRUE(framebuffer_->IsCleared()); 582 EXPECT_TRUE(framebuffer_->IsCleared());
575 } 583 }
576 584
585 class FramebufferInfoFloatTest : public FramebufferInfoTest {
586 public:
587 FramebufferInfoFloatTest()
588 : FramebufferInfoTest() {
589 }
590 virtual ~FramebufferInfoFloatTest() {
591 }
592
593 protected:
594 virtual void SetUp() {
595 InitializeContext("OpenGL ES 3.0",
596 "GL_OES_texture_float GL_EXT_color_buffer_float");
597 }
598 };
599
600 TEST_F(FramebufferInfoFloatTest, AttachFloatTexture) {
601 const GLuint kTextureClientId = 33;
602 const GLuint kTextureServiceId = 333;
603 const GLint kDepth = 1;
604 const GLint kBorder = 0;
605 const GLenum kType = GL_FLOAT;
606 const GLsizei kWidth = 16;
607 const GLsizei kHeight = 32;
608 const GLint kLevel = 0;
609 const GLenum kFormat = GL_RGBA;
610 const GLenum kInternalFormat = GL_RGBA32F;
611 const GLenum kTarget = GL_TEXTURE_2D;
612 const GLsizei kSamples = 0;
613 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_COLOR_ATTACHMENT0));
614 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_DEPTH_ATTACHMENT));
615 EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_STENCIL_ATTACHMENT));
616
617 texture_manager_->CreateTexture(kTextureClientId, kTextureServiceId);
618 scoped_refptr<TextureRef> texture(
619 texture_manager_->GetTexture(kTextureClientId));
620 ASSERT_TRUE(texture.get() != NULL);
621
622 framebuffer_->AttachTexture(
623 GL_COLOR_ATTACHMENT0, texture.get(), kTarget, kLevel, kSamples);
624 EXPECT_EQ(static_cast<GLenum>(0), framebuffer_->GetColorAttachmentFormat());
625
626 texture_manager_->SetTarget(texture.get(), GL_TEXTURE_2D);
627 texture_manager_->SetLevelInfo(texture.get(),
628 GL_TEXTURE_2D,
629 kLevel,
630 kInternalFormat,
631 kWidth,
632 kHeight,
633 kDepth,
634 kBorder,
635 kFormat,
636 kType,
637 false);
638 // Texture with a sized float internalformat is allowed as an attachment
639 // since float color attachment extension is present.
640 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
641 framebuffer_->IsPossiblyComplete());
642 }
643
577 TEST_F(FramebufferInfoTest, UnbindRenderbuffer) { 644 TEST_F(FramebufferInfoTest, UnbindRenderbuffer) {
578 const GLuint kRenderbufferClient1Id = 33; 645 const GLuint kRenderbufferClient1Id = 33;
579 const GLuint kRenderbufferService1Id = 333; 646 const GLuint kRenderbufferService1Id = 333;
580 const GLuint kRenderbufferClient2Id = 34; 647 const GLuint kRenderbufferClient2Id = 34;
581 const GLuint kRenderbufferService2Id = 334; 648 const GLuint kRenderbufferService2Id = 334;
582 649
583 renderbuffer_manager_.CreateRenderbuffer( 650 renderbuffer_manager_.CreateRenderbuffer(
584 kRenderbufferClient1Id, kRenderbufferService1Id); 651 kRenderbufferClient1Id, kRenderbufferService1Id);
585 Renderbuffer* renderbuffer1 = 652 Renderbuffer* renderbuffer1 =
586 renderbuffer_manager_.GetRenderbuffer(kRenderbufferClient1Id); 653 renderbuffer_manager_.GetRenderbuffer(kRenderbufferClient1Id);
(...skipping 24 matching lines...) Expand all
611 678
612 TEST_F(FramebufferInfoTest, UnbindTexture) { 679 TEST_F(FramebufferInfoTest, UnbindTexture) {
613 const GLuint kTextureClient1Id = 33; 680 const GLuint kTextureClient1Id = 33;
614 const GLuint kTextureService1Id = 333; 681 const GLuint kTextureService1Id = 333;
615 const GLuint kTextureClient2Id = 34; 682 const GLuint kTextureClient2Id = 34;
616 const GLuint kTextureService2Id = 334; 683 const GLuint kTextureService2Id = 334;
617 const GLenum kTarget1 = GL_TEXTURE_2D; 684 const GLenum kTarget1 = GL_TEXTURE_2D;
618 const GLint kLevel1 = 0; 685 const GLint kLevel1 = 0;
619 const GLint kSamples1 = 0; 686 const GLint kSamples1 = 0;
620 687
621 texture_manager_.CreateTexture(kTextureClient1Id, kTextureService1Id); 688 texture_manager_->CreateTexture(kTextureClient1Id, kTextureService1Id);
622 scoped_refptr<TextureRef> texture1( 689 scoped_refptr<TextureRef> texture1(
623 texture_manager_.GetTexture(kTextureClient1Id)); 690 texture_manager_->GetTexture(kTextureClient1Id));
624 ASSERT_TRUE(texture1.get() != NULL); 691 ASSERT_TRUE(texture1.get() != NULL);
625 texture_manager_.CreateTexture(kTextureClient2Id, kTextureService2Id); 692 texture_manager_->CreateTexture(kTextureClient2Id, kTextureService2Id);
626 scoped_refptr<TextureRef> texture2( 693 scoped_refptr<TextureRef> texture2(
627 texture_manager_.GetTexture(kTextureClient2Id)); 694 texture_manager_->GetTexture(kTextureClient2Id));
628 ASSERT_TRUE(texture2.get() != NULL); 695 ASSERT_TRUE(texture2.get() != NULL);
629 696
630 // Attach to 2 attachment points. 697 // Attach to 2 attachment points.
631 framebuffer_->AttachTexture( 698 framebuffer_->AttachTexture(
632 GL_COLOR_ATTACHMENT0, texture1.get(), kTarget1, kLevel1, kSamples1); 699 GL_COLOR_ATTACHMENT0, texture1.get(), kTarget1, kLevel1, kSamples1);
633 framebuffer_->AttachTexture( 700 framebuffer_->AttachTexture(
634 GL_DEPTH_ATTACHMENT, texture1.get(), kTarget1, kLevel1, kSamples1); 701 GL_DEPTH_ATTACHMENT, texture1.get(), kTarget1, kLevel1, kSamples1);
635 // Check they were attached. 702 // Check they were attached.
636 EXPECT_TRUE(framebuffer_->GetAttachment(GL_COLOR_ATTACHMENT0) != NULL); 703 EXPECT_TRUE(framebuffer_->GetAttachment(GL_COLOR_ATTACHMENT0) != NULL);
637 EXPECT_TRUE(framebuffer_->GetAttachment(GL_DEPTH_ATTACHMENT) != NULL); 704 EXPECT_TRUE(framebuffer_->GetAttachment(GL_DEPTH_ATTACHMENT) != NULL);
(...skipping 16 matching lines...) Expand all
654 const GLuint kTextureService2Id = 334; 721 const GLuint kTextureService2Id = 334;
655 const GLenum kTarget1 = GL_TEXTURE_2D; 722 const GLenum kTarget1 = GL_TEXTURE_2D;
656 const GLint kLevel1 = 0; 723 const GLint kLevel1 = 0;
657 const GLint kSamples1 = 0; 724 const GLint kSamples1 = 0;
658 725
659 renderbuffer_manager_.CreateRenderbuffer( 726 renderbuffer_manager_.CreateRenderbuffer(
660 kRenderbufferClient1Id, kRenderbufferService1Id); 727 kRenderbufferClient1Id, kRenderbufferService1Id);
661 Renderbuffer* renderbuffer1 = 728 Renderbuffer* renderbuffer1 =
662 renderbuffer_manager_.GetRenderbuffer(kRenderbufferClient1Id); 729 renderbuffer_manager_.GetRenderbuffer(kRenderbufferClient1Id);
663 ASSERT_TRUE(renderbuffer1 != NULL); 730 ASSERT_TRUE(renderbuffer1 != NULL);
664 texture_manager_.CreateTexture(kTextureClient2Id, kTextureService2Id); 731 texture_manager_->CreateTexture(kTextureClient2Id, kTextureService2Id);
665 scoped_refptr<TextureRef> texture2( 732 scoped_refptr<TextureRef> texture2(
666 texture_manager_.GetTexture(kTextureClient2Id)); 733 texture_manager_->GetTexture(kTextureClient2Id));
667 ASSERT_TRUE(texture2.get() != NULL); 734 ASSERT_TRUE(texture2.get() != NULL);
668 735
669 // Check MarkAsComlete marks as complete. 736 // Check MarkAsComlete marks as complete.
670 manager_.MarkAsComplete(framebuffer_); 737 manager_.MarkAsComplete(framebuffer_);
671 EXPECT_TRUE(manager_.IsComplete(framebuffer_)); 738 EXPECT_TRUE(manager_.IsComplete(framebuffer_));
672 739
673 // Check at attaching marks as not complete. 740 // Check at attaching marks as not complete.
674 framebuffer_->AttachTexture( 741 framebuffer_->AttachTexture(
675 GL_COLOR_ATTACHMENT0, texture2.get(), kTarget1, kLevel1, kSamples1); 742 GL_COLOR_ATTACHMENT0, texture2.get(), kTarget1, kLevel1, kSamples1);
676 EXPECT_FALSE(manager_.IsComplete(framebuffer_)); 743 EXPECT_FALSE(manager_.IsComplete(framebuffer_));
677 manager_.MarkAsComplete(framebuffer_); 744 manager_.MarkAsComplete(framebuffer_);
678 EXPECT_TRUE(manager_.IsComplete(framebuffer_)); 745 EXPECT_TRUE(manager_.IsComplete(framebuffer_));
679 framebuffer_->AttachRenderbuffer(GL_DEPTH_ATTACHMENT, renderbuffer1); 746 framebuffer_->AttachRenderbuffer(GL_DEPTH_ATTACHMENT, renderbuffer1);
680 EXPECT_FALSE(manager_.IsComplete(framebuffer_)); 747 EXPECT_FALSE(manager_.IsComplete(framebuffer_));
681 748
682 // Check MarkAttachmentsAsCleared marks as complete. 749 // Check MarkAttachmentsAsCleared marks as complete.
683 manager_.MarkAttachmentsAsCleared( 750 manager_.MarkAttachmentsAsCleared(
684 framebuffer_, &renderbuffer_manager_, &texture_manager_); 751 framebuffer_, &renderbuffer_manager_, texture_manager_.get());
685 EXPECT_TRUE(manager_.IsComplete(framebuffer_)); 752 EXPECT_TRUE(manager_.IsComplete(framebuffer_));
686 753
687 // Check Unbind marks as not complete. 754 // Check Unbind marks as not complete.
688 framebuffer_->UnbindRenderbuffer(GL_RENDERBUFFER, renderbuffer1); 755 framebuffer_->UnbindRenderbuffer(GL_RENDERBUFFER, renderbuffer1);
689 EXPECT_FALSE(manager_.IsComplete(framebuffer_)); 756 EXPECT_FALSE(manager_.IsComplete(framebuffer_));
690 manager_.MarkAsComplete(framebuffer_); 757 manager_.MarkAsComplete(framebuffer_);
691 EXPECT_TRUE(manager_.IsComplete(framebuffer_)); 758 EXPECT_TRUE(manager_.IsComplete(framebuffer_));
692 framebuffer_->UnbindTexture(kTarget1, texture2.get()); 759 framebuffer_->UnbindTexture(kTarget1, texture2.get());
693 EXPECT_FALSE(manager_.IsComplete(framebuffer_)); 760 EXPECT_FALSE(manager_.IsComplete(framebuffer_));
694 } 761 }
695 762
696 TEST_F(FramebufferInfoTest, GetStatus) { 763 TEST_F(FramebufferInfoTest, GetStatus) {
697 const GLuint kRenderbufferClient1Id = 33; 764 const GLuint kRenderbufferClient1Id = 33;
698 const GLuint kRenderbufferService1Id = 333; 765 const GLuint kRenderbufferService1Id = 333;
699 const GLuint kTextureClient2Id = 34; 766 const GLuint kTextureClient2Id = 34;
700 const GLuint kTextureService2Id = 334; 767 const GLuint kTextureService2Id = 334;
701 const GLenum kTarget1 = GL_TEXTURE_2D; 768 const GLenum kTarget1 = GL_TEXTURE_2D;
702 const GLint kLevel1 = 0; 769 const GLint kLevel1 = 0;
703 const GLint kSamples1 = 0; 770 const GLint kSamples1 = 0;
704 771
705 renderbuffer_manager_.CreateRenderbuffer( 772 renderbuffer_manager_.CreateRenderbuffer(
706 kRenderbufferClient1Id, kRenderbufferService1Id); 773 kRenderbufferClient1Id, kRenderbufferService1Id);
707 Renderbuffer* renderbuffer1 = 774 Renderbuffer* renderbuffer1 =
708 renderbuffer_manager_.GetRenderbuffer(kRenderbufferClient1Id); 775 renderbuffer_manager_.GetRenderbuffer(kRenderbufferClient1Id);
709 ASSERT_TRUE(renderbuffer1 != NULL); 776 ASSERT_TRUE(renderbuffer1 != NULL);
710 texture_manager_.CreateTexture(kTextureClient2Id, kTextureService2Id); 777 texture_manager_->CreateTexture(kTextureClient2Id, kTextureService2Id);
711 scoped_refptr<TextureRef> texture2( 778 scoped_refptr<TextureRef> texture2(
712 texture_manager_.GetTexture(kTextureClient2Id)); 779 texture_manager_->GetTexture(kTextureClient2Id));
713 ASSERT_TRUE(texture2.get() != NULL); 780 ASSERT_TRUE(texture2.get() != NULL);
714 texture_manager_.SetTarget(texture2.get(), GL_TEXTURE_2D); 781 texture_manager_->SetTarget(texture2.get(), GL_TEXTURE_2D);
715 782
716 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) 783 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER))
717 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) 784 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE))
718 .RetiresOnSaturation(); 785 .RetiresOnSaturation();
719 framebuffer_->GetStatus(&texture_manager_, GL_FRAMEBUFFER); 786 framebuffer_->GetStatus(texture_manager_.get(), GL_FRAMEBUFFER);
720 787
721 // Check a second call for the same type does not call anything 788 // Check a second call for the same type does not call anything
722 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) { 789 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) {
723 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) 790 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER))
724 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) 791 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE))
725 .RetiresOnSaturation(); 792 .RetiresOnSaturation();
726 } 793 }
727 framebuffer_->GetStatus(&texture_manager_, GL_FRAMEBUFFER); 794 framebuffer_->GetStatus(texture_manager_.get(), GL_FRAMEBUFFER);
728 795
729 // Check changing the attachments calls CheckFramebufferStatus. 796 // Check changing the attachments calls CheckFramebufferStatus.
730 framebuffer_->AttachTexture( 797 framebuffer_->AttachTexture(
731 GL_COLOR_ATTACHMENT0, texture2.get(), kTarget1, kLevel1, kSamples1); 798 GL_COLOR_ATTACHMENT0, texture2.get(), kTarget1, kLevel1, kSamples1);
732 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) 799 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER))
733 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)).RetiresOnSaturation(); 800 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)).RetiresOnSaturation();
734 framebuffer_->GetStatus(&texture_manager_, GL_FRAMEBUFFER); 801 framebuffer_->GetStatus(texture_manager_.get(), GL_FRAMEBUFFER);
735 802
736 // Check a second call for the same type does not call anything. 803 // Check a second call for the same type does not call anything.
737 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) { 804 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) {
738 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) 805 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER))
739 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) 806 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE))
740 .RetiresOnSaturation(); 807 .RetiresOnSaturation();
741 } 808 }
742 framebuffer_->GetStatus(&texture_manager_, GL_FRAMEBUFFER); 809 framebuffer_->GetStatus(texture_manager_.get(), GL_FRAMEBUFFER);
743 810
744 // Check a second call with a different target calls CheckFramebufferStatus. 811 // Check a second call with a different target calls CheckFramebufferStatus.
745 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) 812 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER))
746 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) 813 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE))
747 .RetiresOnSaturation(); 814 .RetiresOnSaturation();
748 framebuffer_->GetStatus(&texture_manager_, GL_READ_FRAMEBUFFER); 815 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER);
749 816
750 // Check a second call for the same type does not call anything. 817 // Check a second call for the same type does not call anything.
751 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) { 818 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) {
752 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) 819 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER))
753 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) 820 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE))
754 .RetiresOnSaturation(); 821 .RetiresOnSaturation();
755 } 822 }
756 framebuffer_->GetStatus(&texture_manager_, GL_READ_FRAMEBUFFER); 823 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER);
757 824
758 // Check adding another attachment calls CheckFramebufferStatus. 825 // Check adding another attachment calls CheckFramebufferStatus.
759 framebuffer_->AttachRenderbuffer(GL_DEPTH_ATTACHMENT, renderbuffer1); 826 framebuffer_->AttachRenderbuffer(GL_DEPTH_ATTACHMENT, renderbuffer1);
760 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) 827 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER))
761 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) 828 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE))
762 .RetiresOnSaturation(); 829 .RetiresOnSaturation();
763 framebuffer_->GetStatus(&texture_manager_, GL_READ_FRAMEBUFFER); 830 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER);
764 831
765 // Check a second call for the same type does not call anything. 832 // Check a second call for the same type does not call anything.
766 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) { 833 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) {
767 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) 834 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER))
768 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) 835 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE))
769 .RetiresOnSaturation(); 836 .RetiresOnSaturation();
770 } 837 }
771 framebuffer_->GetStatus(&texture_manager_, GL_READ_FRAMEBUFFER); 838 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER);
772 839
773 // Check changing the format calls CheckFramebuffferStatus. 840 // Check changing the format calls CheckFramebuffferStatus.
774 TestHelper::SetTexParameterWithExpectations(gl_.get(), 841 TestHelper::SetTexParameterWithExpectations(gl_.get(),
775 error_state_.get(), 842 error_state_.get(),
776 &texture_manager_, 843 texture_manager_.get(),
777 texture2.get(), 844 texture2.get(),
778 GL_TEXTURE_WRAP_S, 845 GL_TEXTURE_WRAP_S,
779 GL_CLAMP_TO_EDGE, 846 GL_CLAMP_TO_EDGE,
780 GL_NO_ERROR); 847 GL_NO_ERROR);
781 848
782 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) 849 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER))
783 .WillOnce(Return(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT)) 850 .WillOnce(Return(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT))
784 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) 851 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE))
785 .RetiresOnSaturation(); 852 .RetiresOnSaturation();
786 framebuffer_->GetStatus(&texture_manager_, GL_READ_FRAMEBUFFER); 853 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER);
787 854
788 // Check since it did not return FRAMEBUFFER_COMPLETE that it calls 855 // Check since it did not return FRAMEBUFFER_COMPLETE that it calls
789 // CheckFramebufferStatus 856 // CheckFramebufferStatus
790 framebuffer_->GetStatus(&texture_manager_, GL_READ_FRAMEBUFFER); 857 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER);
791 858
792 // Check putting it back does not call CheckFramebufferStatus. 859 // Check putting it back does not call CheckFramebufferStatus.
793 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) { 860 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) {
794 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) 861 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER))
795 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) 862 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE))
796 .RetiresOnSaturation(); 863 .RetiresOnSaturation();
797 } 864 }
798 TestHelper::SetTexParameterWithExpectations(gl_.get(), 865 TestHelper::SetTexParameterWithExpectations(gl_.get(),
799 error_state_.get(), 866 error_state_.get(),
800 &texture_manager_, 867 texture_manager_.get(),
801 texture2.get(), 868 texture2.get(),
802 GL_TEXTURE_WRAP_S, 869 GL_TEXTURE_WRAP_S,
803 GL_REPEAT, 870 GL_REPEAT,
804 GL_NO_ERROR); 871 GL_NO_ERROR);
805 framebuffer_->GetStatus(&texture_manager_, GL_READ_FRAMEBUFFER); 872 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER);
806 873
807 // Check Unbinding does not call CheckFramebufferStatus 874 // Check Unbinding does not call CheckFramebufferStatus
808 framebuffer_->UnbindRenderbuffer(GL_RENDERBUFFER, renderbuffer1); 875 framebuffer_->UnbindRenderbuffer(GL_RENDERBUFFER, renderbuffer1);
809 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) { 876 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) {
810 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) 877 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER))
811 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) 878 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE))
812 .RetiresOnSaturation(); 879 .RetiresOnSaturation();
813 } 880 }
814 framebuffer_->GetStatus(&texture_manager_, GL_READ_FRAMEBUFFER); 881 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER);
815 } 882 }
816 883
817 } // namespace gles2 884 } // namespace gles2
818 } // namespace gpu 885 } // namespace gpu
819 886
820 887
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698