Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(345)

Side by Side Diff: gpu/command_buffer/service/texture_manager_unittest.cc

Issue 816543004: Update from https://crrev.com/308996 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/texture_manager.cc ('k') | gpu/command_buffer/service/valuebuffer_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698