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

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

Issue 2159183002: Attaching an image to many color attachment points is unsupported (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove webgl2 condition Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gpu/command_buffer/service/framebuffer_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include "gpu/command_buffer/service/error_state_mock.h" 8 #include "gpu/command_buffer/service/error_state_mock.h"
9 #include "gpu/command_buffer/service/feature_info.h" 9 #include "gpu/command_buffer/service/feature_info.h"
10 #include "gpu/command_buffer/service/framebuffer_manager.h" 10 #include "gpu/command_buffer/service/framebuffer_manager.h"
(...skipping 1476 matching lines...) Expand 10 before | Expand all | Expand 10 after
1487 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); 1487 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER);
1488 1488
1489 // Check Unbinding does not call CheckFramebufferStatus 1489 // Check Unbinding does not call CheckFramebufferStatus
1490 framebuffer_->UnbindRenderbuffer(GL_RENDERBUFFER, renderbuffer1); 1490 framebuffer_->UnbindRenderbuffer(GL_RENDERBUFFER, renderbuffer1);
1491 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); 1491 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER);
1492 } 1492 }
1493 1493
1494 class FramebufferInfoES3Test : public FramebufferInfoTestBase { 1494 class FramebufferInfoES3Test : public FramebufferInfoTestBase {
1495 public: 1495 public:
1496 FramebufferInfoES3Test() : FramebufferInfoTestBase(CONTEXT_TYPE_WEBGL2) {} 1496 FramebufferInfoES3Test() : FramebufferInfoTestBase(CONTEXT_TYPE_WEBGL2) {}
1497
1498 protected:
1499 void SetUp() override {
1500 InitializeContext("OpenGL ES 3.0", "");
1501 }
1502
1503 void InitializeContext(const char* gl_version, const char* extensions) {
1504 GpuServiceTest::SetUpWithGLVersion(gl_version, extensions);
1505 TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion(gl_.get(),
1506 extensions, "", gl_version);
1507 feature_info_->InitializeForTesting(CONTEXT_TYPE_OPENGLES3);
qiankun 2016/07/20 15:03:26 Is it Ok for you to test GLES3 context now? I may
Zhenyao Mo 2016/07/20 16:10:42 This is good. I think between this and the WebGL s
1508 decoder_.reset(new MockGLES2Decoder());
1509 manager_.CreateFramebuffer(kClient1Id, kService1Id);
1510 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>());
1511 framebuffer_ = manager_.GetFramebuffer(kClient1Id);
1512 ASSERT_TRUE(framebuffer_ != NULL);
1513 }
1497 }; 1514 };
1498 1515
1499 TEST_F(FramebufferInfoES3Test, DifferentDimensions) { 1516 TEST_F(FramebufferInfoES3Test, DifferentDimensions) {
1500 const GLuint kRenderbufferClient1Id = 33; 1517 const GLuint kRenderbufferClient1Id = 33;
1501 const GLuint kRenderbufferService1Id = 333; 1518 const GLuint kRenderbufferService1Id = 333;
1502 const GLuint kRenderbufferClient2Id = 34; 1519 const GLuint kRenderbufferClient2Id = 34;
1503 const GLuint kRenderbufferService2Id = 334; 1520 const GLuint kRenderbufferService2Id = 334;
1504 const GLsizei kWidth1 = 16; 1521 const GLsizei kWidth1 = 16;
1505 const GLsizei kHeight1 = 32; 1522 const GLsizei kHeight1 = 32;
1506 const GLenum kFormat1 = GL_RGBA4; 1523 const GLenum kFormat1 = GL_RGBA4;
(...skipping 24 matching lines...) Expand all
1531 renderbuffer_manager_->GetRenderbuffer(kRenderbufferClient2Id); 1548 renderbuffer_manager_->GetRenderbuffer(kRenderbufferClient2Id);
1532 ASSERT_TRUE(renderbuffer2 != NULL); 1549 ASSERT_TRUE(renderbuffer2 != NULL);
1533 renderbuffer_manager_->SetInfo( 1550 renderbuffer_manager_->SetInfo(
1534 renderbuffer2, kSamples2, kFormat2, kWidth2, kHeight2); 1551 renderbuffer2, kSamples2, kFormat2, kWidth2, kHeight2);
1535 framebuffer_->AttachRenderbuffer(GL_DEPTH_ATTACHMENT, renderbuffer2); 1552 framebuffer_->AttachRenderbuffer(GL_DEPTH_ATTACHMENT, renderbuffer2);
1536 1553
1537 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT), 1554 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT),
1538 framebuffer_->IsPossiblyComplete(feature_info_.get())); 1555 framebuffer_->IsPossiblyComplete(feature_info_.get()));
1539 } 1556 }
1540 1557
1558 TEST_F(FramebufferInfoES3Test, DuplicatedAttachments) {
1559 const GLuint kTextureClientId = 33;
1560 const GLuint kTextureServiceId = 333;
1561 const GLenum kTarget = GL_TEXTURE_2D;
1562 const GLint kLevel = 0;
1563 const GLenum kFormat = GL_RGBA;
1564 const GLenum kType = GL_UNSIGNED_BYTE;
1565 const GLint kWidth = 16;
1566 const GLint kHeight = 32;
1567 const GLint kDepth = 1;
1568 const GLint kBorder = 0;
1569 const GLint kSamples = 0;
1570
1571 texture_manager_->CreateTexture(kTextureClientId, kTextureServiceId);
1572 scoped_refptr<TextureRef> texture(
1573 texture_manager_->GetTexture(kTextureClientId));
1574 ASSERT_TRUE(texture.get() != nullptr);
1575 texture_manager_->SetTarget(texture.get(), GL_TEXTURE_2D);
1576 texture_manager_->SetLevelInfo(texture.get(), GL_TEXTURE_2D, kLevel,
1577 kFormat, kWidth, kHeight, kDepth, kBorder,
1578 kFormat, kType, gfx::Rect());
1579
1580 // Check an image is attached to more than one color attachment point
1581 // in a framebuffer.
1582 framebuffer_->AttachTexture(
1583 GL_COLOR_ATTACHMENT0, texture.get(), kTarget, kLevel, kSamples);
1584 framebuffer_->AttachTexture(
1585 GL_COLOR_ATTACHMENT1, texture.get(), kTarget, kLevel, kSamples);
1586 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_UNSUPPORTED),
1587 framebuffer_->IsPossiblyComplete(feature_info_.get()));
1588 }
1589
1541 TEST_F(FramebufferInfoES3Test, ReadBuffer) { 1590 TEST_F(FramebufferInfoES3Test, ReadBuffer) {
1542 const GLuint kRenderbufferClientId = 33; 1591 const GLuint kRenderbufferClientId = 33;
1543 const GLuint kRenderbufferServiceId = 333; 1592 const GLuint kRenderbufferServiceId = 333;
1544 1593
1545 EXPECT_EQ(static_cast<GLenum>(GL_COLOR_ATTACHMENT0), 1594 EXPECT_EQ(static_cast<GLenum>(GL_COLOR_ATTACHMENT0),
1546 framebuffer_->read_buffer()); 1595 framebuffer_->read_buffer());
1547 framebuffer_->set_read_buffer(GL_NONE); 1596 framebuffer_->set_read_buffer(GL_NONE);
1548 EXPECT_EQ(static_cast<GLenum>(GL_NONE), framebuffer_->read_buffer()); 1597 EXPECT_EQ(static_cast<GLenum>(GL_NONE), framebuffer_->read_buffer());
1549 EXPECT_FALSE(framebuffer_->GetReadBufferAttachment()); 1598 EXPECT_FALSE(framebuffer_->GetReadBufferAttachment());
1550 1599
1551 framebuffer_->set_read_buffer(GL_COLOR_ATTACHMENT1); 1600 framebuffer_->set_read_buffer(GL_COLOR_ATTACHMENT1);
1552 EXPECT_FALSE(framebuffer_->GetReadBufferAttachment()); 1601 EXPECT_FALSE(framebuffer_->GetReadBufferAttachment());
1553 1602
1554 renderbuffer_manager_->CreateRenderbuffer( 1603 renderbuffer_manager_->CreateRenderbuffer(
1555 kRenderbufferClientId, kRenderbufferServiceId); 1604 kRenderbufferClientId, kRenderbufferServiceId);
1556 Renderbuffer* renderbuffer = 1605 Renderbuffer* renderbuffer =
1557 renderbuffer_manager_->GetRenderbuffer(kRenderbufferClientId); 1606 renderbuffer_manager_->GetRenderbuffer(kRenderbufferClientId);
1558 ASSERT_TRUE(renderbuffer != NULL); 1607 ASSERT_TRUE(renderbuffer != NULL);
1559 framebuffer_->AttachRenderbuffer(GL_COLOR_ATTACHMENT1, renderbuffer); 1608 framebuffer_->AttachRenderbuffer(GL_COLOR_ATTACHMENT1, renderbuffer);
1560 EXPECT_TRUE(framebuffer_->GetReadBufferAttachment()); 1609 EXPECT_TRUE(framebuffer_->GetReadBufferAttachment());
1561 } 1610 }
1562 1611
1563 } // namespace gles2 1612 } // namespace gles2
1564 } // namespace gpu 1613 } // namespace gpu
1565 1614
1566 1615
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/framebuffer_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698