Chromium Code Reviews| Index: third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferSoftwareRenderingTest.cpp |
| diff --git a/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferSoftwareRenderingTest.cpp b/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferSoftwareRenderingTest.cpp |
| index edcd8be52c9820136312cdf408d0288e0b8e36af..ade6f6f4f5775dbb59cd7b7759cff992a7b218f9 100644 |
| --- a/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferSoftwareRenderingTest.cpp |
| +++ b/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferSoftwareRenderingTest.cpp |
| @@ -53,8 +53,10 @@ class DrawingBufferSoftwareRenderingTest : public Test { |
| provider = WTF::WrapUnique( |
| new WebGraphicsContext3DProviderSoftwareRenderingForTests( |
| std::move(gl))); |
| + GLES2InterfaceForTests* gl_ = |
| + static_cast<GLES2InterfaceForTests*>(provider->ContextGL()); |
|
xinghua.cao
2017/06/02 16:06:28
provider will been released after "std::move(provi
Ken Russell (switch to Gerrit)
2017/06/02 21:52:50
Understood. It might be desirable to clean up the
|
| drawing_buffer_ = DrawingBufferForTests::Create( |
| - std::move(provider), nullptr, initial_size, DrawingBuffer::kPreserve, |
| + std::move(provider), gl_, initial_size, DrawingBuffer::kPreserve, |
| kDisableMultisampling); |
| CHECK(drawing_buffer_); |
| } |
| @@ -63,7 +65,7 @@ class DrawingBufferSoftwareRenderingTest : public Test { |
| bool is_software_rendering_ = false; |
| }; |
| -TEST_F(DrawingBufferSoftwareRenderingTest, bitmapRecycling) { |
| +TEST_F(DrawingBufferSoftwareRenderingTest, BitmapRecycling) { |
| cc::TextureMailbox texture_mailbox; |
| std::unique_ptr<cc::SingleReleaseCallback> release_callback1; |
| std::unique_ptr<cc::SingleReleaseCallback> release_callback2; |
| @@ -101,5 +103,29 @@ TEST_F(DrawingBufferSoftwareRenderingTest, bitmapRecycling) { |
| drawing_buffer_->BeginDestruction(); |
| } |
| +TEST_F(DrawingBufferSoftwareRenderingTest, FramebufferBinding) { |
| + GLES2InterfaceForTests* gl_ = drawing_buffer_->ContextGLForTests(); |
| + cc::TextureMailbox texture_mailbox; |
| + std::unique_ptr<cc::SingleReleaseCallback> release_callback; |
| + IntSize initial_size(kInitialWidth, kInitialHeight); |
| + GLint drawBinding = 0, readBinding = 0; |
| + |
| + GLuint draw_framebuffer_binding = 0xbeef3; |
| + GLuint read_framebuffer_binding = 0xbeef4; |
| + gl_->BindFramebuffer(GL_DRAW_FRAMEBUFFER, draw_framebuffer_binding); |
| + gl_->BindFramebuffer(GL_READ_FRAMEBUFFER, read_framebuffer_binding); |
| + gl_->SaveState(); |
| + drawing_buffer_->Resize(initial_size); |
| + drawing_buffer_->MarkContentsChanged(); |
| + drawing_buffer_->PrepareTextureMailbox(&texture_mailbox, &release_callback); |
| + gl_->GetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &drawBinding); |
| + gl_->GetIntegerv(GL_READ_FRAMEBUFFER_BINDING, &readBinding); |
| + EXPECT_EQ(static_cast<GLint>(draw_framebuffer_binding), drawBinding); |
| + EXPECT_EQ(static_cast<GLint>(read_framebuffer_binding), readBinding); |
| + release_callback->Run(gpu::SyncToken(), false /* lostResource */); |
| + |
| + drawing_buffer_->BeginDestruction(); |
| +} |
| + |
| } // unnamed namespace |
| } // blink |