| 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 <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "gpu/command_buffer/service/error_state_mock.h" | 10 #include "gpu/command_buffer/service/error_state_mock.h" |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 } | 40 } |
| 41 static bool IsCubeComplete(const Texture* texture) { | 41 static bool IsCubeComplete(const Texture* texture) { |
| 42 return texture->cube_complete(); | 42 return texture->cube_complete(); |
| 43 } | 43 } |
| 44 }; | 44 }; |
| 45 | 45 |
| 46 class TextureManagerTest : public GpuServiceTest { | 46 class TextureManagerTest : public GpuServiceTest { |
| 47 public: | 47 public: |
| 48 static const GLint kMaxTextureSize = 16; | 48 static const GLint kMaxTextureSize = 16; |
| 49 static const GLint kMaxCubeMapTextureSize = 8; | 49 static const GLint kMaxCubeMapTextureSize = 8; |
| 50 static const GLint kMaxRectangleTextureSize = 16; |
| 50 static const GLint kMaxExternalTextureSize = 16; | 51 static const GLint kMaxExternalTextureSize = 16; |
| 51 static const GLint kMax2dLevels = 5; | 52 static const GLint kMax2dLevels = 5; |
| 52 static const GLint kMaxCubeMapLevels = 4; | 53 static const GLint kMaxCubeMapLevels = 4; |
| 53 static const GLint kMaxExternalLevels = 1; | 54 static const GLint kMaxExternalLevels = 1; |
| 54 static const bool kUseDefaultTextures = false; | 55 static const bool kUseDefaultTextures = false; |
| 55 | 56 |
| 56 TextureManagerTest() : feature_info_(new FeatureInfo()) {} | 57 TextureManagerTest() : feature_info_(new FeatureInfo()) {} |
| 57 | 58 |
| 58 ~TextureManagerTest() override {} | 59 ~TextureManagerTest() override {} |
| 59 | 60 |
| 60 protected: | 61 protected: |
| 61 void SetUp() override { | 62 void SetUp() override { |
| 62 GpuServiceTest::SetUp(); | 63 GpuServiceTest::SetUp(); |
| 63 manager_.reset(new TextureManager(NULL, | 64 manager_.reset(new TextureManager(NULL, |
| 64 feature_info_.get(), | 65 feature_info_.get(), |
| 65 kMaxTextureSize, | 66 kMaxTextureSize, |
| 66 kMaxCubeMapTextureSize, | 67 kMaxCubeMapTextureSize, |
| 68 kMaxRectangleTextureSize, |
| 67 kUseDefaultTextures)); | 69 kUseDefaultTextures)); |
| 68 TestHelper::SetupTextureManagerInitExpectations( | 70 TestHelper::SetupTextureManagerInitExpectations( |
| 69 gl_.get(), "", kUseDefaultTextures); | 71 gl_.get(), "", kUseDefaultTextures); |
| 70 manager_->Initialize(); | 72 manager_->Initialize(); |
| 71 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); | 73 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); |
| 72 } | 74 } |
| 73 | 75 |
| 74 void TearDown() override { | 76 void TearDown() override { |
| 75 manager_->Destroy(false); | 77 manager_->Destroy(false); |
| 76 manager_.reset(); | 78 manager_.reset(); |
| 77 GpuServiceTest::TearDown(); | 79 GpuServiceTest::TearDown(); |
| 78 } | 80 } |
| 79 | 81 |
| 80 void SetParameter( | 82 void SetParameter( |
| 81 TextureRef* texture_ref, GLenum pname, GLint value, GLenum error) { | 83 TextureRef* texture_ref, GLenum pname, GLint value, GLenum error) { |
| 82 TestHelper::SetTexParameteriWithExpectations( | 84 TestHelper::SetTexParameteriWithExpectations( |
| 83 gl_.get(), error_state_.get(), manager_.get(), | 85 gl_.get(), error_state_.get(), manager_.get(), |
| 84 texture_ref, pname, value, error); | 86 texture_ref, pname, value, error); |
| 85 } | 87 } |
| 86 | 88 |
| 87 scoped_refptr<FeatureInfo> feature_info_; | 89 scoped_refptr<FeatureInfo> feature_info_; |
| 88 scoped_ptr<TextureManager> manager_; | 90 scoped_ptr<TextureManager> manager_; |
| 89 scoped_ptr<MockErrorState> error_state_; | 91 scoped_ptr<MockErrorState> error_state_; |
| 90 }; | 92 }; |
| 91 | 93 |
| 92 // GCC requires these declarations, but MSVC requires they not be present | 94 // GCC requires these declarations, but MSVC requires they not be present |
| 93 #ifndef COMPILER_MSVC | 95 #ifndef COMPILER_MSVC |
| 94 const GLint TextureManagerTest::kMaxTextureSize; | 96 const GLint TextureManagerTest::kMaxTextureSize; |
| 95 const GLint TextureManagerTest::kMaxCubeMapTextureSize; | 97 const GLint TextureManagerTest::kMaxCubeMapTextureSize; |
| 98 const GLint TextureManagerTest::kMaxRectangleTextureSize; |
| 96 const GLint TextureManagerTest::kMaxExternalTextureSize; | 99 const GLint TextureManagerTest::kMaxExternalTextureSize; |
| 97 const GLint TextureManagerTest::kMax2dLevels; | 100 const GLint TextureManagerTest::kMax2dLevels; |
| 98 const GLint TextureManagerTest::kMaxCubeMapLevels; | 101 const GLint TextureManagerTest::kMaxCubeMapLevels; |
| 99 const GLint TextureManagerTest::kMaxExternalLevels; | 102 const GLint TextureManagerTest::kMaxExternalLevels; |
| 100 #endif | 103 #endif |
| 101 | 104 |
| 102 TEST_F(TextureManagerTest, Basic) { | 105 TEST_F(TextureManagerTest, Basic) { |
| 103 const GLuint kClient1Id = 1; | 106 const GLuint kClient1Id = 1; |
| 104 const GLuint kService1Id = 11; | 107 const GLuint kService1Id = 11; |
| 105 const GLuint kClient2Id = 2; | 108 const GLuint kClient2Id = 2; |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) { | 168 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) { |
| 166 bool use_default_textures = true; | 169 bool use_default_textures = true; |
| 167 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 170 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 168 | 171 |
| 169 TestHelper::SetupTextureManagerInitExpectations( | 172 TestHelper::SetupTextureManagerInitExpectations( |
| 170 gl_.get(), "GL_ANGLE_texture_usage", use_default_textures); | 173 gl_.get(), "GL_ANGLE_texture_usage", use_default_textures); |
| 171 TextureManager manager(NULL, | 174 TextureManager manager(NULL, |
| 172 feature_info_.get(), | 175 feature_info_.get(), |
| 173 kMaxTextureSize, | 176 kMaxTextureSize, |
| 174 kMaxCubeMapTextureSize, | 177 kMaxCubeMapTextureSize, |
| 178 kMaxRectangleTextureSize, |
| 175 use_default_textures); | 179 use_default_textures); |
| 176 manager.Initialize(); | 180 manager.Initialize(); |
| 177 | 181 |
| 178 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL); | 182 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL); |
| 179 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL); | 183 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL); |
| 180 | 184 |
| 181 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. | 185 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. |
| 182 | 186 |
| 183 manager.Destroy(false); | 187 manager.Destroy(false); |
| 184 } | 188 } |
| 185 | 189 |
| 186 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) { | 190 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) { |
| 187 bool use_default_textures = false; | 191 bool use_default_textures = false; |
| 188 TestHelper::SetupTextureManagerInitExpectations( | 192 TestHelper::SetupTextureManagerInitExpectations( |
| 189 gl_.get(), "GL_ANGLE_texture_usage", use_default_textures); | 193 gl_.get(), "GL_ANGLE_texture_usage", use_default_textures); |
| 190 TextureManager manager(NULL, | 194 TextureManager manager(NULL, |
| 191 feature_info_.get(), | 195 feature_info_.get(), |
| 192 kMaxTextureSize, | 196 kMaxTextureSize, |
| 193 kMaxCubeMapTextureSize, | 197 kMaxCubeMapTextureSize, |
| 198 kMaxRectangleTextureSize, |
| 194 use_default_textures); | 199 use_default_textures); |
| 195 manager.Initialize(); | 200 manager.Initialize(); |
| 196 | 201 |
| 197 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL); | 202 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL); |
| 198 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL); | 203 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL); |
| 199 | 204 |
| 200 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. | 205 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. |
| 201 | 206 |
| 202 manager.Destroy(false); | 207 manager.Destroy(false); |
| 203 } | 208 } |
| 204 | 209 |
| 205 TEST_F(TextureManagerTest, TextureUsageExt) { | 210 TEST_F(TextureManagerTest, TextureUsageExt) { |
| 206 TestHelper::SetupTextureManagerInitExpectations( | 211 TestHelper::SetupTextureManagerInitExpectations( |
| 207 gl_.get(), "GL_ANGLE_texture_usage", kUseDefaultTextures); | 212 gl_.get(), "GL_ANGLE_texture_usage", kUseDefaultTextures); |
| 208 TextureManager manager(NULL, | 213 TextureManager manager(NULL, |
| 209 feature_info_.get(), | 214 feature_info_.get(), |
| 210 kMaxTextureSize, | 215 kMaxTextureSize, |
| 211 kMaxCubeMapTextureSize, | 216 kMaxCubeMapTextureSize, |
| 217 kMaxRectangleTextureSize, |
| 212 kUseDefaultTextures); | 218 kUseDefaultTextures); |
| 213 manager.Initialize(); | 219 manager.Initialize(); |
| 214 const GLuint kClient1Id = 1; | 220 const GLuint kClient1Id = 1; |
| 215 const GLuint kService1Id = 11; | 221 const GLuint kService1Id = 11; |
| 216 // Check we can create texture. | 222 // Check we can create texture. |
| 217 manager.CreateTexture(kClient1Id, kService1Id); | 223 manager.CreateTexture(kClient1Id, kService1Id); |
| 218 // Check texture got created. | 224 // Check texture got created. |
| 219 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 225 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 220 ASSERT_TRUE(texture_ref != NULL); | 226 ASSERT_TRUE(texture_ref != NULL); |
| 221 TestHelper::SetTexParameteriWithExpectations( | 227 TestHelper::SetTexParameteriWithExpectations( |
| 222 gl_.get(), error_state_.get(), &manager, texture_ref, | 228 gl_.get(), error_state_.get(), &manager, texture_ref, |
| 223 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR); | 229 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR); |
| 224 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), | 230 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), |
| 225 texture_ref->texture()->usage()); | 231 texture_ref->texture()->usage()); |
| 226 manager.Destroy(false); | 232 manager.Destroy(false); |
| 227 } | 233 } |
| 228 | 234 |
| 229 TEST_F(TextureManagerTest, Destroy) { | 235 TEST_F(TextureManagerTest, Destroy) { |
| 230 const GLuint kClient1Id = 1; | 236 const GLuint kClient1Id = 1; |
| 231 const GLuint kService1Id = 11; | 237 const GLuint kService1Id = 11; |
| 232 TestHelper::SetupTextureManagerInitExpectations( | 238 TestHelper::SetupTextureManagerInitExpectations( |
| 233 gl_.get(), "", kUseDefaultTextures); | 239 gl_.get(), "", kUseDefaultTextures); |
| 234 TextureManager manager(NULL, | 240 TextureManager manager(NULL, |
| 235 feature_info_.get(), | 241 feature_info_.get(), |
| 236 kMaxTextureSize, | 242 kMaxTextureSize, |
| 237 kMaxCubeMapTextureSize, | 243 kMaxCubeMapTextureSize, |
| 244 kMaxRectangleTextureSize, |
| 238 kUseDefaultTextures); | 245 kUseDefaultTextures); |
| 239 manager.Initialize(); | 246 manager.Initialize(); |
| 240 // Check we can create texture. | 247 // Check we can create texture. |
| 241 manager.CreateTexture(kClient1Id, kService1Id); | 248 manager.CreateTexture(kClient1Id, kService1Id); |
| 242 // Check texture got created. | 249 // Check texture got created. |
| 243 TextureRef* texture = manager.GetTexture(kClient1Id); | 250 TextureRef* texture = manager.GetTexture(kClient1Id); |
| 244 ASSERT_TRUE(texture != NULL); | 251 ASSERT_TRUE(texture != NULL); |
| 245 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) | 252 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) |
| 246 .Times(1) | 253 .Times(1) |
| 247 .RetiresOnSaturation(); | 254 .RetiresOnSaturation(); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 EXPECT_EQ(kMaxCubeMapTextureSize, | 287 EXPECT_EQ(kMaxCubeMapTextureSize, |
| 281 manager_->MaxSizeForTarget(GL_TEXTURE_CUBE_MAP_NEGATIVE_X)); | 288 manager_->MaxSizeForTarget(GL_TEXTURE_CUBE_MAP_NEGATIVE_X)); |
| 282 EXPECT_EQ(kMaxCubeMapTextureSize, | 289 EXPECT_EQ(kMaxCubeMapTextureSize, |
| 283 manager_->MaxSizeForTarget(GL_TEXTURE_CUBE_MAP_POSITIVE_Y)); | 290 manager_->MaxSizeForTarget(GL_TEXTURE_CUBE_MAP_POSITIVE_Y)); |
| 284 EXPECT_EQ(kMaxCubeMapTextureSize, | 291 EXPECT_EQ(kMaxCubeMapTextureSize, |
| 285 manager_->MaxSizeForTarget(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y)); | 292 manager_->MaxSizeForTarget(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y)); |
| 286 EXPECT_EQ(kMaxCubeMapTextureSize, | 293 EXPECT_EQ(kMaxCubeMapTextureSize, |
| 287 manager_->MaxSizeForTarget(GL_TEXTURE_CUBE_MAP_POSITIVE_Z)); | 294 manager_->MaxSizeForTarget(GL_TEXTURE_CUBE_MAP_POSITIVE_Z)); |
| 288 EXPECT_EQ(kMaxCubeMapTextureSize, | 295 EXPECT_EQ(kMaxCubeMapTextureSize, |
| 289 manager_->MaxSizeForTarget(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z)); | 296 manager_->MaxSizeForTarget(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z)); |
| 297 EXPECT_EQ(kMaxRectangleTextureSize, |
| 298 manager_->MaxSizeForTarget(GL_TEXTURE_RECTANGLE_ARB)); |
| 290 EXPECT_EQ(kMaxExternalTextureSize, | 299 EXPECT_EQ(kMaxExternalTextureSize, |
| 291 manager_->MaxSizeForTarget(GL_TEXTURE_EXTERNAL_OES)); | 300 manager_->MaxSizeForTarget(GL_TEXTURE_EXTERNAL_OES)); |
| 292 } | 301 } |
| 293 | 302 |
| 294 TEST_F(TextureManagerTest, ValidForTarget) { | 303 TEST_F(TextureManagerTest, ValidForTarget) { |
| 295 // check 2d | 304 // check 2d |
| 296 EXPECT_TRUE(manager_->ValidForTarget( | 305 EXPECT_TRUE(manager_->ValidForTarget( |
| 297 GL_TEXTURE_2D, 0, kMaxTextureSize, kMaxTextureSize, 1)); | 306 GL_TEXTURE_2D, 0, kMaxTextureSize, kMaxTextureSize, 1)); |
| 298 EXPECT_TRUE(manager_->ValidForTarget( | 307 EXPECT_TRUE(manager_->ValidForTarget( |
| 299 GL_TEXTURE_2D, kMax2dLevels - 1, 1, 1, 1)); | 308 GL_TEXTURE_2D, kMax2dLevels - 1, 1, 1, 1)); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 364 | 373 |
| 365 TEST_F(TextureManagerTest, ValidForTargetNPOT) { | 374 TEST_F(TextureManagerTest, ValidForTargetNPOT) { |
| 366 TestHelper::SetupFeatureInfoInitExpectations( | 375 TestHelper::SetupFeatureInfoInitExpectations( |
| 367 gl_.get(), "GL_OES_texture_npot"); | 376 gl_.get(), "GL_OES_texture_npot"); |
| 368 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 377 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 369 feature_info->Initialize(); | 378 feature_info->Initialize(); |
| 370 TextureManager manager(NULL, | 379 TextureManager manager(NULL, |
| 371 feature_info.get(), | 380 feature_info.get(), |
| 372 kMaxTextureSize, | 381 kMaxTextureSize, |
| 373 kMaxCubeMapTextureSize, | 382 kMaxCubeMapTextureSize, |
| 383 kMaxRectangleTextureSize, |
| 374 kUseDefaultTextures); | 384 kUseDefaultTextures); |
| 375 // Check NPOT width on level 0 | 385 // Check NPOT width on level 0 |
| 376 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1)); | 386 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1)); |
| 377 // Check NPOT height on level 0 | 387 // Check NPOT height on level 0 |
| 378 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1)); | 388 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1)); |
| 379 // Check NPOT width on level 1 | 389 // Check NPOT width on level 1 |
| 380 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1)); | 390 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1)); |
| 381 // Check NPOT height on level 1 | 391 // Check NPOT height on level 1 |
| 382 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 2, 5, 1)); | 392 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 2, 5, 1)); |
| 383 manager.Destroy(false); | 393 manager.Destroy(false); |
| 384 } | 394 } |
| 385 | 395 |
| 386 class TextureTestBase : public GpuServiceTest { | 396 class TextureTestBase : public GpuServiceTest { |
| 387 public: | 397 public: |
| 388 static const GLint kMaxTextureSize = 16; | 398 static const GLint kMaxTextureSize = 16; |
| 389 static const GLint kMaxCubeMapTextureSize = 8; | 399 static const GLint kMaxCubeMapTextureSize = 8; |
| 400 static const GLint kMaxRectangleTextureSize = 16; |
| 390 static const GLint kMax2dLevels = 5; | 401 static const GLint kMax2dLevels = 5; |
| 391 static const GLint kMaxCubeMapLevels = 4; | 402 static const GLint kMaxCubeMapLevels = 4; |
| 392 static const GLuint kClient1Id = 1; | 403 static const GLuint kClient1Id = 1; |
| 393 static const GLuint kService1Id = 11; | 404 static const GLuint kService1Id = 11; |
| 394 static const bool kUseDefaultTextures = false; | 405 static const bool kUseDefaultTextures = false; |
| 395 | 406 |
| 396 TextureTestBase() | 407 TextureTestBase() |
| 397 : feature_info_(new FeatureInfo()) { | 408 : feature_info_(new FeatureInfo()) { |
| 398 } | 409 } |
| 399 ~TextureTestBase() override { texture_ref_ = NULL; } | 410 ~TextureTestBase() override { texture_ref_ = NULL; } |
| 400 | 411 |
| 401 protected: | 412 protected: |
| 402 void SetUpBase(MemoryTracker* memory_tracker, std::string extensions) { | 413 void SetUpBase(MemoryTracker* memory_tracker, std::string extensions) { |
| 403 GpuServiceTest::SetUp(); | 414 GpuServiceTest::SetUp(); |
| 404 if (!extensions.empty()) { | 415 if (!extensions.empty()) { |
| 405 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), | 416 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), |
| 406 extensions.c_str()); | 417 extensions.c_str()); |
| 407 feature_info_->Initialize(); | 418 feature_info_->Initialize(); |
| 408 } | 419 } |
| 409 | 420 |
| 410 manager_.reset(new TextureManager(memory_tracker, | 421 manager_.reset(new TextureManager(memory_tracker, |
| 411 feature_info_.get(), | 422 feature_info_.get(), |
| 412 kMaxTextureSize, | 423 kMaxTextureSize, |
| 413 kMaxCubeMapTextureSize, | 424 kMaxCubeMapTextureSize, |
| 425 kMaxRectangleTextureSize, |
| 414 kUseDefaultTextures)); | 426 kUseDefaultTextures)); |
| 415 decoder_.reset(new ::testing::StrictMock<gles2::MockGLES2Decoder>()); | 427 decoder_.reset(new ::testing::StrictMock<gles2::MockGLES2Decoder>()); |
| 416 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); | 428 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); |
| 417 manager_->CreateTexture(kClient1Id, kService1Id); | 429 manager_->CreateTexture(kClient1Id, kService1Id); |
| 418 texture_ref_ = manager_->GetTexture(kClient1Id); | 430 texture_ref_ = manager_->GetTexture(kClient1Id); |
| 419 ASSERT_TRUE(texture_ref_.get() != NULL); | 431 ASSERT_TRUE(texture_ref_.get() != NULL); |
| 420 } | 432 } |
| 421 | 433 |
| 422 void TearDown() override { | 434 void TearDown() override { |
| 423 if (texture_ref_.get()) { | 435 if (texture_ref_.get()) { |
| (...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 837 | 849 |
| 838 TEST_F(TextureTest, NPOT2DNPOTOK) { | 850 TEST_F(TextureTest, NPOT2DNPOTOK) { |
| 839 TestHelper::SetupFeatureInfoInitExpectations( | 851 TestHelper::SetupFeatureInfoInitExpectations( |
| 840 gl_.get(), "GL_OES_texture_npot"); | 852 gl_.get(), "GL_OES_texture_npot"); |
| 841 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 853 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 842 feature_info->Initialize(); | 854 feature_info->Initialize(); |
| 843 TextureManager manager(NULL, | 855 TextureManager manager(NULL, |
| 844 feature_info.get(), | 856 feature_info.get(), |
| 845 kMaxTextureSize, | 857 kMaxTextureSize, |
| 846 kMaxCubeMapTextureSize, | 858 kMaxCubeMapTextureSize, |
| 859 kMaxRectangleTextureSize, |
| 847 kUseDefaultTextures); | 860 kUseDefaultTextures); |
| 848 manager.CreateTexture(kClient1Id, kService1Id); | 861 manager.CreateTexture(kClient1Id, kService1Id); |
| 849 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 862 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 850 ASSERT_TRUE(texture_ref != NULL); | 863 ASSERT_TRUE(texture_ref != NULL); |
| 851 Texture* texture = texture_ref->texture(); | 864 Texture* texture = texture_ref->texture(); |
| 852 | 865 |
| 853 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 866 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 854 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 867 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 855 // Check Setting level 0 to NPOT | 868 // Check Setting level 0 to NPOT |
| 856 manager.SetLevelInfo(texture_ref, | 869 manager.SetLevelInfo(texture_ref, |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1128 | 1141 |
| 1129 TEST_F(TextureTest, FloatNotLinear) { | 1142 TEST_F(TextureTest, FloatNotLinear) { |
| 1130 TestHelper::SetupFeatureInfoInitExpectations( | 1143 TestHelper::SetupFeatureInfoInitExpectations( |
| 1131 gl_.get(), "GL_OES_texture_float"); | 1144 gl_.get(), "GL_OES_texture_float"); |
| 1132 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1145 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1133 feature_info->Initialize(); | 1146 feature_info->Initialize(); |
| 1134 TextureManager manager(NULL, | 1147 TextureManager manager(NULL, |
| 1135 feature_info.get(), | 1148 feature_info.get(), |
| 1136 kMaxTextureSize, | 1149 kMaxTextureSize, |
| 1137 kMaxCubeMapTextureSize, | 1150 kMaxCubeMapTextureSize, |
| 1151 kMaxRectangleTextureSize, |
| 1138 kUseDefaultTextures); | 1152 kUseDefaultTextures); |
| 1139 manager.CreateTexture(kClient1Id, kService1Id); | 1153 manager.CreateTexture(kClient1Id, kService1Id); |
| 1140 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1154 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1141 ASSERT_TRUE(texture_ref != NULL); | 1155 ASSERT_TRUE(texture_ref != NULL); |
| 1142 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1156 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 1143 Texture* texture = texture_ref->texture(); | 1157 Texture* texture = texture_ref->texture(); |
| 1144 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1158 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 1145 manager.SetLevelInfo(texture_ref, | 1159 manager.SetLevelInfo(texture_ref, |
| 1146 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true); | 1160 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true); |
| 1147 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 1161 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1158 | 1172 |
| 1159 TEST_F(TextureTest, FloatLinear) { | 1173 TEST_F(TextureTest, FloatLinear) { |
| 1160 TestHelper::SetupFeatureInfoInitExpectations( | 1174 TestHelper::SetupFeatureInfoInitExpectations( |
| 1161 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear"); | 1175 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear"); |
| 1162 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1176 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1163 feature_info->Initialize(); | 1177 feature_info->Initialize(); |
| 1164 TextureManager manager(NULL, | 1178 TextureManager manager(NULL, |
| 1165 feature_info.get(), | 1179 feature_info.get(), |
| 1166 kMaxTextureSize, | 1180 kMaxTextureSize, |
| 1167 kMaxCubeMapTextureSize, | 1181 kMaxCubeMapTextureSize, |
| 1182 kMaxRectangleTextureSize, |
| 1168 kUseDefaultTextures); | 1183 kUseDefaultTextures); |
| 1169 manager.CreateTexture(kClient1Id, kService1Id); | 1184 manager.CreateTexture(kClient1Id, kService1Id); |
| 1170 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1185 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1171 ASSERT_TRUE(texture_ref != NULL); | 1186 ASSERT_TRUE(texture_ref != NULL); |
| 1172 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1187 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 1173 Texture* texture = texture_ref->texture(); | 1188 Texture* texture = texture_ref->texture(); |
| 1174 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1189 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 1175 manager.SetLevelInfo(texture_ref, | 1190 manager.SetLevelInfo(texture_ref, |
| 1176 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true); | 1191 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true); |
| 1177 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 1192 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 1178 manager.Destroy(false); | 1193 manager.Destroy(false); |
| 1179 } | 1194 } |
| 1180 | 1195 |
| 1181 TEST_F(TextureTest, HalfFloatNotLinear) { | 1196 TEST_F(TextureTest, HalfFloatNotLinear) { |
| 1182 TestHelper::SetupFeatureInfoInitExpectations( | 1197 TestHelper::SetupFeatureInfoInitExpectations( |
| 1183 gl_.get(), "GL_OES_texture_half_float"); | 1198 gl_.get(), "GL_OES_texture_half_float"); |
| 1184 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1199 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1185 feature_info->Initialize(); | 1200 feature_info->Initialize(); |
| 1186 TextureManager manager(NULL, | 1201 TextureManager manager(NULL, |
| 1187 feature_info.get(), | 1202 feature_info.get(), |
| 1188 kMaxTextureSize, | 1203 kMaxTextureSize, |
| 1189 kMaxCubeMapTextureSize, | 1204 kMaxCubeMapTextureSize, |
| 1205 kMaxRectangleTextureSize, |
| 1190 kUseDefaultTextures); | 1206 kUseDefaultTextures); |
| 1191 manager.CreateTexture(kClient1Id, kService1Id); | 1207 manager.CreateTexture(kClient1Id, kService1Id); |
| 1192 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1208 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1193 ASSERT_TRUE(texture_ref != NULL); | 1209 ASSERT_TRUE(texture_ref != NULL); |
| 1194 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1210 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 1195 Texture* texture = texture_ref->texture(); | 1211 Texture* texture = texture_ref->texture(); |
| 1196 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1212 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 1197 manager.SetLevelInfo(texture_ref, | 1213 manager.SetLevelInfo(texture_ref, |
| 1198 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true); | 1214 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true); |
| 1199 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 1215 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1210 | 1226 |
| 1211 TEST_F(TextureTest, HalfFloatLinear) { | 1227 TEST_F(TextureTest, HalfFloatLinear) { |
| 1212 TestHelper::SetupFeatureInfoInitExpectations( | 1228 TestHelper::SetupFeatureInfoInitExpectations( |
| 1213 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); | 1229 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); |
| 1214 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1230 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1215 feature_info->Initialize(); | 1231 feature_info->Initialize(); |
| 1216 TextureManager manager(NULL, | 1232 TextureManager manager(NULL, |
| 1217 feature_info.get(), | 1233 feature_info.get(), |
| 1218 kMaxTextureSize, | 1234 kMaxTextureSize, |
| 1219 kMaxCubeMapTextureSize, | 1235 kMaxCubeMapTextureSize, |
| 1236 kMaxRectangleTextureSize, |
| 1220 kUseDefaultTextures); | 1237 kUseDefaultTextures); |
| 1221 manager.CreateTexture(kClient1Id, kService1Id); | 1238 manager.CreateTexture(kClient1Id, kService1Id); |
| 1222 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1239 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1223 ASSERT_TRUE(texture_ref != NULL); | 1240 ASSERT_TRUE(texture_ref != NULL); |
| 1224 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1241 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 1225 Texture* texture = texture_ref->texture(); | 1242 Texture* texture = texture_ref->texture(); |
| 1226 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1243 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 1227 manager.SetLevelInfo(texture_ref, | 1244 manager.SetLevelInfo(texture_ref, |
| 1228 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true); | 1245 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true); |
| 1229 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 1246 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 1230 manager.Destroy(false); | 1247 manager.Destroy(false); |
| 1231 } | 1248 } |
| 1232 | 1249 |
| 1233 TEST_F(TextureTest, EGLImageExternal) { | 1250 TEST_F(TextureTest, EGLImageExternal) { |
| 1234 TestHelper::SetupFeatureInfoInitExpectations( | 1251 TestHelper::SetupFeatureInfoInitExpectations( |
| 1235 gl_.get(), "GL_OES_EGL_image_external"); | 1252 gl_.get(), "GL_OES_EGL_image_external"); |
| 1236 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1253 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1237 feature_info->Initialize(); | 1254 feature_info->Initialize(); |
| 1238 TextureManager manager(NULL, | 1255 TextureManager manager(NULL, |
| 1239 feature_info.get(), | 1256 feature_info.get(), |
| 1240 kMaxTextureSize, | 1257 kMaxTextureSize, |
| 1241 kMaxCubeMapTextureSize, | 1258 kMaxCubeMapTextureSize, |
| 1259 kMaxRectangleTextureSize, |
| 1242 kUseDefaultTextures); | 1260 kUseDefaultTextures); |
| 1243 manager.CreateTexture(kClient1Id, kService1Id); | 1261 manager.CreateTexture(kClient1Id, kService1Id); |
| 1244 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1262 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1245 ASSERT_TRUE(texture_ref != NULL); | 1263 ASSERT_TRUE(texture_ref != NULL); |
| 1246 manager.SetTarget(texture_ref, GL_TEXTURE_EXTERNAL_OES); | 1264 manager.SetTarget(texture_ref, GL_TEXTURE_EXTERNAL_OES); |
| 1247 Texture* texture = texture_ref->texture(); | 1265 Texture* texture = texture_ref->texture(); |
| 1248 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target()); | 1266 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target()); |
| 1249 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); | 1267 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); |
| 1250 manager.Destroy(false); | 1268 manager.Destroy(false); |
| 1251 } | 1269 } |
| 1252 | 1270 |
| 1253 TEST_F(TextureTest, DepthTexture) { | 1271 TEST_F(TextureTest, DepthTexture) { |
| 1254 TestHelper::SetupFeatureInfoInitExpectations( | 1272 TestHelper::SetupFeatureInfoInitExpectations( |
| 1255 gl_.get(), "GL_ANGLE_depth_texture"); | 1273 gl_.get(), "GL_ANGLE_depth_texture"); |
| 1256 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1274 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1257 feature_info->Initialize(); | 1275 feature_info->Initialize(); |
| 1258 TextureManager manager(NULL, | 1276 TextureManager manager(NULL, |
| 1259 feature_info.get(), | 1277 feature_info.get(), |
| 1260 kMaxTextureSize, | 1278 kMaxTextureSize, |
| 1261 kMaxCubeMapTextureSize, | 1279 kMaxCubeMapTextureSize, |
| 1280 kMaxRectangleTextureSize, |
| 1262 kUseDefaultTextures); | 1281 kUseDefaultTextures); |
| 1263 manager.CreateTexture(kClient1Id, kService1Id); | 1282 manager.CreateTexture(kClient1Id, kService1Id); |
| 1264 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1283 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1265 ASSERT_TRUE(texture_ref != NULL); | 1284 ASSERT_TRUE(texture_ref != NULL); |
| 1266 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1285 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 1267 manager.SetLevelInfo( | 1286 manager.SetLevelInfo( |
| 1268 texture_ref, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4, 1, 0, | 1287 texture_ref, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4, 1, 0, |
| 1269 GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, false); | 1288 GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, false); |
| 1270 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); | 1289 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); |
| 1271 manager.Destroy(false); | 1290 manager.Destroy(false); |
| (...skipping 920 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2192 ~SharedTextureTest() override {} | 2211 ~SharedTextureTest() override {} |
| 2193 | 2212 |
| 2194 void SetUp() override { | 2213 void SetUp() override { |
| 2195 GpuServiceTest::SetUp(); | 2214 GpuServiceTest::SetUp(); |
| 2196 memory_tracker1_ = new CountingMemoryTracker; | 2215 memory_tracker1_ = new CountingMemoryTracker; |
| 2197 texture_manager1_.reset( | 2216 texture_manager1_.reset( |
| 2198 new TextureManager(memory_tracker1_.get(), | 2217 new TextureManager(memory_tracker1_.get(), |
| 2199 feature_info_.get(), | 2218 feature_info_.get(), |
| 2200 TextureManagerTest::kMaxTextureSize, | 2219 TextureManagerTest::kMaxTextureSize, |
| 2201 TextureManagerTest::kMaxCubeMapTextureSize, | 2220 TextureManagerTest::kMaxCubeMapTextureSize, |
| 2221 TextureManagerTest::kMaxRectangleTextureSize, |
| 2202 kUseDefaultTextures)); | 2222 kUseDefaultTextures)); |
| 2203 memory_tracker2_ = new CountingMemoryTracker; | 2223 memory_tracker2_ = new CountingMemoryTracker; |
| 2204 texture_manager2_.reset( | 2224 texture_manager2_.reset( |
| 2205 new TextureManager(memory_tracker2_.get(), | 2225 new TextureManager(memory_tracker2_.get(), |
| 2206 feature_info_.get(), | 2226 feature_info_.get(), |
| 2207 TextureManagerTest::kMaxTextureSize, | 2227 TextureManagerTest::kMaxTextureSize, |
| 2208 TextureManagerTest::kMaxCubeMapTextureSize, | 2228 TextureManagerTest::kMaxCubeMapTextureSize, |
| 2229 TextureManagerTest::kMaxRectangleTextureSize, |
| 2209 kUseDefaultTextures)); | 2230 kUseDefaultTextures)); |
| 2210 TestHelper::SetupTextureManagerInitExpectations( | 2231 TestHelper::SetupTextureManagerInitExpectations( |
| 2211 gl_.get(), "", kUseDefaultTextures); | 2232 gl_.get(), "", kUseDefaultTextures); |
| 2212 texture_manager1_->Initialize(); | 2233 texture_manager1_->Initialize(); |
| 2213 TestHelper::SetupTextureManagerInitExpectations( | 2234 TestHelper::SetupTextureManagerInitExpectations( |
| 2214 gl_.get(), "", kUseDefaultTextures); | 2235 gl_.get(), "", kUseDefaultTextures); |
| 2215 texture_manager2_->Initialize(); | 2236 texture_manager2_->Initialize(); |
| 2216 } | 2237 } |
| 2217 | 2238 |
| 2218 void TearDown() override { | 2239 void TearDown() override { |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2492 | 2513 |
| 2493 EXPECT_CALL(*gl_, DeleteTextures(1, _)) | 2514 EXPECT_CALL(*gl_, DeleteTextures(1, _)) |
| 2494 .Times(1) | 2515 .Times(1) |
| 2495 .RetiresOnSaturation(); | 2516 .RetiresOnSaturation(); |
| 2496 texture_manager1_->RemoveTexture(10); | 2517 texture_manager1_->RemoveTexture(10); |
| 2497 texture_manager2_->RemoveTexture(20); | 2518 texture_manager2_->RemoveTexture(20); |
| 2498 } | 2519 } |
| 2499 | 2520 |
| 2500 } // namespace gles2 | 2521 } // namespace gles2 |
| 2501 } // namespace gpu | 2522 } // namespace gpu |
| OLD | NEW |