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

Side by Side Diff: gpu/command_buffer/service/texture_manager_unittest.cc

Issue 1335873002: Initialize default texture for GL_TEXTURE_3D and GL_TEXTURE_2D_ARRAY (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix comments from zmo Created 5 years, 3 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "gpu/command_buffer/service/texture_manager.h" 5 #include "gpu/command_buffer/service/texture_manager.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 void SetUp() override { 71 void SetUp() override {
72 GpuServiceTest::SetUp(); 72 GpuServiceTest::SetUp();
73 manager_.reset(new TextureManager(NULL, 73 manager_.reset(new TextureManager(NULL,
74 feature_info_.get(), 74 feature_info_.get(),
75 kMaxTextureSize, 75 kMaxTextureSize,
76 kMaxCubeMapTextureSize, 76 kMaxCubeMapTextureSize,
77 kMaxRectangleTextureSize, 77 kMaxRectangleTextureSize,
78 kMax3DTextureSize, 78 kMax3DTextureSize,
79 kUseDefaultTextures)); 79 kUseDefaultTextures));
80 TestHelper::SetupTextureManagerInitExpectations( 80 TestHelper::SetupTextureManagerInitExpectations(
81 gl_.get(), "", kUseDefaultTextures); 81 gl_.get(), false, "", kUseDefaultTextures);
82 manager_->Initialize(); 82 manager_->Initialize();
83 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); 83 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>());
84 } 84 }
85 85
86 void TearDown() override { 86 void TearDown() override {
87 manager_->Destroy(false); 87 manager_->Destroy(false);
88 manager_.reset(); 88 manager_.reset();
89 GpuServiceTest::TearDown(); 89 GpuServiceTest::TearDown();
90 } 90 }
91 91
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), texture->min_filter()); 170 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), texture->min_filter());
171 SetParameter(texture_ref, GL_TEXTURE_WRAP_S, GL_NEAREST, GL_INVALID_ENUM); 171 SetParameter(texture_ref, GL_TEXTURE_WRAP_S, GL_NEAREST, GL_INVALID_ENUM);
172 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_s()); 172 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_s());
173 SetParameter(texture_ref, GL_TEXTURE_WRAP_T, GL_NEAREST, GL_INVALID_ENUM); 173 SetParameter(texture_ref, GL_TEXTURE_WRAP_T, GL_NEAREST, GL_INVALID_ENUM);
174 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_t()); 174 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_t());
175 SetParameter(texture_ref, GL_TEXTURE_MAX_ANISOTROPY_EXT, 0, GL_INVALID_VALUE); 175 SetParameter(texture_ref, GL_TEXTURE_MAX_ANISOTROPY_EXT, 0, GL_INVALID_VALUE);
176 } 176 }
177 177
178 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) { 178 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) {
179 bool use_default_textures = true; 179 bool use_default_textures = true;
180 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 180 TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion(
Zhenyao Mo 2015/09/15 18:37:16 Can you add a function to handle feature_info_ set
qiankun 2015/09/17 09:39:27 Done.
181 181 gl_.get(), "", "", "OpenGL ES 3.0");
182 TestHelper::SetupTextureManagerInitExpectations( 182 feature_info_->Initialize();
183 gl_.get(), "GL_ANGLE_texture_usage", use_default_textures); 183 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_COLOR_ATTACHMENTS, _))
184 .WillOnce(SetArgPointee<1>(8))
185 .RetiresOnSaturation();
186 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_DRAW_BUFFERS, _))
187 .WillOnce(SetArgPointee<1>(8))
188 .RetiresOnSaturation();
189 feature_info_->EnableES3Validators();
190 TestHelper::SetupTextureManagerInitExpectations(gl_.get(),
191 true, "GL_ANGLE_texture_usage", use_default_textures);
184 TextureManager manager(NULL, 192 TextureManager manager(NULL,
185 feature_info_.get(), 193 feature_info_.get(),
186 kMaxTextureSize, 194 kMaxTextureSize,
187 kMaxCubeMapTextureSize, 195 kMaxCubeMapTextureSize,
188 kMaxRectangleTextureSize, 196 kMaxRectangleTextureSize,
189 kMax3DTextureSize, 197 kMax3DTextureSize,
190 use_default_textures); 198 use_default_textures);
191 manager.Initialize(); 199 manager.Initialize();
192 200
193 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL); 201 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL);
202 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) != NULL);
203 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) != NULL);
194 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL); 204 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL);
195 205
196 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. 206 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB.
197 207
198 manager.Destroy(false); 208 manager.Destroy(false);
199 } 209 }
200 210
201 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) { 211 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) {
202 bool use_default_textures = false; 212 bool use_default_textures = false;
203 TestHelper::SetupTextureManagerInitExpectations( 213 TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion(
204 gl_.get(), "GL_ANGLE_texture_usage", use_default_textures); 214 gl_.get(), "", "", "OpenGL ES 3.0");
215 feature_info_->Initialize();
216 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_COLOR_ATTACHMENTS, _))
217 .WillOnce(SetArgPointee<1>(8))
218 .RetiresOnSaturation();
219 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_DRAW_BUFFERS, _))
220 .WillOnce(SetArgPointee<1>(8))
221 .RetiresOnSaturation();
222 feature_info_->EnableES3Validators();
223 TestHelper::SetupTextureManagerInitExpectations(gl_.get(),
224 true, "GL_ANGLE_texture_usage", use_default_textures);
205 TextureManager manager(NULL, 225 TextureManager manager(NULL,
206 feature_info_.get(), 226 feature_info_.get(),
207 kMaxTextureSize, 227 kMaxTextureSize,
208 kMaxCubeMapTextureSize, 228 kMaxCubeMapTextureSize,
209 kMaxRectangleTextureSize, 229 kMaxRectangleTextureSize,
210 kMax3DTextureSize, 230 kMax3DTextureSize,
211 use_default_textures); 231 use_default_textures);
212 manager.Initialize(); 232 manager.Initialize();
213 233
214 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL); 234 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL);
235 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) == NULL);
236 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) == NULL);
215 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL); 237 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL);
216 238
217 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. 239 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB.
218 240
219 manager.Destroy(false); 241 manager.Destroy(false);
220 } 242 }
221 243
222 TEST_F(TextureManagerTest, TextureUsageExt) { 244 TEST_F(TextureManagerTest, TextureUsageExt) {
223 TestHelper::SetupTextureManagerInitExpectations( 245 TestHelper::SetupTextureManagerInitExpectations(
224 gl_.get(), "GL_ANGLE_texture_usage", kUseDefaultTextures); 246 gl_.get(), false, "GL_ANGLE_texture_usage", kUseDefaultTextures);
225 TextureManager manager(NULL, 247 TextureManager manager(NULL,
226 feature_info_.get(), 248 feature_info_.get(),
227 kMaxTextureSize, 249 kMaxTextureSize,
228 kMaxCubeMapTextureSize, 250 kMaxCubeMapTextureSize,
229 kMaxRectangleTextureSize, 251 kMaxRectangleTextureSize,
230 kMax3DTextureSize, 252 kMax3DTextureSize,
231 kUseDefaultTextures); 253 kUseDefaultTextures);
232 manager.Initialize(); 254 manager.Initialize();
233 const GLuint kClient1Id = 1; 255 const GLuint kClient1Id = 1;
234 const GLuint kService1Id = 11; 256 const GLuint kService1Id = 11;
235 // Check we can create texture. 257 // Check we can create texture.
236 manager.CreateTexture(kClient1Id, kService1Id); 258 manager.CreateTexture(kClient1Id, kService1Id);
237 // Check texture got created. 259 // Check texture got created.
238 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 260 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
239 ASSERT_TRUE(texture_ref != NULL); 261 ASSERT_TRUE(texture_ref != NULL);
240 TestHelper::SetTexParameteriWithExpectations( 262 TestHelper::SetTexParameteriWithExpectations(
241 gl_.get(), error_state_.get(), &manager, texture_ref, 263 gl_.get(), error_state_.get(), &manager, texture_ref,
242 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR); 264 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR);
243 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), 265 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE),
244 texture_ref->texture()->usage()); 266 texture_ref->texture()->usage());
245 manager.Destroy(false); 267 manager.Destroy(false);
246 } 268 }
247 269
248 TEST_F(TextureManagerTest, Destroy) { 270 TEST_F(TextureManagerTest, Destroy) {
249 const GLuint kClient1Id = 1; 271 const GLuint kClient1Id = 1;
250 const GLuint kService1Id = 11; 272 const GLuint kService1Id = 11;
251 TestHelper::SetupTextureManagerInitExpectations( 273 TestHelper::SetupTextureManagerInitExpectations(
252 gl_.get(), "", kUseDefaultTextures); 274 gl_.get(), false, "", kUseDefaultTextures);
253 TextureManager manager(NULL, 275 TextureManager manager(NULL,
254 feature_info_.get(), 276 feature_info_.get(),
255 kMaxTextureSize, 277 kMaxTextureSize,
256 kMaxCubeMapTextureSize, 278 kMaxCubeMapTextureSize,
257 kMaxRectangleTextureSize, 279 kMaxRectangleTextureSize,
258 kMax3DTextureSize, 280 kMax3DTextureSize,
259 kUseDefaultTextures); 281 kUseDefaultTextures);
260 manager.Initialize(); 282 manager.Initialize();
261 // Check we can create texture. 283 // Check we can create texture.
262 manager.CreateTexture(kClient1Id, kService1Id); 284 manager.CreateTexture(kClient1Id, kService1Id);
263 // Check texture got created. 285 // Check texture got created.
264 TextureRef* texture = manager.GetTexture(kClient1Id); 286 TextureRef* texture = manager.GetTexture(kClient1Id);
265 ASSERT_TRUE(texture != NULL); 287 ASSERT_TRUE(texture != NULL);
266 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) 288 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id)))
267 .Times(1) 289 .Times(1)
268 .RetiresOnSaturation(); 290 .RetiresOnSaturation();
269 TestHelper::SetupTextureManagerDestructionExpectations( 291 TestHelper::SetupTextureManagerDestructionExpectations(
270 gl_.get(), "", kUseDefaultTextures); 292 gl_.get(), false, "", kUseDefaultTextures);
271 manager.Destroy(true); 293 manager.Destroy(true);
272 // Check that resources got freed. 294 // Check that resources got freed.
273 texture = manager.GetTexture(kClient1Id); 295 texture = manager.GetTexture(kClient1Id);
274 ASSERT_TRUE(texture == NULL); 296 ASSERT_TRUE(texture == NULL);
275 } 297 }
276 298
277 TEST_F(TextureManagerTest, MaxValues) { 299 TEST_F(TextureManagerTest, MaxValues) {
278 // Check we get the right values for the max sizes. 300 // Check we get the right values for the max sizes.
279 EXPECT_EQ(kMax2dLevels, manager_->MaxLevelsForTarget(GL_TEXTURE_2D)); 301 EXPECT_EQ(kMax2dLevels, manager_->MaxLevelsForTarget(GL_TEXTURE_2D));
280 EXPECT_EQ(kMaxCubeMapLevels, 302 EXPECT_EQ(kMaxCubeMapLevels,
(...skipping 1536 matching lines...) Expand 10 before | Expand all | Expand 10 after
1817 memory_tracker2_ = new CountingMemoryTracker; 1839 memory_tracker2_ = new CountingMemoryTracker;
1818 texture_manager2_.reset( 1840 texture_manager2_.reset(
1819 new TextureManager(memory_tracker2_.get(), 1841 new TextureManager(memory_tracker2_.get(),
1820 feature_info_.get(), 1842 feature_info_.get(),
1821 TextureManagerTest::kMaxTextureSize, 1843 TextureManagerTest::kMaxTextureSize,
1822 TextureManagerTest::kMaxCubeMapTextureSize, 1844 TextureManagerTest::kMaxCubeMapTextureSize,
1823 TextureManagerTest::kMaxRectangleTextureSize, 1845 TextureManagerTest::kMaxRectangleTextureSize,
1824 TextureManagerTest::kMax3DTextureSize, 1846 TextureManagerTest::kMax3DTextureSize,
1825 kUseDefaultTextures)); 1847 kUseDefaultTextures));
1826 TestHelper::SetupTextureManagerInitExpectations( 1848 TestHelper::SetupTextureManagerInitExpectations(
1827 gl_.get(), "", kUseDefaultTextures); 1849 gl_.get(), false, "", kUseDefaultTextures);
1828 texture_manager1_->Initialize(); 1850 texture_manager1_->Initialize();
1829 TestHelper::SetupTextureManagerInitExpectations( 1851 TestHelper::SetupTextureManagerInitExpectations(
1830 gl_.get(), "", kUseDefaultTextures); 1852 gl_.get(), false, "", kUseDefaultTextures);
1831 texture_manager2_->Initialize(); 1853 texture_manager2_->Initialize();
1832 } 1854 }
1833 1855
1834 void TearDown() override { 1856 void TearDown() override {
1835 texture_manager2_->Destroy(false); 1857 texture_manager2_->Destroy(false);
1836 texture_manager2_.reset(); 1858 texture_manager2_.reset();
1837 texture_manager1_->Destroy(false); 1859 texture_manager1_->Destroy(false);
1838 texture_manager1_.reset(); 1860 texture_manager1_.reset();
1839 GpuServiceTest::TearDown(); 1861 GpuServiceTest::TearDown();
1840 } 1862 }
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after
2312 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F); 2334 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F);
2313 ExpectValid(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); 2335 ExpectValid(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8);
2314 ExpectValid(GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, 2336 ExpectValid(GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV,
2315 GL_DEPTH32F_STENCIL8); 2337 GL_DEPTH32F_STENCIL8);
2316 2338
2317 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8); 2339 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8);
2318 } 2340 }
2319 2341
2320 } // namespace gles2 2342 } // namespace gles2
2321 } // namespace gpu 2343 } // namespace gpu
OLDNEW
« gpu/command_buffer/service/test_helper.cc ('K') | « gpu/command_buffer/service/texture_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698