| 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 |