OLD | NEW |
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 <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 command_line.AppendSwitch(switches::kEnableUnsafeES3APIs); | 74 command_line.AppendSwitch(switches::kEnableUnsafeES3APIs); |
75 GpuDriverBugWorkarounds gpu_driver_bug_workaround(&command_line); | 75 GpuDriverBugWorkarounds gpu_driver_bug_workaround(&command_line); |
76 feature_info_ = new FeatureInfo(command_line, gpu_driver_bug_workaround); | 76 feature_info_ = new FeatureInfo(command_line, gpu_driver_bug_workaround); |
77 } | 77 } |
78 | 78 |
79 ~TextureManagerTest() override {} | 79 ~TextureManagerTest() override {} |
80 | 80 |
81 protected: | 81 protected: |
82 void SetUp() override { | 82 void SetUp() override { |
83 GpuServiceTest::SetUp(); | 83 GpuServiceTest::SetUp(); |
84 manager_.reset(new TextureManager(NULL, | 84 manager_.reset(new TextureManager( |
85 feature_info_.get(), | 85 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize, |
86 kMaxTextureSize, | 86 kMaxRectangleTextureSize, kMax3DTextureSize, kMaxArrayTextureLayers, |
87 kMaxCubeMapTextureSize, | 87 kUseDefaultTextures, nullptr)); |
88 kMaxRectangleTextureSize, | |
89 kMax3DTextureSize, | |
90 kMaxArrayTextureLayers, | |
91 kUseDefaultTextures)); | |
92 SetupFeatureInfo("", "OpenGL ES 2.0", false); | 88 SetupFeatureInfo("", "OpenGL ES 2.0", false); |
93 TestHelper::SetupTextureManagerInitExpectations( | 89 TestHelper::SetupTextureManagerInitExpectations( |
94 gl_.get(), false, false, false, "", kUseDefaultTextures); | 90 gl_.get(), false, false, false, "", kUseDefaultTextures); |
95 manager_->Initialize(); | 91 manager_->Initialize(); |
96 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); | 92 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); |
97 } | 93 } |
98 | 94 |
99 void TearDown() override { | 95 void TearDown() override { |
100 manager_->Destroy(false); | 96 manager_->Destroy(false); |
101 manager_.reset(); | 97 manager_.reset(); |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_t()); | 237 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_t()); |
242 SetParameter(texture_ref, GL_TEXTURE_MAX_ANISOTROPY_EXT, 0, GL_INVALID_VALUE); | 238 SetParameter(texture_ref, GL_TEXTURE_MAX_ANISOTROPY_EXT, 0, GL_INVALID_VALUE); |
243 SetParameter(texture_ref, GL_TEXTURE_IMMUTABLE_FORMAT, 0, GL_INVALID_ENUM); | 239 SetParameter(texture_ref, GL_TEXTURE_IMMUTABLE_FORMAT, 0, GL_INVALID_ENUM); |
244 SetParameter(texture_ref, GL_TEXTURE_IMMUTABLE_LEVELS, 0, GL_INVALID_ENUM); | 240 SetParameter(texture_ref, GL_TEXTURE_IMMUTABLE_LEVELS, 0, GL_INVALID_ENUM); |
245 } | 241 } |
246 | 242 |
247 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) { | 243 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) { |
248 bool use_default_textures = true; | 244 bool use_default_textures = true; |
249 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), | 245 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), |
250 false, false, false, "GL_ANGLE_texture_usage", use_default_textures); | 246 false, false, false, "GL_ANGLE_texture_usage", use_default_textures); |
251 TextureManager manager(NULL, | 247 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize, |
252 feature_info_.get(), | 248 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, |
253 kMaxTextureSize, | 249 kMax3DTextureSize, kMaxArrayTextureLayers, |
254 kMaxCubeMapTextureSize, | 250 use_default_textures, nullptr); |
255 kMaxRectangleTextureSize, | |
256 kMax3DTextureSize, | |
257 kMaxArrayTextureLayers, | |
258 use_default_textures); | |
259 manager.Initialize(); | 251 manager.Initialize(); |
260 | 252 |
261 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL); | 253 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL); |
262 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL); | 254 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL); |
263 | 255 |
264 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. | 256 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. |
265 | 257 |
266 manager.Destroy(false); | 258 manager.Destroy(false); |
267 } | 259 } |
268 | 260 |
269 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) { | 261 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) { |
270 bool use_default_textures = false; | 262 bool use_default_textures = false; |
271 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), | 263 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), |
272 false, false, false, "GL_ANGLE_texture_usage", use_default_textures); | 264 false, false, false, "GL_ANGLE_texture_usage", use_default_textures); |
273 TextureManager manager(NULL, | 265 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize, |
274 feature_info_.get(), | 266 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, |
275 kMaxTextureSize, | 267 kMax3DTextureSize, kMaxArrayTextureLayers, |
276 kMaxCubeMapTextureSize, | 268 use_default_textures, nullptr); |
277 kMaxRectangleTextureSize, | |
278 kMax3DTextureSize, | |
279 kMaxArrayTextureLayers, | |
280 use_default_textures); | |
281 manager.Initialize(); | 269 manager.Initialize(); |
282 | 270 |
283 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL); | 271 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL); |
284 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL); | 272 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL); |
285 | 273 |
286 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. | 274 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. |
287 | 275 |
288 manager.Destroy(false); | 276 manager.Destroy(false); |
289 } | 277 } |
290 | 278 |
291 TEST_F(TextureManagerTest, UseDefaultTexturesTrueES3) { | 279 TEST_F(TextureManagerTest, UseDefaultTexturesTrueES3) { |
292 bool use_default_textures = true; | 280 bool use_default_textures = true; |
293 SetupFeatureInfo("", "OpenGL ES 3.0", true); | 281 SetupFeatureInfo("", "OpenGL ES 3.0", true); |
294 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), | 282 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), |
295 true, true, false, "", use_default_textures); | 283 true, true, false, "", use_default_textures); |
296 TextureManager manager(NULL, | 284 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize, |
297 feature_info_.get(), | 285 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, |
298 kMaxTextureSize, | 286 kMax3DTextureSize, kMaxArrayTextureLayers, |
299 kMaxCubeMapTextureSize, | 287 use_default_textures, nullptr); |
300 kMaxRectangleTextureSize, | |
301 kMax3DTextureSize, | |
302 kMaxArrayTextureLayers, | |
303 use_default_textures); | |
304 manager.Initialize(); | 288 manager.Initialize(); |
305 | 289 |
306 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) != NULL); | 290 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) != NULL); |
307 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) != NULL); | 291 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) != NULL); |
308 | 292 |
309 manager.Destroy(false); | 293 manager.Destroy(false); |
310 } | 294 } |
311 | 295 |
312 TEST_F(TextureManagerTest, UseDefaultTexturesFalseES3) { | 296 TEST_F(TextureManagerTest, UseDefaultTexturesFalseES3) { |
313 bool use_default_textures = false; | 297 bool use_default_textures = false; |
314 SetupFeatureInfo("", "OpenGL ES 3.0", true); | 298 SetupFeatureInfo("", "OpenGL ES 3.0", true); |
315 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), | 299 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), |
316 true, true, false, "", use_default_textures); | 300 true, true, false, "", use_default_textures); |
317 TextureManager manager(NULL, | 301 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize, |
318 feature_info_.get(), | 302 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, |
319 kMaxTextureSize, | 303 kMax3DTextureSize, kMaxArrayTextureLayers, |
320 kMaxCubeMapTextureSize, | 304 use_default_textures, nullptr); |
321 kMaxRectangleTextureSize, | |
322 kMax3DTextureSize, | |
323 kMaxArrayTextureLayers, | |
324 use_default_textures); | |
325 manager.Initialize(); | 305 manager.Initialize(); |
326 | 306 |
327 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) == NULL); | 307 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) == NULL); |
328 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) == NULL); | 308 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) == NULL); |
329 | 309 |
330 manager.Destroy(false); | 310 manager.Destroy(false); |
331 } | 311 } |
332 | 312 |
333 TEST_F(TextureManagerTest, TextureUsageExt) { | 313 TEST_F(TextureManagerTest, TextureUsageExt) { |
334 TestHelper::SetupTextureManagerInitExpectations( | 314 TestHelper::SetupTextureManagerInitExpectations( |
335 gl_.get(), false, false, false, "GL_ANGLE_texture_usage", | 315 gl_.get(), false, false, false, "GL_ANGLE_texture_usage", |
336 kUseDefaultTextures); | 316 kUseDefaultTextures); |
337 TextureManager manager(NULL, | 317 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize, |
338 feature_info_.get(), | 318 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, |
339 kMaxTextureSize, | 319 kMax3DTextureSize, kMaxArrayTextureLayers, |
340 kMaxCubeMapTextureSize, | 320 kUseDefaultTextures, nullptr); |
341 kMaxRectangleTextureSize, | |
342 kMax3DTextureSize, | |
343 kMaxArrayTextureLayers, | |
344 kUseDefaultTextures); | |
345 manager.Initialize(); | 321 manager.Initialize(); |
346 const GLuint kClient1Id = 1; | 322 const GLuint kClient1Id = 1; |
347 const GLuint kService1Id = 11; | 323 const GLuint kService1Id = 11; |
348 // Check we can create texture. | 324 // Check we can create texture. |
349 manager.CreateTexture(kClient1Id, kService1Id); | 325 manager.CreateTexture(kClient1Id, kService1Id); |
350 // Check texture got created. | 326 // Check texture got created. |
351 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 327 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
352 ASSERT_TRUE(texture_ref != NULL); | 328 ASSERT_TRUE(texture_ref != NULL); |
353 TestHelper::SetTexParameteriWithExpectations( | 329 TestHelper::SetTexParameteriWithExpectations( |
354 gl_.get(), error_state_.get(), &manager, texture_ref, | 330 gl_.get(), error_state_.get(), &manager, texture_ref, |
355 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR); | 331 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR); |
356 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), | 332 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), |
357 texture_ref->texture()->usage()); | 333 texture_ref->texture()->usage()); |
358 manager.Destroy(false); | 334 manager.Destroy(false); |
359 } | 335 } |
360 | 336 |
361 TEST_F(TextureManagerTest, Destroy) { | 337 TEST_F(TextureManagerTest, Destroy) { |
362 const GLuint kClient1Id = 1; | 338 const GLuint kClient1Id = 1; |
363 const GLuint kService1Id = 11; | 339 const GLuint kService1Id = 11; |
364 TestHelper::SetupTextureManagerInitExpectations( | 340 TestHelper::SetupTextureManagerInitExpectations( |
365 gl_.get(), false, false, false, "", kUseDefaultTextures); | 341 gl_.get(), false, false, false, "", kUseDefaultTextures); |
366 TextureManager manager(NULL, | 342 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize, |
367 feature_info_.get(), | 343 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, |
368 kMaxTextureSize, | 344 kMax3DTextureSize, kMaxArrayTextureLayers, |
369 kMaxCubeMapTextureSize, | 345 kUseDefaultTextures, nullptr); |
370 kMaxRectangleTextureSize, | |
371 kMax3DTextureSize, | |
372 kMaxArrayTextureLayers, | |
373 kUseDefaultTextures); | |
374 manager.Initialize(); | 346 manager.Initialize(); |
375 // Check we can create texture. | 347 // Check we can create texture. |
376 manager.CreateTexture(kClient1Id, kService1Id); | 348 manager.CreateTexture(kClient1Id, kService1Id); |
377 // Check texture got created. | 349 // Check texture got created. |
378 TextureRef* texture = manager.GetTexture(kClient1Id); | 350 TextureRef* texture = manager.GetTexture(kClient1Id); |
379 ASSERT_TRUE(texture != NULL); | 351 ASSERT_TRUE(texture != NULL); |
380 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) | 352 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) |
381 .Times(1) | 353 .Times(1) |
382 .RetiresOnSaturation(); | 354 .RetiresOnSaturation(); |
383 TestHelper::SetupTextureManagerDestructionExpectations( | 355 TestHelper::SetupTextureManagerDestructionExpectations( |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 (kMaxCubeMapTextureSize >> level) * 2, | 487 (kMaxCubeMapTextureSize >> level) * 2, |
516 1)); | 488 1)); |
517 } | 489 } |
518 } | 490 } |
519 | 491 |
520 TEST_F(TextureManagerTest, ValidForTargetNPOT) { | 492 TEST_F(TextureManagerTest, ValidForTargetNPOT) { |
521 TestHelper::SetupFeatureInfoInitExpectations( | 493 TestHelper::SetupFeatureInfoInitExpectations( |
522 gl_.get(), "GL_OES_texture_npot"); | 494 gl_.get(), "GL_OES_texture_npot"); |
523 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 495 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
524 feature_info->InitializeForTesting(); | 496 feature_info->InitializeForTesting(); |
525 TextureManager manager(NULL, | 497 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize, |
526 feature_info.get(), | 498 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, |
527 kMaxTextureSize, | 499 kMax3DTextureSize, kMaxArrayTextureLayers, |
528 kMaxCubeMapTextureSize, | 500 kUseDefaultTextures, nullptr); |
529 kMaxRectangleTextureSize, | |
530 kMax3DTextureSize, | |
531 kMaxArrayTextureLayers, | |
532 kUseDefaultTextures); | |
533 // Check NPOT width on level 0 | 501 // Check NPOT width on level 0 |
534 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1)); | 502 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1)); |
535 // Check NPOT height on level 0 | 503 // Check NPOT height on level 0 |
536 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1)); | 504 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1)); |
537 // Check NPOT width on level 1 | 505 // Check NPOT width on level 1 |
538 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1)); | 506 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1)); |
539 // Check NPOT height on level 1 | 507 // Check NPOT height on level 1 |
540 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 2, 5, 1)); | 508 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 2, 5, 1)); |
541 manager.Destroy(false); | 509 manager.Destroy(false); |
542 } | 510 } |
543 | 511 |
544 TEST_F(TextureManagerTest, AlphaLuminanceCompatibilityProfile) { | 512 TEST_F(TextureManagerTest, AlphaLuminanceCompatibilityProfile) { |
545 const GLuint kClientId = 1; | 513 const GLuint kClientId = 1; |
546 const GLuint kServiceId = 11; | 514 const GLuint kServiceId = 11; |
547 | 515 |
548 SetupFeatureInfo("", "2.1", false); | 516 SetupFeatureInfo("", "2.1", false); |
549 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), false, false, | 517 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), false, false, |
550 false, "", kUseDefaultTextures); | 518 false, "", kUseDefaultTextures); |
551 TextureManager manager(NULL, | 519 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize, |
552 feature_info_.get(), | 520 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, |
553 kMaxTextureSize, | 521 kMax3DTextureSize, kMaxArrayTextureLayers, |
554 kMaxCubeMapTextureSize, | 522 kUseDefaultTextures, nullptr); |
555 kMaxRectangleTextureSize, | |
556 kMax3DTextureSize, | |
557 kMaxArrayTextureLayers, | |
558 kUseDefaultTextures); | |
559 manager.Initialize(); | 523 manager.Initialize(); |
560 | 524 |
561 // Create a texture. | 525 // Create a texture. |
562 manager.CreateTexture(kClientId, kServiceId); | 526 manager.CreateTexture(kClientId, kServiceId); |
563 scoped_refptr<TextureRef> texture_ref(manager.GetTexture(kClientId)); | 527 scoped_refptr<TextureRef> texture_ref(manager.GetTexture(kClientId)); |
564 manager.SetTarget(texture_ref.get(), GL_TEXTURE_2D); | 528 manager.SetTarget(texture_ref.get(), GL_TEXTURE_2D); |
565 | 529 |
566 Texture* texture = texture_ref->texture(); | 530 Texture* texture = texture_ref->texture(); |
567 | 531 |
568 // GL_ALPHA emulation | 532 // GL_ALPHA emulation |
(...skipping 17 matching lines...) Expand all Loading... |
586 manager.RemoveTexture(kClientId); | 550 manager.RemoveTexture(kClientId); |
587 } | 551 } |
588 | 552 |
589 TEST_F(TextureManagerTest, AlphaLuminanceCoreProfileEmulation) { | 553 TEST_F(TextureManagerTest, AlphaLuminanceCoreProfileEmulation) { |
590 const GLuint kClientId = 1; | 554 const GLuint kClientId = 1; |
591 const GLuint kServiceId = 11; | 555 const GLuint kServiceId = 11; |
592 | 556 |
593 SetupFeatureInfo("", "4.2", true); | 557 SetupFeatureInfo("", "4.2", true); |
594 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), true, true, true, | 558 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), true, true, true, |
595 "", kUseDefaultTextures); | 559 "", kUseDefaultTextures); |
596 TextureManager manager(NULL, | 560 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize, |
597 feature_info_.get(), | 561 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, |
598 kMaxTextureSize, | 562 kMax3DTextureSize, kMaxArrayTextureLayers, |
599 kMaxCubeMapTextureSize, | 563 kUseDefaultTextures, nullptr); |
600 kMaxRectangleTextureSize, | |
601 kMax3DTextureSize, | |
602 kMaxArrayTextureLayers, | |
603 kUseDefaultTextures); | |
604 manager.Initialize(); | 564 manager.Initialize(); |
605 | 565 |
606 // Create a texture. | 566 // Create a texture. |
607 manager.CreateTexture(kClientId, kServiceId); | 567 manager.CreateTexture(kClientId, kServiceId); |
608 scoped_refptr<TextureRef> texture_ref(manager.GetTexture(kClientId)); | 568 scoped_refptr<TextureRef> texture_ref(manager.GetTexture(kClientId)); |
609 manager.SetTarget(texture_ref.get(), GL_TEXTURE_2D); | 569 manager.SetTarget(texture_ref.get(), GL_TEXTURE_2D); |
610 | 570 |
611 Texture* texture = texture_ref->texture(); | 571 Texture* texture = texture_ref->texture(); |
612 | 572 |
613 // GL_ALPHA emulation | 573 // GL_ALPHA emulation |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
705 } | 665 } |
706 ~TextureTestBase() override { texture_ref_ = NULL; } | 666 ~TextureTestBase() override { texture_ref_ = NULL; } |
707 | 667 |
708 protected: | 668 protected: |
709 void SetUpBase(MemoryTracker* memory_tracker, const std::string& extensions) { | 669 void SetUpBase(MemoryTracker* memory_tracker, const std::string& extensions) { |
710 GpuServiceTest::SetUp(); | 670 GpuServiceTest::SetUp(); |
711 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), | 671 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), |
712 extensions.c_str()); | 672 extensions.c_str()); |
713 feature_info_->InitializeForTesting(); | 673 feature_info_->InitializeForTesting(); |
714 | 674 |
715 manager_.reset(new TextureManager(memory_tracker, | 675 manager_.reset(new TextureManager( |
716 feature_info_.get(), | 676 memory_tracker, feature_info_.get(), kMaxTextureSize, |
717 kMaxTextureSize, | 677 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, kMax3DTextureSize, |
718 kMaxCubeMapTextureSize, | 678 kMaxArrayTextureLayers, kUseDefaultTextures, nullptr)); |
719 kMaxRectangleTextureSize, | |
720 kMax3DTextureSize, | |
721 kMaxArrayTextureLayers, | |
722 kUseDefaultTextures)); | |
723 decoder_.reset(new ::testing::StrictMock<gles2::MockGLES2Decoder>()); | 679 decoder_.reset(new ::testing::StrictMock<gles2::MockGLES2Decoder>()); |
724 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); | 680 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); |
725 manager_->CreateTexture(kClient1Id, kService1Id); | 681 manager_->CreateTexture(kClient1Id, kService1Id); |
726 texture_ref_ = manager_->GetTexture(kClient1Id); | 682 texture_ref_ = manager_->GetTexture(kClient1Id); |
727 ASSERT_TRUE(texture_ref_.get() != NULL); | 683 ASSERT_TRUE(texture_ref_.get() != NULL); |
728 } | 684 } |
729 | 685 |
730 void TearDown() override { | 686 void TearDown() override { |
731 if (texture_ref_.get()) { | 687 if (texture_ref_.get()) { |
732 // If it's not in the manager then setting texture_ref_ to NULL will | 688 // If it's not in the manager then setting texture_ref_ to NULL will |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1011 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 967 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
1012 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 968 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
1013 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 969 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
1014 } | 970 } |
1015 | 971 |
1016 TEST_F(TextureTest, NPOT2DNPOTOK) { | 972 TEST_F(TextureTest, NPOT2DNPOTOK) { |
1017 TestHelper::SetupFeatureInfoInitExpectations( | 973 TestHelper::SetupFeatureInfoInitExpectations( |
1018 gl_.get(), "GL_OES_texture_npot"); | 974 gl_.get(), "GL_OES_texture_npot"); |
1019 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 975 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
1020 feature_info->InitializeForTesting(); | 976 feature_info->InitializeForTesting(); |
1021 TextureManager manager(NULL, | 977 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize, |
1022 feature_info.get(), | 978 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, |
1023 kMaxTextureSize, | 979 kMax3DTextureSize, kMaxArrayTextureLayers, |
1024 kMaxCubeMapTextureSize, | 980 kUseDefaultTextures, nullptr); |
1025 kMaxRectangleTextureSize, | |
1026 kMax3DTextureSize, | |
1027 kMaxArrayTextureLayers, | |
1028 kUseDefaultTextures); | |
1029 manager.CreateTexture(kClient1Id, kService1Id); | 981 manager.CreateTexture(kClient1Id, kService1Id); |
1030 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 982 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
1031 ASSERT_TRUE(texture_ref != NULL); | 983 ASSERT_TRUE(texture_ref != NULL); |
1032 Texture* texture = texture_ref->texture(); | 984 Texture* texture = texture_ref->texture(); |
1033 | 985 |
1034 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 986 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
1035 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 987 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
1036 // Check Setting level 0 to NPOT | 988 // Check Setting level 0 to NPOT |
1037 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, | 989 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, |
1038 GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5)); | 990 GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5)); |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1313 EXPECT_TRUE(texture->ValidForTexture(GL_TEXTURE_2D, 1, 1, 1, 1, 2, 3, 4)); | 1265 EXPECT_TRUE(texture->ValidForTexture(GL_TEXTURE_2D, 1, 1, 1, 1, 2, 3, 4)); |
1314 manager_->RemoveTexture(kClient1Id); | 1266 manager_->RemoveTexture(kClient1Id); |
1315 EXPECT_TRUE(texture->ValidForTexture(GL_TEXTURE_2D, 1, 0, 0, 0, 4, 5, 6)); | 1267 EXPECT_TRUE(texture->ValidForTexture(GL_TEXTURE_2D, 1, 0, 0, 0, 4, 5, 6)); |
1316 } | 1268 } |
1317 | 1269 |
1318 TEST_F(TextureTest, FloatNotLinear) { | 1270 TEST_F(TextureTest, FloatNotLinear) { |
1319 TestHelper::SetupFeatureInfoInitExpectations( | 1271 TestHelper::SetupFeatureInfoInitExpectations( |
1320 gl_.get(), "GL_OES_texture_float"); | 1272 gl_.get(), "GL_OES_texture_float"); |
1321 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1273 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
1322 feature_info->InitializeForTesting(); | 1274 feature_info->InitializeForTesting(); |
1323 TextureManager manager(NULL, | 1275 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize, |
1324 feature_info.get(), | 1276 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, |
1325 kMaxTextureSize, | 1277 kMax3DTextureSize, kMaxArrayTextureLayers, |
1326 kMaxCubeMapTextureSize, | 1278 kUseDefaultTextures, nullptr); |
1327 kMaxRectangleTextureSize, | |
1328 kMax3DTextureSize, | |
1329 kMaxArrayTextureLayers, | |
1330 kUseDefaultTextures); | |
1331 manager.CreateTexture(kClient1Id, kService1Id); | 1279 manager.CreateTexture(kClient1Id, kService1Id); |
1332 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1280 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
1333 ASSERT_TRUE(texture_ref != NULL); | 1281 ASSERT_TRUE(texture_ref != NULL); |
1334 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1282 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
1335 Texture* texture = texture_ref->texture(); | 1283 Texture* texture = texture_ref->texture(); |
1336 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1284 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
1337 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, | 1285 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, |
1338 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1)); | 1286 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1)); |
1339 EXPECT_FALSE(manager.CanRender(texture_ref)); | 1287 EXPECT_FALSE(manager.CanRender(texture_ref)); |
1340 TestHelper::SetTexParameteriWithExpectations( | 1288 TestHelper::SetTexParameteriWithExpectations( |
1341 gl_.get(), error_state_.get(), &manager, | 1289 gl_.get(), error_state_.get(), &manager, |
1342 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); | 1290 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); |
1343 EXPECT_FALSE(manager.CanRender(texture_ref)); | 1291 EXPECT_FALSE(manager.CanRender(texture_ref)); |
1344 TestHelper::SetTexParameteriWithExpectations( | 1292 TestHelper::SetTexParameteriWithExpectations( |
1345 gl_.get(), error_state_.get(), &manager, texture_ref, | 1293 gl_.get(), error_state_.get(), &manager, texture_ref, |
1346 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR); | 1294 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR); |
1347 EXPECT_TRUE(manager.CanRender(texture_ref)); | 1295 EXPECT_TRUE(manager.CanRender(texture_ref)); |
1348 manager.Destroy(false); | 1296 manager.Destroy(false); |
1349 } | 1297 } |
1350 | 1298 |
1351 TEST_F(TextureTest, FloatLinear) { | 1299 TEST_F(TextureTest, FloatLinear) { |
1352 TestHelper::SetupFeatureInfoInitExpectations( | 1300 TestHelper::SetupFeatureInfoInitExpectations( |
1353 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear"); | 1301 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear"); |
1354 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1302 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
1355 feature_info->InitializeForTesting(); | 1303 feature_info->InitializeForTesting(); |
1356 TextureManager manager(NULL, | 1304 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize, |
1357 feature_info.get(), | 1305 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, |
1358 kMaxTextureSize, | 1306 kMax3DTextureSize, kMaxArrayTextureLayers, |
1359 kMaxCubeMapTextureSize, | 1307 kUseDefaultTextures, nullptr); |
1360 kMaxRectangleTextureSize, | |
1361 kMax3DTextureSize, | |
1362 kMaxArrayTextureLayers, | |
1363 kUseDefaultTextures); | |
1364 manager.CreateTexture(kClient1Id, kService1Id); | 1308 manager.CreateTexture(kClient1Id, kService1Id); |
1365 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1309 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
1366 ASSERT_TRUE(texture_ref != NULL); | 1310 ASSERT_TRUE(texture_ref != NULL); |
1367 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1311 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
1368 Texture* texture = texture_ref->texture(); | 1312 Texture* texture = texture_ref->texture(); |
1369 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1313 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
1370 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, | 1314 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, |
1371 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1)); | 1315 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1)); |
1372 EXPECT_TRUE(manager.CanRender(texture_ref)); | 1316 EXPECT_TRUE(manager.CanRender(texture_ref)); |
1373 manager.Destroy(false); | 1317 manager.Destroy(false); |
1374 } | 1318 } |
1375 | 1319 |
1376 TEST_F(TextureTest, HalfFloatNotLinear) { | 1320 TEST_F(TextureTest, HalfFloatNotLinear) { |
1377 TestHelper::SetupFeatureInfoInitExpectations( | 1321 TestHelper::SetupFeatureInfoInitExpectations( |
1378 gl_.get(), "GL_OES_texture_half_float"); | 1322 gl_.get(), "GL_OES_texture_half_float"); |
1379 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1323 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
1380 feature_info->InitializeForTesting(); | 1324 feature_info->InitializeForTesting(); |
1381 TextureManager manager(NULL, | 1325 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize, |
1382 feature_info.get(), | 1326 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, |
1383 kMaxTextureSize, | 1327 kMax3DTextureSize, kMaxArrayTextureLayers, |
1384 kMaxCubeMapTextureSize, | 1328 kUseDefaultTextures, nullptr); |
1385 kMaxRectangleTextureSize, | |
1386 kMax3DTextureSize, | |
1387 kMaxArrayTextureLayers, | |
1388 kUseDefaultTextures); | |
1389 manager.CreateTexture(kClient1Id, kService1Id); | 1329 manager.CreateTexture(kClient1Id, kService1Id); |
1390 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1330 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
1391 ASSERT_TRUE(texture_ref != NULL); | 1331 ASSERT_TRUE(texture_ref != NULL); |
1392 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1332 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
1393 Texture* texture = texture_ref->texture(); | 1333 Texture* texture = texture_ref->texture(); |
1394 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1334 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
1395 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, | 1335 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, |
1396 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1)); | 1336 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1)); |
1397 EXPECT_FALSE(manager.CanRender(texture_ref)); | 1337 EXPECT_FALSE(manager.CanRender(texture_ref)); |
1398 TestHelper::SetTexParameteriWithExpectations( | 1338 TestHelper::SetTexParameteriWithExpectations( |
1399 gl_.get(), error_state_.get(), &manager, | 1339 gl_.get(), error_state_.get(), &manager, |
1400 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); | 1340 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); |
1401 EXPECT_FALSE(manager.CanRender(texture_ref)); | 1341 EXPECT_FALSE(manager.CanRender(texture_ref)); |
1402 TestHelper::SetTexParameteriWithExpectations( | 1342 TestHelper::SetTexParameteriWithExpectations( |
1403 gl_.get(), error_state_.get(), &manager, texture_ref, | 1343 gl_.get(), error_state_.get(), &manager, texture_ref, |
1404 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR); | 1344 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR); |
1405 EXPECT_TRUE(manager.CanRender(texture_ref)); | 1345 EXPECT_TRUE(manager.CanRender(texture_ref)); |
1406 manager.Destroy(false); | 1346 manager.Destroy(false); |
1407 } | 1347 } |
1408 | 1348 |
1409 TEST_F(TextureTest, HalfFloatLinear) { | 1349 TEST_F(TextureTest, HalfFloatLinear) { |
1410 TestHelper::SetupFeatureInfoInitExpectations( | 1350 TestHelper::SetupFeatureInfoInitExpectations( |
1411 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); | 1351 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); |
1412 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1352 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
1413 feature_info->InitializeForTesting(); | 1353 feature_info->InitializeForTesting(); |
1414 TextureManager manager(NULL, | 1354 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize, |
1415 feature_info.get(), | 1355 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, |
1416 kMaxTextureSize, | 1356 kMax3DTextureSize, kMaxArrayTextureLayers, |
1417 kMaxCubeMapTextureSize, | 1357 kUseDefaultTextures, nullptr); |
1418 kMaxRectangleTextureSize, | |
1419 kMax3DTextureSize, | |
1420 kMaxArrayTextureLayers, | |
1421 kUseDefaultTextures); | |
1422 manager.CreateTexture(kClient1Id, kService1Id); | 1358 manager.CreateTexture(kClient1Id, kService1Id); |
1423 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1359 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
1424 ASSERT_TRUE(texture_ref != NULL); | 1360 ASSERT_TRUE(texture_ref != NULL); |
1425 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1361 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
1426 Texture* texture = texture_ref->texture(); | 1362 Texture* texture = texture_ref->texture(); |
1427 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1363 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
1428 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, | 1364 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, |
1429 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1)); | 1365 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1)); |
1430 EXPECT_TRUE(manager.CanRender(texture_ref)); | 1366 EXPECT_TRUE(manager.CanRender(texture_ref)); |
1431 manager.Destroy(false); | 1367 manager.Destroy(false); |
1432 } | 1368 } |
1433 | 1369 |
1434 TEST_F(TextureTest, EGLImageExternal) { | 1370 TEST_F(TextureTest, EGLImageExternal) { |
1435 TestHelper::SetupFeatureInfoInitExpectations( | 1371 TestHelper::SetupFeatureInfoInitExpectations( |
1436 gl_.get(), "GL_OES_EGL_image_external"); | 1372 gl_.get(), "GL_OES_EGL_image_external"); |
1437 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1373 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
1438 feature_info->InitializeForTesting(); | 1374 feature_info->InitializeForTesting(); |
1439 TextureManager manager(NULL, | 1375 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize, |
1440 feature_info.get(), | 1376 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, |
1441 kMaxTextureSize, | 1377 kMax3DTextureSize, kMaxArrayTextureLayers, |
1442 kMaxCubeMapTextureSize, | 1378 kUseDefaultTextures, nullptr); |
1443 kMaxRectangleTextureSize, | |
1444 kMax3DTextureSize, | |
1445 kMaxArrayTextureLayers, | |
1446 kUseDefaultTextures); | |
1447 manager.CreateTexture(kClient1Id, kService1Id); | 1379 manager.CreateTexture(kClient1Id, kService1Id); |
1448 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1380 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
1449 ASSERT_TRUE(texture_ref != NULL); | 1381 ASSERT_TRUE(texture_ref != NULL); |
1450 manager.SetTarget(texture_ref, GL_TEXTURE_EXTERNAL_OES); | 1382 manager.SetTarget(texture_ref, GL_TEXTURE_EXTERNAL_OES); |
1451 Texture* texture = texture_ref->texture(); | 1383 Texture* texture = texture_ref->texture(); |
1452 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target()); | 1384 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target()); |
1453 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); | 1385 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); |
1454 manager.Destroy(false); | 1386 manager.Destroy(false); |
1455 } | 1387 } |
1456 | 1388 |
1457 TEST_F(TextureTest, DepthTexture) { | 1389 TEST_F(TextureTest, DepthTexture) { |
1458 TestHelper::SetupFeatureInfoInitExpectations( | 1390 TestHelper::SetupFeatureInfoInitExpectations( |
1459 gl_.get(), "GL_ANGLE_depth_texture"); | 1391 gl_.get(), "GL_ANGLE_depth_texture"); |
1460 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1392 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
1461 feature_info->InitializeForTesting(); | 1393 feature_info->InitializeForTesting(); |
1462 TextureManager manager(NULL, | 1394 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize, |
1463 feature_info.get(), | 1395 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, |
1464 kMaxTextureSize, | 1396 kMax3DTextureSize, kMaxArrayTextureLayers, |
1465 kMaxCubeMapTextureSize, | 1397 kUseDefaultTextures, nullptr); |
1466 kMaxRectangleTextureSize, | |
1467 kMax3DTextureSize, | |
1468 kMaxArrayTextureLayers, | |
1469 kUseDefaultTextures); | |
1470 manager.CreateTexture(kClient1Id, kService1Id); | 1398 manager.CreateTexture(kClient1Id, kService1Id); |
1471 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1399 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
1472 ASSERT_TRUE(texture_ref != NULL); | 1400 ASSERT_TRUE(texture_ref != NULL); |
1473 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1401 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
1474 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4, | 1402 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4, |
1475 1, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, gfx::Rect()); | 1403 1, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, gfx::Rect()); |
1476 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); | 1404 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); |
1477 manager.Destroy(false); | 1405 manager.Destroy(false); |
1478 } | 1406 } |
1479 | 1407 |
(...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2229 static const bool kUseDefaultTextures = false; | 2157 static const bool kUseDefaultTextures = false; |
2230 | 2158 |
2231 SharedTextureTest() : feature_info_(new FeatureInfo()) {} | 2159 SharedTextureTest() : feature_info_(new FeatureInfo()) {} |
2232 | 2160 |
2233 ~SharedTextureTest() override {} | 2161 ~SharedTextureTest() override {} |
2234 | 2162 |
2235 void SetUp() override { | 2163 void SetUp() override { |
2236 GpuServiceTest::SetUp(); | 2164 GpuServiceTest::SetUp(); |
2237 memory_tracker1_ = new CountingMemoryTracker; | 2165 memory_tracker1_ = new CountingMemoryTracker; |
2238 texture_manager1_.reset( | 2166 texture_manager1_.reset( |
2239 new TextureManager(memory_tracker1_.get(), | 2167 new TextureManager(memory_tracker1_.get(), feature_info_.get(), |
2240 feature_info_.get(), | |
2241 TextureManagerTest::kMaxTextureSize, | 2168 TextureManagerTest::kMaxTextureSize, |
2242 TextureManagerTest::kMaxCubeMapTextureSize, | 2169 TextureManagerTest::kMaxCubeMapTextureSize, |
2243 TextureManagerTest::kMaxRectangleTextureSize, | 2170 TextureManagerTest::kMaxRectangleTextureSize, |
2244 TextureManagerTest::kMax3DTextureSize, | 2171 TextureManagerTest::kMax3DTextureSize, |
2245 TextureManagerTest::kMaxArrayTextureLayers, | 2172 TextureManagerTest::kMaxArrayTextureLayers, |
2246 kUseDefaultTextures)); | 2173 kUseDefaultTextures, nullptr)); |
2247 memory_tracker2_ = new CountingMemoryTracker; | 2174 memory_tracker2_ = new CountingMemoryTracker; |
2248 texture_manager2_.reset( | 2175 texture_manager2_.reset( |
2249 new TextureManager(memory_tracker2_.get(), | 2176 new TextureManager(memory_tracker2_.get(), feature_info_.get(), |
2250 feature_info_.get(), | |
2251 TextureManagerTest::kMaxTextureSize, | 2177 TextureManagerTest::kMaxTextureSize, |
2252 TextureManagerTest::kMaxCubeMapTextureSize, | 2178 TextureManagerTest::kMaxCubeMapTextureSize, |
2253 TextureManagerTest::kMaxRectangleTextureSize, | 2179 TextureManagerTest::kMaxRectangleTextureSize, |
2254 TextureManagerTest::kMax3DTextureSize, | 2180 TextureManagerTest::kMax3DTextureSize, |
2255 TextureManagerTest::kMaxArrayTextureLayers, | 2181 TextureManagerTest::kMaxArrayTextureLayers, |
2256 kUseDefaultTextures)); | 2182 kUseDefaultTextures, nullptr)); |
2257 SetupFeatureInfo("", "OpenGL ES 2.0", false); | 2183 SetupFeatureInfo("", "OpenGL ES 2.0", false); |
2258 TestHelper::SetupTextureManagerInitExpectations( | 2184 TestHelper::SetupTextureManagerInitExpectations( |
2259 gl_.get(), false, false, false, "", kUseDefaultTextures); | 2185 gl_.get(), false, false, false, "", kUseDefaultTextures); |
2260 texture_manager1_->Initialize(); | 2186 texture_manager1_->Initialize(); |
2261 TestHelper::SetupTextureManagerInitExpectations( | 2187 TestHelper::SetupTextureManagerInitExpectations( |
2262 gl_.get(), false, false, false, "", kUseDefaultTextures); | 2188 gl_.get(), false, false, false, "", kUseDefaultTextures); |
2263 texture_manager2_->Initialize(); | 2189 texture_manager2_->Initialize(); |
2264 } | 2190 } |
2265 | 2191 |
2266 void TearDown() override { | 2192 void TearDown() override { |
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2768 ExpectValid( | 2694 ExpectValid( |
2769 true, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); | 2695 true, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); |
2770 ExpectValid(true, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, | 2696 ExpectValid(true, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, |
2771 GL_DEPTH32F_STENCIL8); | 2697 GL_DEPTH32F_STENCIL8); |
2772 | 2698 |
2773 ExpectInvalid(true, GL_RGB_INTEGER, GL_INT, GL_RGBA8); | 2699 ExpectInvalid(true, GL_RGB_INTEGER, GL_INT, GL_RGBA8); |
2774 } | 2700 } |
2775 | 2701 |
2776 } // namespace gles2 | 2702 } // namespace gles2 |
2777 } // namespace gpu | 2703 } // namespace gpu |
OLD | NEW |