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