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..ee906e8e9c648069c7dbb82efe9a8903848e22b9 100644 |
| --- a/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferSoftwareRenderingTest.cpp |
| +++ b/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferSoftwareRenderingTest.cpp |
| @@ -49,21 +49,23 @@ class DrawingBufferSoftwareRenderingTest : public Test { |
| IntSize initial_size(kInitialWidth, kInitialHeight); |
| std::unique_ptr<GLES2InterfaceForTests> gl = |
| WTF::WrapUnique(new GLES2InterfaceForTests); |
| + gl_ = gl.get(); |
|
Ken Russell (switch to Gerrit)
2017/06/01 21:37:43
Agree with Mo's point that caching this weak point
xinghua.cao
2017/06/02 16:06:28
Hi, ken, Do you mean that add ContextGLForTests()
Ken Russell (switch to Gerrit)
2017/06/02 21:54:14
Ah I misunderstood. Anyway, you fixed this in your
|
| std::unique_ptr<WebGraphicsContext3DProviderSoftwareRenderingForTests> |
| provider = WTF::WrapUnique( |
| new WebGraphicsContext3DProviderSoftwareRenderingForTests( |
| std::move(gl))); |
| drawing_buffer_ = DrawingBufferForTests::Create( |
| - std::move(provider), nullptr, initial_size, DrawingBuffer::kPreserve, |
| + std::move(provider), gl_, initial_size, DrawingBuffer::kPreserve, |
| kDisableMultisampling); |
| CHECK(drawing_buffer_); |
| } |
| RefPtr<DrawingBufferForTests> drawing_buffer_; |
| + GLES2InterfaceForTests* gl_; |
| 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,28 @@ TEST_F(DrawingBufferSoftwareRenderingTest, bitmapRecycling) { |
| drawing_buffer_->BeginDestruction(); |
| } |
| +TEST_F(DrawingBufferSoftwareRenderingTest, FramebufferBinding) { |
| + 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 |