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

Unified Diff: ui/gl/test/gl_image_test_template.h

Issue 1390143002: Revert of Re-land: ui: Add GLImage unit test framework. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gl/test/gl_image_test_support.cc ('k') | ui/gl/test/gl_surface_test_support.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
deleted file mode 100644
index 8533ce20c44d7c824e4e1fdf3e52d5935ae57406..0000000000000000000000000000000000000000
--- a/ui/gl/test/gl_image_test_template.h
+++ /dev/null
@@ -1,182 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This file defines tests that implementations of GLImage should pass in order
-// to be conformant.
-
-#ifndef UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_
-#define UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_
-
-#include "base/basictypes.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/strings/stringize_macros.h"
-#include "base/strings/stringprintf.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/gfx/buffer_format_util.h"
-#include "ui/gfx/buffer_types.h"
-#include "ui/gl/gl_bindings.h"
-#include "ui/gl/gl_context.h"
-#include "ui/gl/gl_image.h"
-#include "ui/gl/gl_implementation.h"
-#include "ui/gl/gl_surface.h"
-#include "ui/gl/test/gl_image_test_support.h"
-#include "ui/gl/test/gl_test_helper.h"
-
-namespace gfx {
-
-template <typename GLImageTestDelegate>
-class GLImageTest : public testing::Test {
- protected:
- // Overridden from testing::Test:
- void SetUp() override {
- GLImageTestSupport::InitializeGL();
- surface_ = GLSurface::CreateOffscreenGLSurface(Size());
- context_ = GLContext::CreateGLContext(nullptr, surface_.get(),
- PreferIntegratedGpu);
- context_->MakeCurrent(surface_.get());
- }
- void TearDown() override {
- context_->ReleaseCurrent(surface_.get());
- context_ = nullptr;
- surface_ = nullptr;
- GLImageTestSupport::CleanupGL();
- }
-
- protected:
- scoped_refptr<GLSurface> surface_;
- scoped_refptr<GLContext> context_;
- GLImageTestDelegate delegate_;
-};
-
-TYPED_TEST_CASE_P(GLImageTest);
-
-// Copy image to texture. Support is optional. Texels should be updated if
-// supported, and left unchanged if not.
-TYPED_TEST_P(GLImageTest, CopyTexSubImage) {
- const Size image_size(256, 256);
- const uint8_t image_color[] = {0, 0xff, 0, 0xff};
- const uint8_t texture_color[] = {0, 0, 0xff, 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());
-
- // Create a solid color green image of preferred format. This must succeed
- // in order for a GLImage to be conformant.
- scoped_refptr<GLImage> image = this->delegate_.CreateSolidColorImage(
- image_size, GLImageTestSupport::GetPreferredInternalFormat(),
- GLImageTestSupport::GetPreferredBufferFormat(), image_color);
- ASSERT_TRUE(image);
-
- // Create a solid color blue texture of the same size as |image|.
- GLuint texture = GLTestHelper::CreateTexture(GL_TEXTURE_2D);
- scoped_ptr<uint8_t[]> pixels(new uint8_t[BufferSizeForBufferFormat(
- image_size, GLImageTestSupport::GetPreferredBufferFormat())]);
- GLImageTestSupport::SetBufferDataToColor(
- image_size.width(), image_size.height(),
- static_cast<int>(RowSizeForBufferFormat(
- image_size.width(), GLImageTestSupport::GetPreferredBufferFormat(),
- 0)),
- GLImageTestSupport::GetPreferredBufferFormat(), texture_color,
- pixels.get());
- // Note: This test assume that |image| can be used with GL_TEXTURE_2D but
- // that might not be the case for some GLImage implementations.
- glBindTexture(GL_TEXTURE_2D, texture);
- glTexImage2D(GL_TEXTURE_2D, 0,
- GLImageTestSupport::GetPreferredInternalFormat(),
- image_size.width(), image_size.height(), 0,
- GLImageTestSupport::GetPreferredInternalFormat(),
- GL_UNSIGNED_BYTE, pixels.get());
-
- // Attempt to copy |image| to |texture|.
- // Returns true on success, false on failure.
- bool rv = image->CopyTexSubImage(GL_TEXTURE_2D, Point(), Rect(image_size));
-
- // clang-format off
- const char kVertexShader[] = STRINGIZE(
- attribute vec2 a_position;
- attribute vec2 a_texCoord;
- varying vec2 v_texCoord;
- void main() {
- gl_Position = vec4(a_position.x, a_position.y, 0.0, 1.0);
- v_texCoord = a_texCoord;
- }
- );
- const char kFragmentShader[] = STRINGIZE(
- uniform sampler2D a_texture;
- varying vec2 v_texCoord;
- void main() {
- gl_FragColor = texture2D(a_texture, v_texCoord);
- }
- );
- const char kShaderFloatPrecision[] = STRINGIZE(
- precision mediump float;
- );
- // clang-format on
-
- GLuint vertex_shader =
- GLTestHelper::LoadShader(GL_VERTEX_SHADER, kVertexShader);
- bool is_gles = GetGLImplementation() == kGLImplementationEGLGLES2;
- GLuint fragment_shader = GLTestHelper::LoadShader(
- GL_FRAGMENT_SHADER,
- base::StringPrintf("%s%s", is_gles ? kShaderFloatPrecision : "",
- kFragmentShader)
- .c_str());
- GLuint program = GLTestHelper::SetupProgram(vertex_shader, fragment_shader);
- EXPECT_NE(program, 0u);
- glUseProgram(program);
-
- GLint sampler_location = glGetUniformLocation(program, "a_texture");
- ASSERT_NE(sampler_location, -1);
- glUniform1i(sampler_location, 0);
-
- // clang-format off
- static GLfloat vertices[] = {
- -1.f, -1.f, 0.f, 0.f,
- 1.f, -1.f, 1.f, 0.f,
- -1.f, 1.f, 0.f, 1.f,
- 1.f, 1.f, 1.f, 1.f
- };
- // clang-format on
-
- GLuint vertex_buffer;
- glGenBuffersARB(1, &vertex_buffer);
- glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer);
- glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
- GLint position_location = glGetAttribLocation(program, "a_position");
- ASSERT_NE(position_location, -1);
- glEnableVertexAttribArray(position_location);
- glVertexAttribPointer(position_location, 2, GL_FLOAT, GL_FALSE,
- sizeof(GLfloat) * 4, 0);
- GLint tex_coord_location = glGetAttribLocation(program, "a_texCoord");
- EXPECT_NE(tex_coord_location, -1);
- glEnableVertexAttribArray(tex_coord_location);
- glVertexAttribPointer(tex_coord_location, 2, GL_FLOAT, GL_FALSE,
- sizeof(GLfloat) * 4,
- reinterpret_cast<void*>(sizeof(GLfloat) * 2));
-
- // Draw |texture| to viewport and read back pixels to check expectations.
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
- GLTestHelper::CheckPixels(0, 0, image_size.width(), image_size.height(),
- rv ? image_color : texture_color);
-
- // Clean up.
- glDeleteProgram(program);
- glDeleteShader(vertex_shader);
- glDeleteShader(fragment_shader);
- glDeleteBuffersARB(1, &vertex_buffer);
- glDeleteTextures(1, &texture);
- glDeleteFramebuffersEXT(1, &framebuffer);
- image->Destroy(true);
-}
-
-// The GLImageTest test case verifies behaviour that is expected from a
-// GLImage in order to be conformant.
-REGISTER_TYPED_TEST_CASE_P(GLImageTest, CopyTexSubImage);
-
-} // namespace gfx
-
-#endif // UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_
« no previous file with comments | « ui/gl/test/gl_image_test_support.cc ('k') | ui/gl/test/gl_surface_test_support.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698