| 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 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 return texture->owned_service_id(); | 52 return texture->owned_service_id(); |
| 53 } | 53 } |
| 54 }; | 54 }; |
| 55 | 55 |
| 56 class TextureManagerTest : public GpuServiceTest { | 56 class TextureManagerTest : public GpuServiceTest { |
| 57 public: | 57 public: |
| 58 static const GLint kMaxTextureSize = 32; | 58 static const GLint kMaxTextureSize = 32; |
| 59 static const GLint kMaxCubeMapTextureSize = 8; | 59 static const GLint kMaxCubeMapTextureSize = 8; |
| 60 static const GLint kMaxRectangleTextureSize = 32; | 60 static const GLint kMaxRectangleTextureSize = 32; |
| 61 static const GLint kMaxExternalTextureSize = 32; | 61 static const GLint kMaxExternalTextureSize = 32; |
| 62 static const GLint kMax3DTextureSize = 256; | 62 static const GLint kMax3DTextureSize = 512; |
| 63 static const GLint kMaxArrayTextureLayers = 256; |
| 63 static const GLint kMax2dLevels = 6; | 64 static const GLint kMax2dLevels = 6; |
| 64 static const GLint kMaxCubeMapLevels = 4; | 65 static const GLint kMaxCubeMapLevels = 4; |
| 65 static const GLint kMaxExternalLevels = 1; | 66 static const GLint kMaxExternalLevels = 1; |
| 66 static const GLint kMax3dLevels = 9; | 67 static const GLint kMax3dLevels = 10; |
| 67 static const bool kUseDefaultTextures = false; | 68 static const bool kUseDefaultTextures = false; |
| 68 | 69 |
| 69 TextureManagerTest() { | 70 TextureManagerTest() { |
| 70 // Always run with this command line, but the ES3 features are not | 71 // Always run with this command line, but the ES3 features are not |
| 71 // enabled without FeatureInfo::EnableES3Validators(). | 72 // enabled without FeatureInfo::EnableES3Validators(). |
| 72 base::CommandLine command_line(0, nullptr); | 73 base::CommandLine command_line(0, nullptr); |
| 73 command_line.AppendSwitch(switches::kEnableUnsafeES3APIs); | 74 command_line.AppendSwitch(switches::kEnableUnsafeES3APIs); |
| 74 GpuDriverBugWorkarounds gpu_driver_bug_workaround(&command_line); | 75 GpuDriverBugWorkarounds gpu_driver_bug_workaround(&command_line); |
| 75 feature_info_ = new FeatureInfo(command_line, gpu_driver_bug_workaround); | 76 feature_info_ = new FeatureInfo(command_line, gpu_driver_bug_workaround); |
| 76 } | 77 } |
| 77 | 78 |
| 78 ~TextureManagerTest() override {} | 79 ~TextureManagerTest() override {} |
| 79 | 80 |
| 80 protected: | 81 protected: |
| 81 void SetUp() override { | 82 void SetUp() override { |
| 82 GpuServiceTest::SetUp(); | 83 GpuServiceTest::SetUp(); |
| 83 manager_.reset(new TextureManager(NULL, | 84 manager_.reset(new TextureManager(NULL, |
| 84 feature_info_.get(), | 85 feature_info_.get(), |
| 85 kMaxTextureSize, | 86 kMaxTextureSize, |
| 86 kMaxCubeMapTextureSize, | 87 kMaxCubeMapTextureSize, |
| 87 kMaxRectangleTextureSize, | 88 kMaxRectangleTextureSize, |
| 88 kMax3DTextureSize, | 89 kMax3DTextureSize, |
| 90 kMaxArrayTextureLayers, |
| 89 kUseDefaultTextures)); | 91 kUseDefaultTextures)); |
| 90 TestHelper::SetupTextureManagerInitExpectations( | 92 TestHelper::SetupTextureManagerInitExpectations( |
| 91 gl_.get(), false, false, "", kUseDefaultTextures); | 93 gl_.get(), false, false, "", kUseDefaultTextures); |
| 92 manager_->Initialize(); | 94 manager_->Initialize(); |
| 93 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); | 95 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); |
| 94 } | 96 } |
| 95 | 97 |
| 96 void TearDown() override { | 98 void TearDown() override { |
| 97 manager_->Destroy(false); | 99 manager_->Destroy(false); |
| 98 manager_.reset(); | 100 manager_.reset(); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 128 std::unique_ptr<MockErrorState> error_state_; | 130 std::unique_ptr<MockErrorState> error_state_; |
| 129 }; | 131 }; |
| 130 | 132 |
| 131 // GCC requires these declarations, but MSVC requires they not be present | 133 // GCC requires these declarations, but MSVC requires they not be present |
| 132 #ifndef COMPILER_MSVC | 134 #ifndef COMPILER_MSVC |
| 133 const GLint TextureManagerTest::kMaxTextureSize; | 135 const GLint TextureManagerTest::kMaxTextureSize; |
| 134 const GLint TextureManagerTest::kMaxCubeMapTextureSize; | 136 const GLint TextureManagerTest::kMaxCubeMapTextureSize; |
| 135 const GLint TextureManagerTest::kMaxRectangleTextureSize; | 137 const GLint TextureManagerTest::kMaxRectangleTextureSize; |
| 136 const GLint TextureManagerTest::kMaxExternalTextureSize; | 138 const GLint TextureManagerTest::kMaxExternalTextureSize; |
| 137 const GLint TextureManagerTest::kMax3DTextureSize; | 139 const GLint TextureManagerTest::kMax3DTextureSize; |
| 140 const GLint TextureManagerTest::kMaxArrayTextureLayers; |
| 138 const GLint TextureManagerTest::kMax2dLevels; | 141 const GLint TextureManagerTest::kMax2dLevels; |
| 139 const GLint TextureManagerTest::kMaxCubeMapLevels; | 142 const GLint TextureManagerTest::kMaxCubeMapLevels; |
| 140 const GLint TextureManagerTest::kMaxExternalLevels; | 143 const GLint TextureManagerTest::kMaxExternalLevels; |
| 141 const GLint TextureManagerTest::kMax3dLevels; | 144 const GLint TextureManagerTest::kMax3dLevels; |
| 142 #endif | 145 #endif |
| 143 | 146 |
| 144 class GLStreamTextureImageStub : public GLStreamTextureImage { | 147 class GLStreamTextureImageStub : public GLStreamTextureImage { |
| 145 public: | 148 public: |
| 146 GLStreamTextureImageStub() {} | 149 GLStreamTextureImageStub() {} |
| 147 | 150 |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) { | 242 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) { |
| 240 bool use_default_textures = true; | 243 bool use_default_textures = true; |
| 241 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), | 244 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), |
| 242 false, false, "GL_ANGLE_texture_usage", use_default_textures); | 245 false, false, "GL_ANGLE_texture_usage", use_default_textures); |
| 243 TextureManager manager(NULL, | 246 TextureManager manager(NULL, |
| 244 feature_info_.get(), | 247 feature_info_.get(), |
| 245 kMaxTextureSize, | 248 kMaxTextureSize, |
| 246 kMaxCubeMapTextureSize, | 249 kMaxCubeMapTextureSize, |
| 247 kMaxRectangleTextureSize, | 250 kMaxRectangleTextureSize, |
| 248 kMax3DTextureSize, | 251 kMax3DTextureSize, |
| 252 kMaxArrayTextureLayers, |
| 249 use_default_textures); | 253 use_default_textures); |
| 250 manager.Initialize(); | 254 manager.Initialize(); |
| 251 | 255 |
| 252 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL); | 256 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL); |
| 253 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL); | 257 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL); |
| 254 | 258 |
| 255 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. | 259 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. |
| 256 | 260 |
| 257 manager.Destroy(false); | 261 manager.Destroy(false); |
| 258 } | 262 } |
| 259 | 263 |
| 260 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) { | 264 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) { |
| 261 bool use_default_textures = false; | 265 bool use_default_textures = false; |
| 262 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), | 266 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), |
| 263 false, false, "GL_ANGLE_texture_usage", use_default_textures); | 267 false, false, "GL_ANGLE_texture_usage", use_default_textures); |
| 264 TextureManager manager(NULL, | 268 TextureManager manager(NULL, |
| 265 feature_info_.get(), | 269 feature_info_.get(), |
| 266 kMaxTextureSize, | 270 kMaxTextureSize, |
| 267 kMaxCubeMapTextureSize, | 271 kMaxCubeMapTextureSize, |
| 268 kMaxRectangleTextureSize, | 272 kMaxRectangleTextureSize, |
| 269 kMax3DTextureSize, | 273 kMax3DTextureSize, |
| 274 kMaxArrayTextureLayers, |
| 270 use_default_textures); | 275 use_default_textures); |
| 271 manager.Initialize(); | 276 manager.Initialize(); |
| 272 | 277 |
| 273 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL); | 278 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL); |
| 274 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL); | 279 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL); |
| 275 | 280 |
| 276 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. | 281 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. |
| 277 | 282 |
| 278 manager.Destroy(false); | 283 manager.Destroy(false); |
| 279 } | 284 } |
| 280 | 285 |
| 281 TEST_F(TextureManagerTest, UseDefaultTexturesTrueES3) { | 286 TEST_F(TextureManagerTest, UseDefaultTexturesTrueES3) { |
| 282 bool use_default_textures = true; | 287 bool use_default_textures = true; |
| 283 SetupFeatureInfo("", "OpenGL ES 3.0", true); | 288 SetupFeatureInfo("", "OpenGL ES 3.0", true); |
| 284 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), | 289 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), |
| 285 true, false, "", use_default_textures); | 290 true, false, "", use_default_textures); |
| 286 TextureManager manager(NULL, | 291 TextureManager manager(NULL, |
| 287 feature_info_.get(), | 292 feature_info_.get(), |
| 288 kMaxTextureSize, | 293 kMaxTextureSize, |
| 289 kMaxCubeMapTextureSize, | 294 kMaxCubeMapTextureSize, |
| 290 kMaxRectangleTextureSize, | 295 kMaxRectangleTextureSize, |
| 291 kMax3DTextureSize, | 296 kMax3DTextureSize, |
| 297 kMaxArrayTextureLayers, |
| 292 use_default_textures); | 298 use_default_textures); |
| 293 manager.Initialize(); | 299 manager.Initialize(); |
| 294 | 300 |
| 295 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) != NULL); | 301 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) != NULL); |
| 296 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) != NULL); | 302 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) != NULL); |
| 297 | 303 |
| 298 manager.Destroy(false); | 304 manager.Destroy(false); |
| 299 } | 305 } |
| 300 | 306 |
| 301 TEST_F(TextureManagerTest, UseDefaultTexturesFalseES3) { | 307 TEST_F(TextureManagerTest, UseDefaultTexturesFalseES3) { |
| 302 bool use_default_textures = false; | 308 bool use_default_textures = false; |
| 303 SetupFeatureInfo("", "OpenGL ES 3.0", true); | 309 SetupFeatureInfo("", "OpenGL ES 3.0", true); |
| 304 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), | 310 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), |
| 305 true, false, "", use_default_textures); | 311 true, false, "", use_default_textures); |
| 306 TextureManager manager(NULL, | 312 TextureManager manager(NULL, |
| 307 feature_info_.get(), | 313 feature_info_.get(), |
| 308 kMaxTextureSize, | 314 kMaxTextureSize, |
| 309 kMaxCubeMapTextureSize, | 315 kMaxCubeMapTextureSize, |
| 310 kMaxRectangleTextureSize, | 316 kMaxRectangleTextureSize, |
| 311 kMax3DTextureSize, | 317 kMax3DTextureSize, |
| 318 kMaxArrayTextureLayers, |
| 312 use_default_textures); | 319 use_default_textures); |
| 313 manager.Initialize(); | 320 manager.Initialize(); |
| 314 | 321 |
| 315 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) == NULL); | 322 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) == NULL); |
| 316 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) == NULL); | 323 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) == NULL); |
| 317 | 324 |
| 318 manager.Destroy(false); | 325 manager.Destroy(false); |
| 319 } | 326 } |
| 320 | 327 |
| 321 TEST_F(TextureManagerTest, TextureUsageExt) { | 328 TEST_F(TextureManagerTest, TextureUsageExt) { |
| 322 TestHelper::SetupTextureManagerInitExpectations( | 329 TestHelper::SetupTextureManagerInitExpectations( |
| 323 gl_.get(), false, false, "GL_ANGLE_texture_usage", kUseDefaultTextures); | 330 gl_.get(), false, false, "GL_ANGLE_texture_usage", kUseDefaultTextures); |
| 324 TextureManager manager(NULL, | 331 TextureManager manager(NULL, |
| 325 feature_info_.get(), | 332 feature_info_.get(), |
| 326 kMaxTextureSize, | 333 kMaxTextureSize, |
| 327 kMaxCubeMapTextureSize, | 334 kMaxCubeMapTextureSize, |
| 328 kMaxRectangleTextureSize, | 335 kMaxRectangleTextureSize, |
| 329 kMax3DTextureSize, | 336 kMax3DTextureSize, |
| 337 kMaxArrayTextureLayers, |
| 330 kUseDefaultTextures); | 338 kUseDefaultTextures); |
| 331 manager.Initialize(); | 339 manager.Initialize(); |
| 332 const GLuint kClient1Id = 1; | 340 const GLuint kClient1Id = 1; |
| 333 const GLuint kService1Id = 11; | 341 const GLuint kService1Id = 11; |
| 334 // Check we can create texture. | 342 // Check we can create texture. |
| 335 manager.CreateTexture(kClient1Id, kService1Id); | 343 manager.CreateTexture(kClient1Id, kService1Id); |
| 336 // Check texture got created. | 344 // Check texture got created. |
| 337 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 345 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 338 ASSERT_TRUE(texture_ref != NULL); | 346 ASSERT_TRUE(texture_ref != NULL); |
| 339 TestHelper::SetTexParameteriWithExpectations( | 347 TestHelper::SetTexParameteriWithExpectations( |
| 340 gl_.get(), error_state_.get(), &manager, texture_ref, | 348 gl_.get(), error_state_.get(), &manager, texture_ref, |
| 341 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR); | 349 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR); |
| 342 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), | 350 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), |
| 343 texture_ref->texture()->usage()); | 351 texture_ref->texture()->usage()); |
| 344 manager.Destroy(false); | 352 manager.Destroy(false); |
| 345 } | 353 } |
| 346 | 354 |
| 347 TEST_F(TextureManagerTest, Destroy) { | 355 TEST_F(TextureManagerTest, Destroy) { |
| 348 const GLuint kClient1Id = 1; | 356 const GLuint kClient1Id = 1; |
| 349 const GLuint kService1Id = 11; | 357 const GLuint kService1Id = 11; |
| 350 TestHelper::SetupTextureManagerInitExpectations( | 358 TestHelper::SetupTextureManagerInitExpectations( |
| 351 gl_.get(), false, false, "", kUseDefaultTextures); | 359 gl_.get(), false, false, "", kUseDefaultTextures); |
| 352 TextureManager manager(NULL, | 360 TextureManager manager(NULL, |
| 353 feature_info_.get(), | 361 feature_info_.get(), |
| 354 kMaxTextureSize, | 362 kMaxTextureSize, |
| 355 kMaxCubeMapTextureSize, | 363 kMaxCubeMapTextureSize, |
| 356 kMaxRectangleTextureSize, | 364 kMaxRectangleTextureSize, |
| 357 kMax3DTextureSize, | 365 kMax3DTextureSize, |
| 366 kMaxArrayTextureLayers, |
| 358 kUseDefaultTextures); | 367 kUseDefaultTextures); |
| 359 manager.Initialize(); | 368 manager.Initialize(); |
| 360 // Check we can create texture. | 369 // Check we can create texture. |
| 361 manager.CreateTexture(kClient1Id, kService1Id); | 370 manager.CreateTexture(kClient1Id, kService1Id); |
| 362 // Check texture got created. | 371 // Check texture got created. |
| 363 TextureRef* texture = manager.GetTexture(kClient1Id); | 372 TextureRef* texture = manager.GetTexture(kClient1Id); |
| 364 ASSERT_TRUE(texture != NULL); | 373 ASSERT_TRUE(texture != NULL); |
| 365 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) | 374 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) |
| 366 .Times(1) | 375 .Times(1) |
| 367 .RetiresOnSaturation(); | 376 .RetiresOnSaturation(); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 408 EXPECT_EQ(kMaxCubeMapTextureSize, | 417 EXPECT_EQ(kMaxCubeMapTextureSize, |
| 409 manager_->MaxSizeForTarget(GL_TEXTURE_CUBE_MAP_POSITIVE_Z)); | 418 manager_->MaxSizeForTarget(GL_TEXTURE_CUBE_MAP_POSITIVE_Z)); |
| 410 EXPECT_EQ(kMaxCubeMapTextureSize, | 419 EXPECT_EQ(kMaxCubeMapTextureSize, |
| 411 manager_->MaxSizeForTarget(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z)); | 420 manager_->MaxSizeForTarget(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z)); |
| 412 EXPECT_EQ(kMaxRectangleTextureSize, | 421 EXPECT_EQ(kMaxRectangleTextureSize, |
| 413 manager_->MaxSizeForTarget(GL_TEXTURE_RECTANGLE_ARB)); | 422 manager_->MaxSizeForTarget(GL_TEXTURE_RECTANGLE_ARB)); |
| 414 EXPECT_EQ(kMaxExternalTextureSize, | 423 EXPECT_EQ(kMaxExternalTextureSize, |
| 415 manager_->MaxSizeForTarget(GL_TEXTURE_EXTERNAL_OES)); | 424 manager_->MaxSizeForTarget(GL_TEXTURE_EXTERNAL_OES)); |
| 416 EXPECT_EQ(kMaxTextureSize, manager_->MaxSizeForTarget(GL_TEXTURE_2D_ARRAY)); | 425 EXPECT_EQ(kMaxTextureSize, manager_->MaxSizeForTarget(GL_TEXTURE_2D_ARRAY)); |
| 417 EXPECT_EQ(kMax3DTextureSize, manager_->MaxSizeForTarget(GL_TEXTURE_3D)); | 426 EXPECT_EQ(kMax3DTextureSize, manager_->MaxSizeForTarget(GL_TEXTURE_3D)); |
| 427 EXPECT_EQ(kMaxArrayTextureLayers, manager_->max_array_texture_layers()); |
| 418 } | 428 } |
| 419 | 429 |
| 420 TEST_F(TextureManagerTest, ValidForTarget) { | 430 TEST_F(TextureManagerTest, ValidForTarget) { |
| 421 // check 2d | 431 // check 2d |
| 422 EXPECT_TRUE(manager_->ValidForTarget( | 432 EXPECT_TRUE(manager_->ValidForTarget( |
| 423 GL_TEXTURE_2D, 0, kMaxTextureSize, kMaxTextureSize, 1)); | 433 GL_TEXTURE_2D, 0, kMaxTextureSize, kMaxTextureSize, 1)); |
| 424 EXPECT_TRUE(manager_->ValidForTarget( | 434 EXPECT_TRUE(manager_->ValidForTarget( |
| 425 GL_TEXTURE_2D, kMax2dLevels - 1, 1, 1, 1)); | 435 GL_TEXTURE_2D, kMax2dLevels - 1, 1, 1, 1)); |
| 426 EXPECT_FALSE(manager_->ValidForTarget( | 436 EXPECT_FALSE(manager_->ValidForTarget( |
| 427 GL_TEXTURE_2D, kMax2dLevels - 1, 1, 2, 1)); | 437 GL_TEXTURE_2D, kMax2dLevels - 1, 1, 2, 1)); |
| 428 EXPECT_FALSE(manager_->ValidForTarget( | 438 EXPECT_FALSE(manager_->ValidForTarget( |
| 429 GL_TEXTURE_2D, kMax2dLevels - 1, 2, 1, 1)); | 439 GL_TEXTURE_2D, kMax2dLevels - 1, 2, 1, 1)); |
| 430 // check level out of range. | 440 // check level out of range. |
| 431 EXPECT_FALSE(manager_->ValidForTarget( | 441 EXPECT_FALSE(manager_->ValidForTarget( |
| 432 GL_TEXTURE_2D, kMax2dLevels, kMaxTextureSize, 1, 1)); | 442 GL_TEXTURE_2D, kMax2dLevels, kMaxTextureSize, 1, 1)); |
| 433 // check has depth. | 443 // check has depth. |
| 434 EXPECT_FALSE(manager_->ValidForTarget( | 444 EXPECT_FALSE(manager_->ValidForTarget( |
| 435 GL_TEXTURE_2D, kMax2dLevels, kMaxTextureSize, 1, 2)); | 445 GL_TEXTURE_2D, kMax2dLevels, kMaxTextureSize, 1, 2)); |
| 436 // Check NPOT width on level 0 | 446 // Check NPOT width on level 0 |
| 437 EXPECT_TRUE(manager_->ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1)); | 447 EXPECT_TRUE(manager_->ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1)); |
| 438 // Check NPOT height on level 0 | 448 // Check NPOT height on level 0 |
| 439 EXPECT_TRUE(manager_->ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1)); | 449 EXPECT_TRUE(manager_->ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1)); |
| 440 // Check NPOT width on level 1 | 450 // Check NPOT width on level 1 |
| 441 EXPECT_FALSE(manager_->ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1)); | 451 EXPECT_FALSE(manager_->ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1)); |
| 442 // Check NPOT height on level 1 | 452 // Check NPOT height on level 1 |
| 443 EXPECT_FALSE(manager_->ValidForTarget(GL_TEXTURE_2D, 1, 2, 5, 1)); | 453 EXPECT_FALSE(manager_->ValidForTarget(GL_TEXTURE_2D, 1, 2, 5, 1)); |
| 444 | 454 |
| 455 // check array textures. |
| 456 EXPECT_TRUE(manager_->ValidForTarget( |
| 457 GL_TEXTURE_2D_ARRAY, 0, kMaxTextureSize, kMaxTextureSize, |
| 458 kMaxArrayTextureLayers)); |
| 459 EXPECT_FALSE(manager_->ValidForTarget( |
| 460 GL_TEXTURE_2D_ARRAY, 1, kMaxTextureSize, kMaxTextureSize, |
| 461 kMaxArrayTextureLayers)); |
| 462 EXPECT_TRUE(manager_->ValidForTarget( |
| 463 GL_TEXTURE_2D_ARRAY, 1, kMaxTextureSize / 2, kMaxTextureSize / 2, |
| 464 kMaxArrayTextureLayers)); |
| 465 EXPECT_TRUE(manager_->ValidForTarget( |
| 466 GL_TEXTURE_2D_ARRAY, kMax2dLevels - 1, 0, 0, kMaxArrayTextureLayers)); |
| 467 |
| 445 // check cube | 468 // check cube |
| 446 EXPECT_TRUE(manager_->ValidForTarget( | 469 EXPECT_TRUE(manager_->ValidForTarget( |
| 447 GL_TEXTURE_CUBE_MAP, 0, | 470 GL_TEXTURE_CUBE_MAP, 0, |
| 448 kMaxCubeMapTextureSize, kMaxCubeMapTextureSize, 1)); | 471 kMaxCubeMapTextureSize, kMaxCubeMapTextureSize, 1)); |
| 449 EXPECT_TRUE(manager_->ValidForTarget( | 472 EXPECT_TRUE(manager_->ValidForTarget( |
| 450 GL_TEXTURE_CUBE_MAP, kMaxCubeMapLevels - 1, 1, 1, 1)); | 473 GL_TEXTURE_CUBE_MAP, kMaxCubeMapLevels - 1, 1, 1, 1)); |
| 451 EXPECT_FALSE(manager_->ValidForTarget( | 474 EXPECT_FALSE(manager_->ValidForTarget( |
| 452 GL_TEXTURE_CUBE_MAP, kMaxCubeMapLevels - 1, 2, 2, 1)); | 475 GL_TEXTURE_CUBE_MAP, kMaxCubeMapLevels - 1, 2, 2, 1)); |
| 453 // check level out of range. | 476 // check level out of range. |
| 454 EXPECT_FALSE(manager_->ValidForTarget( | 477 EXPECT_FALSE(manager_->ValidForTarget( |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 492 TestHelper::SetupFeatureInfoInitExpectations( | 515 TestHelper::SetupFeatureInfoInitExpectations( |
| 493 gl_.get(), "GL_OES_texture_npot"); | 516 gl_.get(), "GL_OES_texture_npot"); |
| 494 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 517 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 495 feature_info->InitializeForTesting(); | 518 feature_info->InitializeForTesting(); |
| 496 TextureManager manager(NULL, | 519 TextureManager manager(NULL, |
| 497 feature_info.get(), | 520 feature_info.get(), |
| 498 kMaxTextureSize, | 521 kMaxTextureSize, |
| 499 kMaxCubeMapTextureSize, | 522 kMaxCubeMapTextureSize, |
| 500 kMaxRectangleTextureSize, | 523 kMaxRectangleTextureSize, |
| 501 kMax3DTextureSize, | 524 kMax3DTextureSize, |
| 525 kMaxArrayTextureLayers, |
| 502 kUseDefaultTextures); | 526 kUseDefaultTextures); |
| 503 // Check NPOT width on level 0 | 527 // Check NPOT width on level 0 |
| 504 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1)); | 528 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1)); |
| 505 // Check NPOT height on level 0 | 529 // Check NPOT height on level 0 |
| 506 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1)); | 530 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1)); |
| 507 // Check NPOT width on level 1 | 531 // Check NPOT width on level 1 |
| 508 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1)); | 532 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1)); |
| 509 // Check NPOT height on level 1 | 533 // Check NPOT height on level 1 |
| 510 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 2, 5, 1)); | 534 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 2, 5, 1)); |
| 511 manager.Destroy(false); | 535 manager.Destroy(false); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 559 | 583 |
| 560 SetupFeatureInfo("", "2.1", false); | 584 SetupFeatureInfo("", "2.1", false); |
| 561 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), false, false, "", | 585 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), false, false, "", |
| 562 kUseDefaultTextures); | 586 kUseDefaultTextures); |
| 563 TextureManager manager(NULL, | 587 TextureManager manager(NULL, |
| 564 feature_info_.get(), | 588 feature_info_.get(), |
| 565 kMaxTextureSize, | 589 kMaxTextureSize, |
| 566 kMaxCubeMapTextureSize, | 590 kMaxCubeMapTextureSize, |
| 567 kMaxRectangleTextureSize, | 591 kMaxRectangleTextureSize, |
| 568 kMax3DTextureSize, | 592 kMax3DTextureSize, |
| 593 kMaxArrayTextureLayers, |
| 569 kUseDefaultTextures); | 594 kUseDefaultTextures); |
| 570 manager.Initialize(); | 595 manager.Initialize(); |
| 571 | 596 |
| 572 // Create a texture. | 597 // Create a texture. |
| 573 manager.CreateTexture(kClientId, kServiceId); | 598 manager.CreateTexture(kClientId, kServiceId); |
| 574 scoped_refptr<TextureRef> texture_ref(manager.GetTexture(kClientId)); | 599 scoped_refptr<TextureRef> texture_ref(manager.GetTexture(kClientId)); |
| 575 manager.SetTarget(texture_ref.get(), GL_TEXTURE_2D); | 600 manager.SetTarget(texture_ref.get(), GL_TEXTURE_2D); |
| 576 | 601 |
| 577 Texture* texture = texture_ref->texture(); | 602 Texture* texture = texture_ref->texture(); |
| 578 | 603 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 603 | 628 |
| 604 SetupFeatureInfo("", "4.2", true); | 629 SetupFeatureInfo("", "4.2", true); |
| 605 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), true, true, "", | 630 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), true, true, "", |
| 606 kUseDefaultTextures); | 631 kUseDefaultTextures); |
| 607 TextureManager manager(NULL, | 632 TextureManager manager(NULL, |
| 608 feature_info_.get(), | 633 feature_info_.get(), |
| 609 kMaxTextureSize, | 634 kMaxTextureSize, |
| 610 kMaxCubeMapTextureSize, | 635 kMaxCubeMapTextureSize, |
| 611 kMaxRectangleTextureSize, | 636 kMaxRectangleTextureSize, |
| 612 kMax3DTextureSize, | 637 kMax3DTextureSize, |
| 638 kMaxArrayTextureLayers, |
| 613 kUseDefaultTextures); | 639 kUseDefaultTextures); |
| 614 manager.Initialize(); | 640 manager.Initialize(); |
| 615 | 641 |
| 616 // Create a texture. | 642 // Create a texture. |
| 617 manager.CreateTexture(kClientId, kServiceId); | 643 manager.CreateTexture(kClientId, kServiceId); |
| 618 scoped_refptr<TextureRef> texture_ref(manager.GetTexture(kClientId)); | 644 scoped_refptr<TextureRef> texture_ref(manager.GetTexture(kClientId)); |
| 619 manager.SetTarget(texture_ref.get(), GL_TEXTURE_2D); | 645 manager.SetTarget(texture_ref.get(), GL_TEXTURE_2D); |
| 620 | 646 |
| 621 Texture* texture = texture_ref->texture(); | 647 Texture* texture = texture_ref->texture(); |
| 622 | 648 |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 695 .Times(1) | 721 .Times(1) |
| 696 .RetiresOnSaturation(); | 722 .RetiresOnSaturation(); |
| 697 manager.RemoveTexture(kClientId); | 723 manager.RemoveTexture(kClientId); |
| 698 } | 724 } |
| 699 | 725 |
| 700 class TextureTestBase : public GpuServiceTest { | 726 class TextureTestBase : public GpuServiceTest { |
| 701 public: | 727 public: |
| 702 static const GLint kMaxTextureSize = 32; | 728 static const GLint kMaxTextureSize = 32; |
| 703 static const GLint kMaxCubeMapTextureSize = 8; | 729 static const GLint kMaxCubeMapTextureSize = 8; |
| 704 static const GLint kMaxRectangleTextureSize = 32; | 730 static const GLint kMaxRectangleTextureSize = 32; |
| 705 static const GLint kMax3DTextureSize = 256; | 731 static const GLint kMax3DTextureSize = 512; |
| 732 static const GLint kMaxArrayTextureLayers = 256; |
| 706 static const GLint kMax2dLevels = 6; | 733 static const GLint kMax2dLevels = 6; |
| 707 static const GLint kMaxCubeMapLevels = 4; | 734 static const GLint kMaxCubeMapLevels = 4; |
| 708 static const GLuint kClient1Id = 1; | 735 static const GLuint kClient1Id = 1; |
| 709 static const GLuint kService1Id = 11; | 736 static const GLuint kService1Id = 11; |
| 710 static const bool kUseDefaultTextures = false; | 737 static const bool kUseDefaultTextures = false; |
| 711 | 738 |
| 712 TextureTestBase() | 739 TextureTestBase() |
| 713 : feature_info_(new FeatureInfo()) { | 740 : feature_info_(new FeatureInfo()) { |
| 714 } | 741 } |
| 715 ~TextureTestBase() override { texture_ref_ = NULL; } | 742 ~TextureTestBase() override { texture_ref_ = NULL; } |
| 716 | 743 |
| 717 protected: | 744 protected: |
| 718 void SetUpBase(MemoryTracker* memory_tracker, const std::string& extensions) { | 745 void SetUpBase(MemoryTracker* memory_tracker, const std::string& extensions) { |
| 719 GpuServiceTest::SetUp(); | 746 GpuServiceTest::SetUp(); |
| 720 if (!extensions.empty()) { | 747 if (!extensions.empty()) { |
| 721 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), | 748 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), |
| 722 extensions.c_str()); | 749 extensions.c_str()); |
| 723 feature_info_->InitializeForTesting(); | 750 feature_info_->InitializeForTesting(); |
| 724 } | 751 } |
| 725 | 752 |
| 726 manager_.reset(new TextureManager(memory_tracker, | 753 manager_.reset(new TextureManager(memory_tracker, |
| 727 feature_info_.get(), | 754 feature_info_.get(), |
| 728 kMaxTextureSize, | 755 kMaxTextureSize, |
| 729 kMaxCubeMapTextureSize, | 756 kMaxCubeMapTextureSize, |
| 730 kMaxRectangleTextureSize, | 757 kMaxRectangleTextureSize, |
| 731 kMax3DTextureSize, | 758 kMax3DTextureSize, |
| 759 kMaxArrayTextureLayers, |
| 732 kUseDefaultTextures)); | 760 kUseDefaultTextures)); |
| 733 decoder_.reset(new ::testing::StrictMock<gles2::MockGLES2Decoder>()); | 761 decoder_.reset(new ::testing::StrictMock<gles2::MockGLES2Decoder>()); |
| 734 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); | 762 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); |
| 735 manager_->CreateTexture(kClient1Id, kService1Id); | 763 manager_->CreateTexture(kClient1Id, kService1Id); |
| 736 texture_ref_ = manager_->GetTexture(kClient1Id); | 764 texture_ref_ = manager_->GetTexture(kClient1Id); |
| 737 ASSERT_TRUE(texture_ref_.get() != NULL); | 765 ASSERT_TRUE(texture_ref_.get() != NULL); |
| 738 } | 766 } |
| 739 | 767 |
| 740 void TearDown() override { | 768 void TearDown() override { |
| 741 if (texture_ref_.get()) { | 769 if (texture_ref_.get()) { |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1027 TestHelper::SetupFeatureInfoInitExpectations( | 1055 TestHelper::SetupFeatureInfoInitExpectations( |
| 1028 gl_.get(), "GL_OES_texture_npot"); | 1056 gl_.get(), "GL_OES_texture_npot"); |
| 1029 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1057 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1030 feature_info->InitializeForTesting(); | 1058 feature_info->InitializeForTesting(); |
| 1031 TextureManager manager(NULL, | 1059 TextureManager manager(NULL, |
| 1032 feature_info.get(), | 1060 feature_info.get(), |
| 1033 kMaxTextureSize, | 1061 kMaxTextureSize, |
| 1034 kMaxCubeMapTextureSize, | 1062 kMaxCubeMapTextureSize, |
| 1035 kMaxRectangleTextureSize, | 1063 kMaxRectangleTextureSize, |
| 1036 kMax3DTextureSize, | 1064 kMax3DTextureSize, |
| 1065 kMaxArrayTextureLayers, |
| 1037 kUseDefaultTextures); | 1066 kUseDefaultTextures); |
| 1038 manager.CreateTexture(kClient1Id, kService1Id); | 1067 manager.CreateTexture(kClient1Id, kService1Id); |
| 1039 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1068 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1040 ASSERT_TRUE(texture_ref != NULL); | 1069 ASSERT_TRUE(texture_ref != NULL); |
| 1041 Texture* texture = texture_ref->texture(); | 1070 Texture* texture = texture_ref->texture(); |
| 1042 | 1071 |
| 1043 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1072 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 1044 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1073 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 1045 // Check Setting level 0 to NPOT | 1074 // Check Setting level 0 to NPOT |
| 1046 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, | 1075 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, |
| (...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1328 TestHelper::SetupFeatureInfoInitExpectations( | 1357 TestHelper::SetupFeatureInfoInitExpectations( |
| 1329 gl_.get(), "GL_OES_texture_float"); | 1358 gl_.get(), "GL_OES_texture_float"); |
| 1330 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1359 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1331 feature_info->InitializeForTesting(); | 1360 feature_info->InitializeForTesting(); |
| 1332 TextureManager manager(NULL, | 1361 TextureManager manager(NULL, |
| 1333 feature_info.get(), | 1362 feature_info.get(), |
| 1334 kMaxTextureSize, | 1363 kMaxTextureSize, |
| 1335 kMaxCubeMapTextureSize, | 1364 kMaxCubeMapTextureSize, |
| 1336 kMaxRectangleTextureSize, | 1365 kMaxRectangleTextureSize, |
| 1337 kMax3DTextureSize, | 1366 kMax3DTextureSize, |
| 1367 kMaxArrayTextureLayers, |
| 1338 kUseDefaultTextures); | 1368 kUseDefaultTextures); |
| 1339 manager.CreateTexture(kClient1Id, kService1Id); | 1369 manager.CreateTexture(kClient1Id, kService1Id); |
| 1340 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1370 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1341 ASSERT_TRUE(texture_ref != NULL); | 1371 ASSERT_TRUE(texture_ref != NULL); |
| 1342 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1372 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 1343 Texture* texture = texture_ref->texture(); | 1373 Texture* texture = texture_ref->texture(); |
| 1344 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1374 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 1345 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, | 1375 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, |
| 1346 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1)); | 1376 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1)); |
| 1347 EXPECT_FALSE(manager.CanRender(texture_ref)); | 1377 EXPECT_FALSE(manager.CanRender(texture_ref)); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1360 TestHelper::SetupFeatureInfoInitExpectations( | 1390 TestHelper::SetupFeatureInfoInitExpectations( |
| 1361 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear"); | 1391 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear"); |
| 1362 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1392 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1363 feature_info->InitializeForTesting(); | 1393 feature_info->InitializeForTesting(); |
| 1364 TextureManager manager(NULL, | 1394 TextureManager manager(NULL, |
| 1365 feature_info.get(), | 1395 feature_info.get(), |
| 1366 kMaxTextureSize, | 1396 kMaxTextureSize, |
| 1367 kMaxCubeMapTextureSize, | 1397 kMaxCubeMapTextureSize, |
| 1368 kMaxRectangleTextureSize, | 1398 kMaxRectangleTextureSize, |
| 1369 kMax3DTextureSize, | 1399 kMax3DTextureSize, |
| 1400 kMaxArrayTextureLayers, |
| 1370 kUseDefaultTextures); | 1401 kUseDefaultTextures); |
| 1371 manager.CreateTexture(kClient1Id, kService1Id); | 1402 manager.CreateTexture(kClient1Id, kService1Id); |
| 1372 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1403 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1373 ASSERT_TRUE(texture_ref != NULL); | 1404 ASSERT_TRUE(texture_ref != NULL); |
| 1374 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1405 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 1375 Texture* texture = texture_ref->texture(); | 1406 Texture* texture = texture_ref->texture(); |
| 1376 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1407 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 1377 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, | 1408 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, |
| 1378 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1)); | 1409 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1)); |
| 1379 EXPECT_TRUE(manager.CanRender(texture_ref)); | 1410 EXPECT_TRUE(manager.CanRender(texture_ref)); |
| 1380 manager.Destroy(false); | 1411 manager.Destroy(false); |
| 1381 } | 1412 } |
| 1382 | 1413 |
| 1383 TEST_F(TextureTest, HalfFloatNotLinear) { | 1414 TEST_F(TextureTest, HalfFloatNotLinear) { |
| 1384 TestHelper::SetupFeatureInfoInitExpectations( | 1415 TestHelper::SetupFeatureInfoInitExpectations( |
| 1385 gl_.get(), "GL_OES_texture_half_float"); | 1416 gl_.get(), "GL_OES_texture_half_float"); |
| 1386 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1417 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1387 feature_info->InitializeForTesting(); | 1418 feature_info->InitializeForTesting(); |
| 1388 TextureManager manager(NULL, | 1419 TextureManager manager(NULL, |
| 1389 feature_info.get(), | 1420 feature_info.get(), |
| 1390 kMaxTextureSize, | 1421 kMaxTextureSize, |
| 1391 kMaxCubeMapTextureSize, | 1422 kMaxCubeMapTextureSize, |
| 1392 kMaxRectangleTextureSize, | 1423 kMaxRectangleTextureSize, |
| 1393 kMax3DTextureSize, | 1424 kMax3DTextureSize, |
| 1425 kMaxArrayTextureLayers, |
| 1394 kUseDefaultTextures); | 1426 kUseDefaultTextures); |
| 1395 manager.CreateTexture(kClient1Id, kService1Id); | 1427 manager.CreateTexture(kClient1Id, kService1Id); |
| 1396 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1428 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1397 ASSERT_TRUE(texture_ref != NULL); | 1429 ASSERT_TRUE(texture_ref != NULL); |
| 1398 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1430 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 1399 Texture* texture = texture_ref->texture(); | 1431 Texture* texture = texture_ref->texture(); |
| 1400 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1432 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 1401 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, | 1433 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, |
| 1402 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1)); | 1434 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1)); |
| 1403 EXPECT_FALSE(manager.CanRender(texture_ref)); | 1435 EXPECT_FALSE(manager.CanRender(texture_ref)); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1416 TestHelper::SetupFeatureInfoInitExpectations( | 1448 TestHelper::SetupFeatureInfoInitExpectations( |
| 1417 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); | 1449 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); |
| 1418 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1450 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1419 feature_info->InitializeForTesting(); | 1451 feature_info->InitializeForTesting(); |
| 1420 TextureManager manager(NULL, | 1452 TextureManager manager(NULL, |
| 1421 feature_info.get(), | 1453 feature_info.get(), |
| 1422 kMaxTextureSize, | 1454 kMaxTextureSize, |
| 1423 kMaxCubeMapTextureSize, | 1455 kMaxCubeMapTextureSize, |
| 1424 kMaxRectangleTextureSize, | 1456 kMaxRectangleTextureSize, |
| 1425 kMax3DTextureSize, | 1457 kMax3DTextureSize, |
| 1458 kMaxArrayTextureLayers, |
| 1426 kUseDefaultTextures); | 1459 kUseDefaultTextures); |
| 1427 manager.CreateTexture(kClient1Id, kService1Id); | 1460 manager.CreateTexture(kClient1Id, kService1Id); |
| 1428 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1461 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1429 ASSERT_TRUE(texture_ref != NULL); | 1462 ASSERT_TRUE(texture_ref != NULL); |
| 1430 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1463 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 1431 Texture* texture = texture_ref->texture(); | 1464 Texture* texture = texture_ref->texture(); |
| 1432 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1465 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 1433 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, | 1466 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, |
| 1434 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1)); | 1467 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1)); |
| 1435 EXPECT_TRUE(manager.CanRender(texture_ref)); | 1468 EXPECT_TRUE(manager.CanRender(texture_ref)); |
| 1436 manager.Destroy(false); | 1469 manager.Destroy(false); |
| 1437 } | 1470 } |
| 1438 | 1471 |
| 1439 TEST_F(TextureTest, EGLImageExternal) { | 1472 TEST_F(TextureTest, EGLImageExternal) { |
| 1440 TestHelper::SetupFeatureInfoInitExpectations( | 1473 TestHelper::SetupFeatureInfoInitExpectations( |
| 1441 gl_.get(), "GL_OES_EGL_image_external"); | 1474 gl_.get(), "GL_OES_EGL_image_external"); |
| 1442 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1475 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1443 feature_info->InitializeForTesting(); | 1476 feature_info->InitializeForTesting(); |
| 1444 TextureManager manager(NULL, | 1477 TextureManager manager(NULL, |
| 1445 feature_info.get(), | 1478 feature_info.get(), |
| 1446 kMaxTextureSize, | 1479 kMaxTextureSize, |
| 1447 kMaxCubeMapTextureSize, | 1480 kMaxCubeMapTextureSize, |
| 1448 kMaxRectangleTextureSize, | 1481 kMaxRectangleTextureSize, |
| 1449 kMax3DTextureSize, | 1482 kMax3DTextureSize, |
| 1483 kMaxArrayTextureLayers, |
| 1450 kUseDefaultTextures); | 1484 kUseDefaultTextures); |
| 1451 manager.CreateTexture(kClient1Id, kService1Id); | 1485 manager.CreateTexture(kClient1Id, kService1Id); |
| 1452 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1486 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1453 ASSERT_TRUE(texture_ref != NULL); | 1487 ASSERT_TRUE(texture_ref != NULL); |
| 1454 manager.SetTarget(texture_ref, GL_TEXTURE_EXTERNAL_OES); | 1488 manager.SetTarget(texture_ref, GL_TEXTURE_EXTERNAL_OES); |
| 1455 Texture* texture = texture_ref->texture(); | 1489 Texture* texture = texture_ref->texture(); |
| 1456 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target()); | 1490 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target()); |
| 1457 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); | 1491 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); |
| 1458 manager.Destroy(false); | 1492 manager.Destroy(false); |
| 1459 } | 1493 } |
| 1460 | 1494 |
| 1461 TEST_F(TextureTest, DepthTexture) { | 1495 TEST_F(TextureTest, DepthTexture) { |
| 1462 TestHelper::SetupFeatureInfoInitExpectations( | 1496 TestHelper::SetupFeatureInfoInitExpectations( |
| 1463 gl_.get(), "GL_ANGLE_depth_texture"); | 1497 gl_.get(), "GL_ANGLE_depth_texture"); |
| 1464 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1498 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1465 feature_info->InitializeForTesting(); | 1499 feature_info->InitializeForTesting(); |
| 1466 TextureManager manager(NULL, | 1500 TextureManager manager(NULL, |
| 1467 feature_info.get(), | 1501 feature_info.get(), |
| 1468 kMaxTextureSize, | 1502 kMaxTextureSize, |
| 1469 kMaxCubeMapTextureSize, | 1503 kMaxCubeMapTextureSize, |
| 1470 kMaxRectangleTextureSize, | 1504 kMaxRectangleTextureSize, |
| 1471 kMax3DTextureSize, | 1505 kMax3DTextureSize, |
| 1506 kMaxArrayTextureLayers, |
| 1472 kUseDefaultTextures); | 1507 kUseDefaultTextures); |
| 1473 manager.CreateTexture(kClient1Id, kService1Id); | 1508 manager.CreateTexture(kClient1Id, kService1Id); |
| 1474 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1509 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1475 ASSERT_TRUE(texture_ref != NULL); | 1510 ASSERT_TRUE(texture_ref != NULL); |
| 1476 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1511 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 1477 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4, | 1512 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4, |
| 1478 1, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, gfx::Rect()); | 1513 1, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, gfx::Rect()); |
| 1479 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); | 1514 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); |
| 1480 manager.Destroy(false); | 1515 manager.Destroy(false); |
| 1481 } | 1516 } |
| (...skipping 686 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2168 void SetUp() override { | 2203 void SetUp() override { |
| 2169 GpuServiceTest::SetUp(); | 2204 GpuServiceTest::SetUp(); |
| 2170 memory_tracker1_ = new CountingMemoryTracker; | 2205 memory_tracker1_ = new CountingMemoryTracker; |
| 2171 texture_manager1_.reset( | 2206 texture_manager1_.reset( |
| 2172 new TextureManager(memory_tracker1_.get(), | 2207 new TextureManager(memory_tracker1_.get(), |
| 2173 feature_info_.get(), | 2208 feature_info_.get(), |
| 2174 TextureManagerTest::kMaxTextureSize, | 2209 TextureManagerTest::kMaxTextureSize, |
| 2175 TextureManagerTest::kMaxCubeMapTextureSize, | 2210 TextureManagerTest::kMaxCubeMapTextureSize, |
| 2176 TextureManagerTest::kMaxRectangleTextureSize, | 2211 TextureManagerTest::kMaxRectangleTextureSize, |
| 2177 TextureManagerTest::kMax3DTextureSize, | 2212 TextureManagerTest::kMax3DTextureSize, |
| 2213 TextureManagerTest::kMaxArrayTextureLayers, |
| 2178 kUseDefaultTextures)); | 2214 kUseDefaultTextures)); |
| 2179 memory_tracker2_ = new CountingMemoryTracker; | 2215 memory_tracker2_ = new CountingMemoryTracker; |
| 2180 texture_manager2_.reset( | 2216 texture_manager2_.reset( |
| 2181 new TextureManager(memory_tracker2_.get(), | 2217 new TextureManager(memory_tracker2_.get(), |
| 2182 feature_info_.get(), | 2218 feature_info_.get(), |
| 2183 TextureManagerTest::kMaxTextureSize, | 2219 TextureManagerTest::kMaxTextureSize, |
| 2184 TextureManagerTest::kMaxCubeMapTextureSize, | 2220 TextureManagerTest::kMaxCubeMapTextureSize, |
| 2185 TextureManagerTest::kMaxRectangleTextureSize, | 2221 TextureManagerTest::kMaxRectangleTextureSize, |
| 2186 TextureManagerTest::kMax3DTextureSize, | 2222 TextureManagerTest::kMax3DTextureSize, |
| 2223 TextureManagerTest::kMaxArrayTextureLayers, |
| 2187 kUseDefaultTextures)); | 2224 kUseDefaultTextures)); |
| 2188 TestHelper::SetupTextureManagerInitExpectations( | 2225 TestHelper::SetupTextureManagerInitExpectations( |
| 2189 gl_.get(), false, false, "", kUseDefaultTextures); | 2226 gl_.get(), false, false, "", kUseDefaultTextures); |
| 2190 texture_manager1_->Initialize(); | 2227 texture_manager1_->Initialize(); |
| 2191 TestHelper::SetupTextureManagerInitExpectations( | 2228 TestHelper::SetupTextureManagerInitExpectations( |
| 2192 gl_.get(), false, false, "", kUseDefaultTextures); | 2229 gl_.get(), false, false, "", kUseDefaultTextures); |
| 2193 texture_manager2_->Initialize(); | 2230 texture_manager2_->Initialize(); |
| 2194 } | 2231 } |
| 2195 | 2232 |
| 2196 void TearDown() override { | 2233 void TearDown() override { |
| (...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2682 ExpectValid( | 2719 ExpectValid( |
| 2683 true, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); | 2720 true, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); |
| 2684 ExpectValid(true, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, | 2721 ExpectValid(true, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, |
| 2685 GL_DEPTH32F_STENCIL8); | 2722 GL_DEPTH32F_STENCIL8); |
| 2686 | 2723 |
| 2687 ExpectInvalid(true, GL_RGB_INTEGER, GL_INT, GL_RGBA8); | 2724 ExpectInvalid(true, GL_RGB_INTEGER, GL_INT, GL_RGBA8); |
| 2688 } | 2725 } |
| 2689 | 2726 |
| 2690 } // namespace gles2 | 2727 } // namespace gles2 |
| 2691 } // namespace gpu | 2728 } // namespace gpu |
| OLD | NEW |