Chromium Code Reviews| 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(), false, "", 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( |
|
Zhenyao Mo
2015/09/15 18:37:16
Can you add a function to handle feature_info_ set
qiankun
2015/09/17 09:39:27
Done.
| |
| 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 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_COLOR_ATTACHMENTS, _)) |
| 184 .WillOnce(SetArgPointee<1>(8)) | |
| 185 .RetiresOnSaturation(); | |
| 186 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_DRAW_BUFFERS, _)) | |
| 187 .WillOnce(SetArgPointee<1>(8)) | |
| 188 .RetiresOnSaturation(); | |
| 189 feature_info_->EnableES3Validators(); | |
| 190 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), | |
| 191 true, "GL_ANGLE_texture_usage", use_default_textures); | |
| 184 TextureManager manager(NULL, | 192 TextureManager manager(NULL, |
| 185 feature_info_.get(), | 193 feature_info_.get(), |
| 186 kMaxTextureSize, | 194 kMaxTextureSize, |
| 187 kMaxCubeMapTextureSize, | 195 kMaxCubeMapTextureSize, |
| 188 kMaxRectangleTextureSize, | 196 kMaxRectangleTextureSize, |
| 189 kMax3DTextureSize, | 197 kMax3DTextureSize, |
| 190 use_default_textures); | 198 use_default_textures); |
| 191 manager.Initialize(); | 199 manager.Initialize(); |
| 192 | 200 |
| 193 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL); | 201 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL); |
| 202 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) != NULL); | |
| 203 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) != NULL); | |
| 194 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL); | 204 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL); |
| 195 | 205 |
| 196 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. | 206 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. |
| 197 | 207 |
| 198 manager.Destroy(false); | 208 manager.Destroy(false); |
| 199 } | 209 } |
| 200 | 210 |
| 201 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) { | 211 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) { |
| 202 bool use_default_textures = false; | 212 bool use_default_textures = false; |
| 203 TestHelper::SetupTextureManagerInitExpectations( | 213 TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion( |
| 204 gl_.get(), "GL_ANGLE_texture_usage", use_default_textures); | 214 gl_.get(), "", "", "OpenGL ES 3.0"); |
| 215 feature_info_->Initialize(); | |
| 216 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_COLOR_ATTACHMENTS, _)) | |
| 217 .WillOnce(SetArgPointee<1>(8)) | |
| 218 .RetiresOnSaturation(); | |
| 219 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_DRAW_BUFFERS, _)) | |
| 220 .WillOnce(SetArgPointee<1>(8)) | |
| 221 .RetiresOnSaturation(); | |
| 222 feature_info_->EnableES3Validators(); | |
| 223 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), | |
| 224 true, "GL_ANGLE_texture_usage", use_default_textures); | |
| 205 TextureManager manager(NULL, | 225 TextureManager manager(NULL, |
| 206 feature_info_.get(), | 226 feature_info_.get(), |
| 207 kMaxTextureSize, | 227 kMaxTextureSize, |
| 208 kMaxCubeMapTextureSize, | 228 kMaxCubeMapTextureSize, |
| 209 kMaxRectangleTextureSize, | 229 kMaxRectangleTextureSize, |
| 210 kMax3DTextureSize, | 230 kMax3DTextureSize, |
| 211 use_default_textures); | 231 use_default_textures); |
| 212 manager.Initialize(); | 232 manager.Initialize(); |
| 213 | 233 |
| 214 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL); | 234 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL); |
| 235 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) == NULL); | |
| 236 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) == NULL); | |
| 215 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL); | 237 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL); |
| 216 | 238 |
| 217 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. | 239 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. |
| 218 | 240 |
| 219 manager.Destroy(false); | 241 manager.Destroy(false); |
| 220 } | 242 } |
| 221 | 243 |
| 222 TEST_F(TextureManagerTest, TextureUsageExt) { | 244 TEST_F(TextureManagerTest, TextureUsageExt) { |
| 223 TestHelper::SetupTextureManagerInitExpectations( | 245 TestHelper::SetupTextureManagerInitExpectations( |
| 224 gl_.get(), "GL_ANGLE_texture_usage", kUseDefaultTextures); | 246 gl_.get(), false, "GL_ANGLE_texture_usage", kUseDefaultTextures); |
| 225 TextureManager manager(NULL, | 247 TextureManager manager(NULL, |
| 226 feature_info_.get(), | 248 feature_info_.get(), |
| 227 kMaxTextureSize, | 249 kMaxTextureSize, |
| 228 kMaxCubeMapTextureSize, | 250 kMaxCubeMapTextureSize, |
| 229 kMaxRectangleTextureSize, | 251 kMaxRectangleTextureSize, |
| 230 kMax3DTextureSize, | 252 kMax3DTextureSize, |
| 231 kUseDefaultTextures); | 253 kUseDefaultTextures); |
| 232 manager.Initialize(); | 254 manager.Initialize(); |
| 233 const GLuint kClient1Id = 1; | 255 const GLuint kClient1Id = 1; |
| 234 const GLuint kService1Id = 11; | 256 const GLuint kService1Id = 11; |
| 235 // Check we can create texture. | 257 // Check we can create texture. |
| 236 manager.CreateTexture(kClient1Id, kService1Id); | 258 manager.CreateTexture(kClient1Id, kService1Id); |
| 237 // Check texture got created. | 259 // Check texture got created. |
| 238 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 260 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 239 ASSERT_TRUE(texture_ref != NULL); | 261 ASSERT_TRUE(texture_ref != NULL); |
| 240 TestHelper::SetTexParameteriWithExpectations( | 262 TestHelper::SetTexParameteriWithExpectations( |
| 241 gl_.get(), error_state_.get(), &manager, texture_ref, | 263 gl_.get(), error_state_.get(), &manager, texture_ref, |
| 242 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR); | 264 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR); |
| 243 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), | 265 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), |
| 244 texture_ref->texture()->usage()); | 266 texture_ref->texture()->usage()); |
| 245 manager.Destroy(false); | 267 manager.Destroy(false); |
| 246 } | 268 } |
| 247 | 269 |
| 248 TEST_F(TextureManagerTest, Destroy) { | 270 TEST_F(TextureManagerTest, Destroy) { |
| 249 const GLuint kClient1Id = 1; | 271 const GLuint kClient1Id = 1; |
| 250 const GLuint kService1Id = 11; | 272 const GLuint kService1Id = 11; |
| 251 TestHelper::SetupTextureManagerInitExpectations( | 273 TestHelper::SetupTextureManagerInitExpectations( |
| 252 gl_.get(), "", kUseDefaultTextures); | 274 gl_.get(), false, "", kUseDefaultTextures); |
| 253 TextureManager manager(NULL, | 275 TextureManager manager(NULL, |
| 254 feature_info_.get(), | 276 feature_info_.get(), |
| 255 kMaxTextureSize, | 277 kMaxTextureSize, |
| 256 kMaxCubeMapTextureSize, | 278 kMaxCubeMapTextureSize, |
| 257 kMaxRectangleTextureSize, | 279 kMaxRectangleTextureSize, |
| 258 kMax3DTextureSize, | 280 kMax3DTextureSize, |
| 259 kUseDefaultTextures); | 281 kUseDefaultTextures); |
| 260 manager.Initialize(); | 282 manager.Initialize(); |
| 261 // Check we can create texture. | 283 // Check we can create texture. |
| 262 manager.CreateTexture(kClient1Id, kService1Id); | 284 manager.CreateTexture(kClient1Id, kService1Id); |
| 263 // Check texture got created. | 285 // Check texture got created. |
| 264 TextureRef* texture = manager.GetTexture(kClient1Id); | 286 TextureRef* texture = manager.GetTexture(kClient1Id); |
| 265 ASSERT_TRUE(texture != NULL); | 287 ASSERT_TRUE(texture != NULL); |
| 266 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) | 288 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) |
| 267 .Times(1) | 289 .Times(1) |
| 268 .RetiresOnSaturation(); | 290 .RetiresOnSaturation(); |
| 269 TestHelper::SetupTextureManagerDestructionExpectations( | 291 TestHelper::SetupTextureManagerDestructionExpectations( |
| 270 gl_.get(), "", kUseDefaultTextures); | 292 gl_.get(), false, "", kUseDefaultTextures); |
| 271 manager.Destroy(true); | 293 manager.Destroy(true); |
| 272 // Check that resources got freed. | 294 // Check that resources got freed. |
| 273 texture = manager.GetTexture(kClient1Id); | 295 texture = manager.GetTexture(kClient1Id); |
| 274 ASSERT_TRUE(texture == NULL); | 296 ASSERT_TRUE(texture == NULL); |
| 275 } | 297 } |
| 276 | 298 |
| 277 TEST_F(TextureManagerTest, MaxValues) { | 299 TEST_F(TextureManagerTest, MaxValues) { |
| 278 // Check we get the right values for the max sizes. | 300 // Check we get the right values for the max sizes. |
| 279 EXPECT_EQ(kMax2dLevels, manager_->MaxLevelsForTarget(GL_TEXTURE_2D)); | 301 EXPECT_EQ(kMax2dLevels, manager_->MaxLevelsForTarget(GL_TEXTURE_2D)); |
| 280 EXPECT_EQ(kMaxCubeMapLevels, | 302 EXPECT_EQ(kMaxCubeMapLevels, |
| (...skipping 1536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1817 memory_tracker2_ = new CountingMemoryTracker; | 1839 memory_tracker2_ = new CountingMemoryTracker; |
| 1818 texture_manager2_.reset( | 1840 texture_manager2_.reset( |
| 1819 new TextureManager(memory_tracker2_.get(), | 1841 new TextureManager(memory_tracker2_.get(), |
| 1820 feature_info_.get(), | 1842 feature_info_.get(), |
| 1821 TextureManagerTest::kMaxTextureSize, | 1843 TextureManagerTest::kMaxTextureSize, |
| 1822 TextureManagerTest::kMaxCubeMapTextureSize, | 1844 TextureManagerTest::kMaxCubeMapTextureSize, |
| 1823 TextureManagerTest::kMaxRectangleTextureSize, | 1845 TextureManagerTest::kMaxRectangleTextureSize, |
| 1824 TextureManagerTest::kMax3DTextureSize, | 1846 TextureManagerTest::kMax3DTextureSize, |
| 1825 kUseDefaultTextures)); | 1847 kUseDefaultTextures)); |
| 1826 TestHelper::SetupTextureManagerInitExpectations( | 1848 TestHelper::SetupTextureManagerInitExpectations( |
| 1827 gl_.get(), "", kUseDefaultTextures); | 1849 gl_.get(), false, "", kUseDefaultTextures); |
| 1828 texture_manager1_->Initialize(); | 1850 texture_manager1_->Initialize(); |
| 1829 TestHelper::SetupTextureManagerInitExpectations( | 1851 TestHelper::SetupTextureManagerInitExpectations( |
| 1830 gl_.get(), "", kUseDefaultTextures); | 1852 gl_.get(), false, "", kUseDefaultTextures); |
| 1831 texture_manager2_->Initialize(); | 1853 texture_manager2_->Initialize(); |
| 1832 } | 1854 } |
| 1833 | 1855 |
| 1834 void TearDown() override { | 1856 void TearDown() override { |
| 1835 texture_manager2_->Destroy(false); | 1857 texture_manager2_->Destroy(false); |
| 1836 texture_manager2_.reset(); | 1858 texture_manager2_.reset(); |
| 1837 texture_manager1_->Destroy(false); | 1859 texture_manager1_->Destroy(false); |
| 1838 texture_manager1_.reset(); | 1860 texture_manager1_.reset(); |
| 1839 GpuServiceTest::TearDown(); | 1861 GpuServiceTest::TearDown(); |
| 1840 } | 1862 } |
| (...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2312 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F); | 2334 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F); |
| 2313 ExpectValid(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); | 2335 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, | 2336 ExpectValid(GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, |
| 2315 GL_DEPTH32F_STENCIL8); | 2337 GL_DEPTH32F_STENCIL8); |
| 2316 | 2338 |
| 2317 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8); | 2339 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8); |
| 2318 } | 2340 } |
| 2319 | 2341 |
| 2320 } // namespace gles2 | 2342 } // namespace gles2 |
| 2321 } // namespace gpu | 2343 } // namespace gpu |
| OLD | NEW |