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

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 gpu_unittests 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(), "", "", 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(
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 TestHelper::SetupTextureManagerInitExpectations(gl_.get(),
184 "OpenGL ES 3.0", "GL_ANGLE_texture_usage", use_default_textures);
184 TextureManager manager(NULL, 185 TextureManager manager(NULL,
185 feature_info_.get(), 186 feature_info_.get(),
186 kMaxTextureSize, 187 kMaxTextureSize,
187 kMaxCubeMapTextureSize, 188 kMaxCubeMapTextureSize,
188 kMaxRectangleTextureSize, 189 kMaxRectangleTextureSize,
189 kMax3DTextureSize, 190 kMax3DTextureSize,
190 use_default_textures); 191 use_default_textures);
191 manager.Initialize(); 192 manager.Initialize();
192 193
193 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL); 194 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL);
195 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) != NULL);
196 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) != NULL);
194 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL); 197 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL);
195 198
196 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. 199 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB.
197 200
198 manager.Destroy(false); 201 manager.Destroy(false);
199 } 202 }
200 203
201 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) { 204 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) {
202 bool use_default_textures = false; 205 bool use_default_textures = false;
203 TestHelper::SetupTextureManagerInitExpectations( 206 TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion(
204 gl_.get(), "GL_ANGLE_texture_usage", use_default_textures); 207 gl_.get(), "", "", "OpenGL ES 3.0");
208 feature_info_->Initialize();
209 TestHelper::SetupTextureManagerInitExpectations(gl_.get(),
210 "OpenGL ES 3.0", "GL_ANGLE_texture_usage", use_default_textures);
205 TextureManager manager(NULL, 211 TextureManager manager(NULL,
206 feature_info_.get(), 212 feature_info_.get(),
207 kMaxTextureSize, 213 kMaxTextureSize,
208 kMaxCubeMapTextureSize, 214 kMaxCubeMapTextureSize,
209 kMaxRectangleTextureSize, 215 kMaxRectangleTextureSize,
210 kMax3DTextureSize, 216 kMax3DTextureSize,
211 use_default_textures); 217 use_default_textures);
212 manager.Initialize(); 218 manager.Initialize();
213 219
214 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL); 220 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL);
221 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) == NULL);
222 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) == NULL);
215 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL); 223 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL);
216 224
217 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. 225 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB.
218 226
219 manager.Destroy(false); 227 manager.Destroy(false);
220 } 228 }
221 229
222 TEST_F(TextureManagerTest, TextureUsageExt) { 230 TEST_F(TextureManagerTest, TextureUsageExt) {
223 TestHelper::SetupTextureManagerInitExpectations( 231 TestHelper::SetupTextureManagerInitExpectations(
224 gl_.get(), "GL_ANGLE_texture_usage", kUseDefaultTextures); 232 gl_.get(), "", "GL_ANGLE_texture_usage", kUseDefaultTextures);
225 TextureManager manager(NULL, 233 TextureManager manager(NULL,
226 feature_info_.get(), 234 feature_info_.get(),
227 kMaxTextureSize, 235 kMaxTextureSize,
228 kMaxCubeMapTextureSize, 236 kMaxCubeMapTextureSize,
229 kMaxRectangleTextureSize, 237 kMaxRectangleTextureSize,
230 kMax3DTextureSize, 238 kMax3DTextureSize,
231 kUseDefaultTextures); 239 kUseDefaultTextures);
232 manager.Initialize(); 240 manager.Initialize();
233 const GLuint kClient1Id = 1; 241 const GLuint kClient1Id = 1;
234 const GLuint kService1Id = 11; 242 const GLuint kService1Id = 11;
235 // Check we can create texture. 243 // Check we can create texture.
236 manager.CreateTexture(kClient1Id, kService1Id); 244 manager.CreateTexture(kClient1Id, kService1Id);
237 // Check texture got created. 245 // Check texture got created.
238 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 246 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
239 ASSERT_TRUE(texture_ref != NULL); 247 ASSERT_TRUE(texture_ref != NULL);
240 TestHelper::SetTexParameteriWithExpectations( 248 TestHelper::SetTexParameteriWithExpectations(
241 gl_.get(), error_state_.get(), &manager, texture_ref, 249 gl_.get(), error_state_.get(), &manager, texture_ref,
242 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR); 250 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR);
243 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), 251 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE),
244 texture_ref->texture()->usage()); 252 texture_ref->texture()->usage());
245 manager.Destroy(false); 253 manager.Destroy(false);
246 } 254 }
247 255
248 TEST_F(TextureManagerTest, Destroy) { 256 TEST_F(TextureManagerTest, Destroy) {
249 const GLuint kClient1Id = 1; 257 const GLuint kClient1Id = 1;
250 const GLuint kService1Id = 11; 258 const GLuint kService1Id = 11;
251 TestHelper::SetupTextureManagerInitExpectations( 259 TestHelper::SetupTextureManagerInitExpectations(
252 gl_.get(), "", kUseDefaultTextures); 260 gl_.get(), "", "", kUseDefaultTextures);
253 TextureManager manager(NULL, 261 TextureManager manager(NULL,
254 feature_info_.get(), 262 feature_info_.get(),
255 kMaxTextureSize, 263 kMaxTextureSize,
256 kMaxCubeMapTextureSize, 264 kMaxCubeMapTextureSize,
257 kMaxRectangleTextureSize, 265 kMaxRectangleTextureSize,
258 kMax3DTextureSize, 266 kMax3DTextureSize,
259 kUseDefaultTextures); 267 kUseDefaultTextures);
260 manager.Initialize(); 268 manager.Initialize();
261 // Check we can create texture. 269 // Check we can create texture.
262 manager.CreateTexture(kClient1Id, kService1Id); 270 manager.CreateTexture(kClient1Id, kService1Id);
263 // Check texture got created. 271 // Check texture got created.
264 TextureRef* texture = manager.GetTexture(kClient1Id); 272 TextureRef* texture = manager.GetTexture(kClient1Id);
265 ASSERT_TRUE(texture != NULL); 273 ASSERT_TRUE(texture != NULL);
266 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) 274 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id)))
267 .Times(1) 275 .Times(1)
268 .RetiresOnSaturation(); 276 .RetiresOnSaturation();
269 TestHelper::SetupTextureManagerDestructionExpectations( 277 TestHelper::SetupTextureManagerDestructionExpectations(
270 gl_.get(), "", kUseDefaultTextures); 278 gl_.get(), "", "", kUseDefaultTextures);
271 manager.Destroy(true); 279 manager.Destroy(true);
272 // Check that resources got freed. 280 // Check that resources got freed.
273 texture = manager.GetTexture(kClient1Id); 281 texture = manager.GetTexture(kClient1Id);
274 ASSERT_TRUE(texture == NULL); 282 ASSERT_TRUE(texture == NULL);
275 } 283 }
276 284
277 TEST_F(TextureManagerTest, MaxValues) { 285 TEST_F(TextureManagerTest, MaxValues) {
278 // Check we get the right values for the max sizes. 286 // Check we get the right values for the max sizes.
279 EXPECT_EQ(kMax2dLevels, manager_->MaxLevelsForTarget(GL_TEXTURE_2D)); 287 EXPECT_EQ(kMax2dLevels, manager_->MaxLevelsForTarget(GL_TEXTURE_2D));
280 EXPECT_EQ(kMaxCubeMapLevels, 288 EXPECT_EQ(kMaxCubeMapLevels,
(...skipping 1536 matching lines...) Expand 10 before | Expand all | Expand 10 after
1817 memory_tracker2_ = new CountingMemoryTracker; 1825 memory_tracker2_ = new CountingMemoryTracker;
1818 texture_manager2_.reset( 1826 texture_manager2_.reset(
1819 new TextureManager(memory_tracker2_.get(), 1827 new TextureManager(memory_tracker2_.get(),
1820 feature_info_.get(), 1828 feature_info_.get(),
1821 TextureManagerTest::kMaxTextureSize, 1829 TextureManagerTest::kMaxTextureSize,
1822 TextureManagerTest::kMaxCubeMapTextureSize, 1830 TextureManagerTest::kMaxCubeMapTextureSize,
1823 TextureManagerTest::kMaxRectangleTextureSize, 1831 TextureManagerTest::kMaxRectangleTextureSize,
1824 TextureManagerTest::kMax3DTextureSize, 1832 TextureManagerTest::kMax3DTextureSize,
1825 kUseDefaultTextures)); 1833 kUseDefaultTextures));
1826 TestHelper::SetupTextureManagerInitExpectations( 1834 TestHelper::SetupTextureManagerInitExpectations(
1827 gl_.get(), "", kUseDefaultTextures); 1835 gl_.get(), "", "", kUseDefaultTextures);
1828 texture_manager1_->Initialize(); 1836 texture_manager1_->Initialize();
1829 TestHelper::SetupTextureManagerInitExpectations( 1837 TestHelper::SetupTextureManagerInitExpectations(
1830 gl_.get(), "", kUseDefaultTextures); 1838 gl_.get(), "", "", kUseDefaultTextures);
1831 texture_manager2_->Initialize(); 1839 texture_manager2_->Initialize();
1832 } 1840 }
1833 1841
1834 void TearDown() override { 1842 void TearDown() override {
1835 texture_manager2_->Destroy(false); 1843 texture_manager2_->Destroy(false);
1836 texture_manager2_.reset(); 1844 texture_manager2_.reset();
1837 texture_manager1_->Destroy(false); 1845 texture_manager1_->Destroy(false);
1838 texture_manager1_.reset(); 1846 texture_manager1_.reset();
1839 GpuServiceTest::TearDown(); 1847 GpuServiceTest::TearDown();
1840 } 1848 }
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after
2312 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F); 2320 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F);
2313 ExpectValid(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); 2321 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, 2322 ExpectValid(GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV,
2315 GL_DEPTH32F_STENCIL8); 2323 GL_DEPTH32F_STENCIL8);
2316 2324
2317 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8); 2325 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8);
2318 } 2326 }
2319 2327
2320 } // namespace gles2 2328 } // namespace gles2
2321 } // namespace gpu 2329 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698