| Index: ui/gl/test/gl_image_test_template.h
|
| diff --git a/ui/gl/test/gl_image_test_template.h b/ui/gl/test/gl_image_test_template.h
|
| index 113fb69d53ddf1b89f14b35dc30040efcb9cc077..adcb2588034b4c1d0a4ae35a002d30bc71c9191a 100644
|
| --- a/ui/gl/test/gl_image_test_template.h
|
| +++ b/ui/gl/test/gl_image_test_template.h
|
| @@ -210,6 +210,60 @@ TYPED_TEST_P(GLImageCopyTest, CopyTexImage) {
|
| // handles CopyTexImage correctly.
|
| REGISTER_TYPED_TEST_CASE_P(GLImageCopyTest, CopyTexImage);
|
|
|
| +template <typename GLImageTestDelegate>
|
| +class GLImageBindTest : public GLImageTest<GLImageTestDelegate> {};
|
| +
|
| +TYPED_TEST_CASE_P(GLImageBindTest);
|
| +
|
| +TYPED_TEST_P(GLImageBindTest, BindTexImage) {
|
| + const gfx::Size image_size(256, 256);
|
| + const uint8_t image_color[] = {0x10, 0x20, 0, 0xff};
|
| +
|
| + GLuint framebuffer =
|
| + GLTestHelper::SetupFramebuffer(image_size.width(), image_size.height());
|
| + ASSERT_TRUE(framebuffer);
|
| + glBindFramebufferEXT(GL_FRAMEBUFFER, framebuffer);
|
| + glViewport(0, 0, image_size.width(), image_size.height());
|
| +
|
| + GLuint program = this->CreateSingleTextureProgram();
|
| + GLuint vertex_buffer = gfx::GLHelper::SetupQuadVertexBuffer();
|
| +
|
| + for (auto format : gfx::GetBufferFormatsForTesting()) {
|
| + if (!TypeParam::IsSupported(format)) {
|
| + continue;
|
| + }
|
| +
|
| + // Create a solid color green image of preferred format. This must succeed
|
| + // in order for a GLImage to be conformant.
|
| + scoped_refptr<gl::GLImage> image =
|
| + this->delegate_.CreateSolidColorImage(image_size, format, image_color);
|
| + ASSERT_TRUE(image);
|
| +
|
| + GLuint texture = GLTestHelper::CreateTexture(GL_TEXTURE_2D);
|
| +
|
| + // Bind |image| to |texture|.
|
| + bool rv = image->BindTexImage(GL_TEXTURE_2D);
|
| + EXPECT_TRUE(rv);
|
| +
|
| + // Draw |texture| to viewport and read back pixels to check expectations.
|
| + gfx::GLHelper::DrawQuad(vertex_buffer);
|
| +
|
| + GLTestHelper::CheckPixels(0, 0, image_size.width(), image_size.height(),
|
| + image_color);
|
| +
|
| + // Clean up.
|
| + glDeleteTextures(1, &texture);
|
| + image->Destroy(true);
|
| + }
|
| + glDeleteProgram(program);
|
| + glDeleteBuffersARB(1, &vertex_buffer);
|
| + glDeleteFramebuffersEXT(1, &framebuffer);
|
| +}
|
| +
|
| +// The GLImageBindTest test case verifies that the GLImage implementation
|
| +// handles BindTexImage correctly.
|
| +REGISTER_TYPED_TEST_CASE_P(GLImageBindTest, BindTexImage);
|
| +
|
| } // namespace gl
|
|
|
| #endif // UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_
|
|
|