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

Side by Side Diff: ui/gl/test/gl_image_test_template.h

Issue 2014223002: Follow-up fixes to changing namespace gfx to gl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 years, 6 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 | « ui/gl/test/gl_image_test_support.cc ('k') | ui/gl/trace_util.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 // This file defines tests that implementations of GLImage should pass in order 5 // This file defines tests that implementations of GLImage should pass in order
6 // to be conformant. 6 // to be conformant.
7 7
8 #ifndef UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_ 8 #ifndef UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_
9 #define UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_ 9 #define UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_
10 10
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 varying vec2 v_texCoord; 44 varying vec2 v_texCoord;
45 void main() { 45 void main() {
46 gl_FragColor = TextureLookup(a_texture, v_texCoord * TextureScale); 46 gl_FragColor = TextureLookup(a_texture, v_texCoord * TextureScale);
47 } 47 }
48 ); 48 );
49 const char kShaderFloatPrecision[] = STRINGIZE( 49 const char kShaderFloatPrecision[] = STRINGIZE(
50 precision mediump float; 50 precision mediump float;
51 ); 51 );
52 // clang-format on 52 // clang-format on
53 53
54 bool is_gles = gl::GetGLImplementation() == gl::kGLImplementationEGLGLES2; 54 bool is_gles = GetGLImplementation() == kGLImplementationEGLGLES2;
55 switch (target) { 55 switch (target) {
56 case GL_TEXTURE_2D: 56 case GL_TEXTURE_2D:
57 return gl::GLHelper::LoadShader( 57 return GLHelper::LoadShader(
58 GL_FRAGMENT_SHADER, 58 GL_FRAGMENT_SHADER,
59 base::StringPrintf("%s\n" 59 base::StringPrintf("%s\n"
60 "#define SamplerType sampler2D\n" 60 "#define SamplerType sampler2D\n"
61 "#define TextureLookup texture2D\n" 61 "#define TextureLookup texture2D\n"
62 "#define TextureScale vec2(1.0, 1.0)\n" 62 "#define TextureScale vec2(1.0, 1.0)\n"
63 "%s", 63 "%s",
64 is_gles ? kShaderFloatPrecision : "", 64 is_gles ? kShaderFloatPrecision : "",
65 kFragmentShader) 65 kFragmentShader)
66 .c_str()); 66 .c_str());
67 case GL_TEXTURE_RECTANGLE_ARB: 67 case GL_TEXTURE_RECTANGLE_ARB:
68 return gl::GLHelper::LoadShader( 68 return GLHelper::LoadShader(
69 GL_FRAGMENT_SHADER, 69 GL_FRAGMENT_SHADER,
70 base::StringPrintf("%s\n" 70 base::StringPrintf("%s\n"
71 "#extension GL_ARB_texture_rectangle : require\n" 71 "#extension GL_ARB_texture_rectangle : require\n"
72 "#define SamplerType sampler2DRect\n" 72 "#define SamplerType sampler2DRect\n"
73 "#define TextureLookup texture2DRect\n" 73 "#define TextureLookup texture2DRect\n"
74 "#define TextureScale vec2(%f, %f)\n" 74 "#define TextureScale vec2(%f, %f)\n"
75 "%s", 75 "%s",
76 is_gles ? kShaderFloatPrecision : "", 76 is_gles ? kShaderFloatPrecision : "",
77 static_cast<double>(size.width()), 77 static_cast<double>(size.width()),
78 static_cast<double>(size.height()), 78 static_cast<double>(size.height()),
(...skipping 12 matching lines...) Expand all
91 const char kVertexShader[] = STRINGIZE( 91 const char kVertexShader[] = STRINGIZE(
92 attribute vec2 a_position; 92 attribute vec2 a_position;
93 varying vec2 v_texCoord; 93 varying vec2 v_texCoord;
94 void main() { 94 void main() {
95 gl_Position = vec4(a_position.x, a_position.y, 0.0, 1.0); 95 gl_Position = vec4(a_position.x, a_position.y, 0.0, 1.0);
96 v_texCoord = (a_position + vec2(1.0, 1.0)) * 0.5; 96 v_texCoord = (a_position + vec2(1.0, 1.0)) * 0.5;
97 } 97 }
98 ); 98 );
99 // clang-format on 99 // clang-format on
100 100
101 GLuint vertex_shader = 101 GLuint vertex_shader = GLHelper::LoadShader(GL_VERTEX_SHADER, kVertexShader);
102 gl::GLHelper::LoadShader(GL_VERTEX_SHADER, kVertexShader);
103 GLuint fragment_shader = LoadFragmentShader(target, size); 102 GLuint fragment_shader = LoadFragmentShader(target, size);
104 GLuint program = gl::GLHelper::SetupProgram(vertex_shader, fragment_shader); 103 GLuint program = GLHelper::SetupProgram(vertex_shader, fragment_shader);
105 EXPECT_NE(program, 0u); 104 EXPECT_NE(program, 0u);
106 glUseProgram(program); 105 glUseProgram(program);
107 106
108 GLint sampler_location = glGetUniformLocation(program, "a_texture"); 107 GLint sampler_location = glGetUniformLocation(program, "a_texture");
109 ASSERT_NE(sampler_location, -1); 108 ASSERT_NE(sampler_location, -1);
110 glUniform1i(sampler_location, 0); 109 glUniform1i(sampler_location, 0);
111 110
112 GLuint vertex_buffer = gl::GLHelper::SetupQuadVertexBuffer(); 111 GLuint vertex_buffer = GLHelper::SetupQuadVertexBuffer();
113 gl::GLHelper::DrawQuad(vertex_buffer); 112 GLHelper::DrawQuad(vertex_buffer);
114 113
115 glDeleteShader(vertex_shader); 114 glDeleteShader(vertex_shader);
116 glDeleteShader(fragment_shader); 115 glDeleteShader(fragment_shader);
117 glDeleteProgram(program); 116 glDeleteProgram(program);
118 glDeleteBuffersARB(1, &vertex_buffer); 117 glDeleteBuffersARB(1, &vertex_buffer);
119 } 118 }
120 119
121 } // namespace 120 } // namespace
122 121
123 template <typename GLImageTestDelegate> 122 template <typename GLImageTestDelegate>
124 class GLImageTest : public testing::Test { 123 class GLImageTest : public testing::Test {
125 protected: 124 protected:
126 // Overridden from testing::Test: 125 // Overridden from testing::Test:
127 void SetUp() override { 126 void SetUp() override {
128 GLImageTestSupport::InitializeGL(); 127 GLImageTestSupport::InitializeGL();
129 surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size()); 128 surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size());
130 context_ = gl::init::CreateGLContext(nullptr, surface_.get(), 129 context_ =
131 gl::PreferIntegratedGpu); 130 gl::init::CreateGLContext(nullptr, surface_.get(), PreferIntegratedGpu);
132 context_->MakeCurrent(surface_.get()); 131 context_->MakeCurrent(surface_.get());
133 } 132 }
134 void TearDown() override { 133 void TearDown() override {
135 context_->ReleaseCurrent(surface_.get()); 134 context_->ReleaseCurrent(surface_.get());
136 context_ = nullptr; 135 context_ = nullptr;
137 surface_ = nullptr; 136 surface_ = nullptr;
138 GLImageTestSupport::CleanupGL(); 137 GLImageTestSupport::CleanupGL();
139 } 138 }
140 139
141 protected: 140 protected:
142 scoped_refptr<gl::GLSurface> surface_; 141 scoped_refptr<GLSurface> surface_;
143 scoped_refptr<gl::GLContext> context_; 142 scoped_refptr<GLContext> context_;
144 GLImageTestDelegate delegate_; 143 GLImageTestDelegate delegate_;
145 }; 144 };
146 145
147 TYPED_TEST_CASE_P(GLImageTest); 146 TYPED_TEST_CASE_P(GLImageTest);
148 147
149 TYPED_TEST_P(GLImageTest, CreateAndDestroy) { 148 TYPED_TEST_P(GLImageTest, CreateAndDestroy) {
150 const gfx::Size small_image_size(4, 4); 149 const gfx::Size small_image_size(4, 4);
151 const gfx::Size large_image_size(512, 512); 150 const gfx::Size large_image_size(512, 512);
152 const uint8_t image_color[] = {0, 0xff, 0, 0xff}; 151 const uint8_t image_color[] = {0, 0xff, 0, 0xff};
153 152
154 // Create a small solid color green image of preferred format. This must 153 // Create a small solid color green image of preferred format. This must
155 // succeed in order for a GLImage to be conformant. 154 // succeed in order for a GLImage to be conformant.
156 scoped_refptr<gl::GLImage> small_image = 155 scoped_refptr<GLImage> small_image =
157 this->delegate_.CreateSolidColorImage(small_image_size, image_color); 156 this->delegate_.CreateSolidColorImage(small_image_size, image_color);
158 ASSERT_TRUE(small_image); 157 ASSERT_TRUE(small_image);
159 158
160 // Create a large solid color green image of preferred format. This must 159 // Create a large solid color green image of preferred format. This must
161 // succeed in order for a GLImage to be conformant. 160 // succeed in order for a GLImage to be conformant.
162 scoped_refptr<gl::GLImage> large_image = 161 scoped_refptr<GLImage> large_image =
163 this->delegate_.CreateSolidColorImage(large_image_size, image_color); 162 this->delegate_.CreateSolidColorImage(large_image_size, image_color);
164 ASSERT_TRUE(large_image); 163 ASSERT_TRUE(large_image);
165 164
166 // Verify that image size is correct. 165 // Verify that image size is correct.
167 EXPECT_EQ(small_image->GetSize().ToString(), small_image_size.ToString()); 166 EXPECT_EQ(small_image->GetSize().ToString(), small_image_size.ToString());
168 EXPECT_EQ(large_image->GetSize().ToString(), large_image_size.ToString()); 167 EXPECT_EQ(large_image->GetSize().ToString(), large_image_size.ToString());
169 168
170 // Verify that destruction of images work correctly both when we have a 169 // Verify that destruction of images work correctly both when we have a
171 // context and when we don't. 170 // context and when we don't.
172 small_image->Destroy(true /* have_context */); 171 small_image->Destroy(true /* have_context */);
(...skipping 21 matching lines...) Expand all
194 193
195 const gfx::Size image_size(256, 256); 194 const gfx::Size image_size(256, 256);
196 195
197 GLuint framebuffer = 196 GLuint framebuffer =
198 GLTestHelper::SetupFramebuffer(image_size.width(), image_size.height()); 197 GLTestHelper::SetupFramebuffer(image_size.width(), image_size.height());
199 ASSERT_TRUE(framebuffer); 198 ASSERT_TRUE(framebuffer);
200 glBindFramebufferEXT(GL_FRAMEBUFFER, framebuffer); 199 glBindFramebufferEXT(GL_FRAMEBUFFER, framebuffer);
201 glViewport(0, 0, image_size.width(), image_size.height()); 200 glViewport(0, 0, image_size.width(), image_size.height());
202 201
203 // Create an uninitialized image of preferred format. 202 // Create an uninitialized image of preferred format.
204 scoped_refptr<gl::GLImage> image = this->delegate_.CreateImage(image_size); 203 scoped_refptr<GLImage> image = this->delegate_.CreateImage(image_size);
205 204
206 // Create a texture that |image| will be bound to. 205 // Create a texture that |image| will be bound to.
207 GLenum target = this->delegate_.GetTextureTarget(); 206 GLenum target = this->delegate_.GetTextureTarget();
208 GLuint texture = GLTestHelper::CreateTexture(target); 207 GLuint texture = GLTestHelper::CreateTexture(target);
209 glBindTexture(target, texture); 208 glBindTexture(target, texture);
210 209
211 // Bind |image| to |texture|. 210 // Bind |image| to |texture|.
212 bool rv = image->BindTexImage(target); 211 bool rv = image->BindTexImage(target);
213 EXPECT_TRUE(rv); 212 EXPECT_TRUE(rv);
214 213
(...skipping 26 matching lines...) Expand all
241 const uint8_t image_color[] = {0x10, 0x20, 0, 0xff}; 240 const uint8_t image_color[] = {0x10, 0x20, 0, 0xff};
242 241
243 GLuint framebuffer = 242 GLuint framebuffer =
244 GLTestHelper::SetupFramebuffer(image_size.width(), image_size.height()); 243 GLTestHelper::SetupFramebuffer(image_size.width(), image_size.height());
245 ASSERT_TRUE(framebuffer); 244 ASSERT_TRUE(framebuffer);
246 glBindFramebufferEXT(GL_FRAMEBUFFER, framebuffer); 245 glBindFramebufferEXT(GL_FRAMEBUFFER, framebuffer);
247 glViewport(0, 0, image_size.width(), image_size.height()); 246 glViewport(0, 0, image_size.width(), image_size.height());
248 247
249 // Create a solid color green image of preferred format. This must succeed 248 // Create a solid color green image of preferred format. This must succeed
250 // in order for a GLImage to be conformant. 249 // in order for a GLImage to be conformant.
251 scoped_refptr<gl::GLImage> image = 250 scoped_refptr<GLImage> image =
252 this->delegate_.CreateSolidColorImage(image_size, image_color); 251 this->delegate_.CreateSolidColorImage(image_size, image_color);
253 ASSERT_TRUE(image); 252 ASSERT_TRUE(image);
254 253
255 // Initialize a blue texture of the same size as |image|. 254 // Initialize a blue texture of the same size as |image|.
256 unsigned target = this->delegate_.GetTextureTarget(); 255 unsigned target = this->delegate_.GetTextureTarget();
257 GLuint texture = GLTestHelper::CreateTexture(target); 256 GLuint texture = GLTestHelper::CreateTexture(target);
258 glBindTexture(target, texture); 257 glBindTexture(target, texture);
259 258
260 // Bind |image| to |texture|. 259 // Bind |image| to |texture|.
261 bool rv = image->BindTexImage(target); 260 bool rv = image->BindTexImage(target);
(...skipping 30 matching lines...) Expand all
292 const uint8_t texture_color[] = {0, 0, 0xff, 0xff}; 291 const uint8_t texture_color[] = {0, 0, 0xff, 0xff};
293 292
294 GLuint framebuffer = 293 GLuint framebuffer =
295 GLTestHelper::SetupFramebuffer(image_size.width(), image_size.height()); 294 GLTestHelper::SetupFramebuffer(image_size.width(), image_size.height());
296 ASSERT_TRUE(framebuffer); 295 ASSERT_TRUE(framebuffer);
297 glBindFramebufferEXT(GL_FRAMEBUFFER, framebuffer); 296 glBindFramebufferEXT(GL_FRAMEBUFFER, framebuffer);
298 glViewport(0, 0, image_size.width(), image_size.height()); 297 glViewport(0, 0, image_size.width(), image_size.height());
299 298
300 // Create a solid color green image of preferred format. This must succeed 299 // Create a solid color green image of preferred format. This must succeed
301 // in order for a GLImage to be conformant. 300 // in order for a GLImage to be conformant.
302 scoped_refptr<gl::GLImage> image = 301 scoped_refptr<GLImage> image =
303 this->delegate_.CreateSolidColorImage(image_size, image_color); 302 this->delegate_.CreateSolidColorImage(image_size, image_color);
304 ASSERT_TRUE(image); 303 ASSERT_TRUE(image);
305 304
306 // Create a solid color blue texture of the same size as |image|. 305 // Create a solid color blue texture of the same size as |image|.
307 unsigned target = this->delegate_.GetTextureTarget(); 306 unsigned target = this->delegate_.GetTextureTarget();
308 GLuint texture = GLTestHelper::CreateTexture(target); 307 GLuint texture = GLTestHelper::CreateTexture(target);
309 std::unique_ptr<uint8_t[]> pixels(new uint8_t[BufferSizeForBufferFormat( 308 std::unique_ptr<uint8_t[]> pixels(new uint8_t[BufferSizeForBufferFormat(
310 image_size, gfx::BufferFormat::RGBA_8888)]); 309 image_size, gfx::BufferFormat::RGBA_8888)]);
311 GLImageTestSupport::SetBufferDataToColor( 310 GLImageTestSupport::SetBufferDataToColor(
312 image_size.width(), image_size.height(), 311 image_size.width(), image_size.height(),
(...skipping 21 matching lines...) Expand all
334 image->Destroy(true /* have_context */); 333 image->Destroy(true /* have_context */);
335 } 334 }
336 335
337 // The GLImageCopyTest test case verifies that the GLImage implementation 336 // The GLImageCopyTest test case verifies that the GLImage implementation
338 // handles CopyTexImage correctly. 337 // handles CopyTexImage correctly.
339 REGISTER_TYPED_TEST_CASE_P(GLImageCopyTest, CopyTexImage); 338 REGISTER_TYPED_TEST_CASE_P(GLImageCopyTest, CopyTexImage);
340 339
341 } // namespace gl 340 } // namespace gl
342 341
343 #endif // UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_ 342 #endif // UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_
OLDNEW
« no previous file with comments | « ui/gl/test/gl_image_test_support.cc ('k') | ui/gl/trace_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698