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

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

Issue 2378583003: Ping watchdog thread during GpuChannel destruction (Closed)
Patch Set: feedback Created 4 years, 2 months 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 <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
11 #include <utility> 11 #include <utility>
12 12
13 #include "base/command_line.h" 13 #include "base/command_line.h"
14 #include "base/macros.h" 14 #include "base/macros.h"
15 #include "gpu/command_buffer/service/error_state_mock.h" 15 #include "gpu/command_buffer/service/error_state_mock.h"
16 #include "gpu/command_buffer/service/feature_info.h" 16 #include "gpu/command_buffer/service/feature_info.h"
17 #include "gpu/command_buffer/service/framebuffer_manager.h" 17 #include "gpu/command_buffer/service/framebuffer_manager.h"
18 #include "gpu/command_buffer/service/gl_stream_texture_image.h" 18 #include "gpu/command_buffer/service/gl_stream_texture_image.h"
19 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" 19 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h"
20 #include "gpu/command_buffer/service/gpu_service_test.h" 20 #include "gpu/command_buffer/service/gpu_service_test.h"
21 #include "gpu/command_buffer/service/mailbox_manager.h" 21 #include "gpu/command_buffer/service/mailbox_manager.h"
22 #include "gpu/command_buffer/service/memory_tracking.h" 22 #include "gpu/command_buffer/service/memory_tracking.h"
23 #include "gpu/command_buffer/service/mocks.h" 23 #include "gpu/command_buffer/service/mocks.h"
24 #include "gpu/command_buffer/service/progress_reporter_stub.h"
24 #include "gpu/command_buffer/service/test_helper.h" 25 #include "gpu/command_buffer/service/test_helper.h"
25 #include "testing/gtest/include/gtest/gtest.h" 26 #include "testing/gtest/include/gtest/gtest.h"
26 #include "ui/gl/gl_image_stub.h" 27 #include "ui/gl/gl_image_stub.h"
27 #include "ui/gl/gl_mock.h" 28 #include "ui/gl/gl_mock.h"
28 #include "ui/gl/gl_switches.h" 29 #include "ui/gl/gl_switches.h"
29 30
30 using ::testing::AtLeast; 31 using ::testing::AtLeast;
31 using ::testing::Pointee; 32 using ::testing::Pointee;
32 using ::testing::Return; 33 using ::testing::Return;
33 using ::testing::SetArgPointee; 34 using ::testing::SetArgPointee;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 command_line.AppendSwitch(switches::kEnableUnsafeES3APIs); 75 command_line.AppendSwitch(switches::kEnableUnsafeES3APIs);
75 GpuDriverBugWorkarounds gpu_driver_bug_workaround(&command_line); 76 GpuDriverBugWorkarounds gpu_driver_bug_workaround(&command_line);
76 feature_info_ = new FeatureInfo(command_line, gpu_driver_bug_workaround); 77 feature_info_ = new FeatureInfo(command_line, gpu_driver_bug_workaround);
77 } 78 }
78 79
79 ~TextureManagerTest() override {} 80 ~TextureManagerTest() override {}
80 81
81 protected: 82 protected:
82 void SetUp() override { 83 void SetUp() override {
83 GpuServiceTest::SetUp(); 84 GpuServiceTest::SetUp();
84 manager_.reset(new TextureManager(NULL, 85 manager_.reset(new TextureManager(
85 feature_info_.get(), 86 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize,
86 kMaxTextureSize, 87 kMaxRectangleTextureSize, kMax3DTextureSize, kMaxArrayTextureLayers,
87 kMaxCubeMapTextureSize, 88 kUseDefaultTextures, &progress_reporter_));
88 kMaxRectangleTextureSize,
89 kMax3DTextureSize,
90 kMaxArrayTextureLayers,
91 kUseDefaultTextures));
92 SetupFeatureInfo("", "OpenGL ES 2.0", false); 89 SetupFeatureInfo("", "OpenGL ES 2.0", false);
93 TestHelper::SetupTextureManagerInitExpectations( 90 TestHelper::SetupTextureManagerInitExpectations(
94 gl_.get(), false, false, false, "", kUseDefaultTextures); 91 gl_.get(), false, false, false, "", kUseDefaultTextures);
95 manager_->Initialize(); 92 manager_->Initialize();
96 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); 93 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>());
97 } 94 }
98 95
99 void TearDown() override { 96 void TearDown() override {
100 manager_->Destroy(false); 97 manager_->Destroy(false);
101 manager_.reset(); 98 manager_.reset();
(...skipping 21 matching lines...) Expand all
123 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_DRAW_BUFFERS, _)) 120 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_DRAW_BUFFERS, _))
124 .WillOnce(SetArgPointee<1>(8)) 121 .WillOnce(SetArgPointee<1>(8))
125 .RetiresOnSaturation(); 122 .RetiresOnSaturation();
126 feature_info_->EnableES3Validators(); 123 feature_info_->EnableES3Validators();
127 } 124 }
128 } 125 }
129 126
130 scoped_refptr<FeatureInfo> feature_info_; 127 scoped_refptr<FeatureInfo> feature_info_;
131 std::unique_ptr<TextureManager> manager_; 128 std::unique_ptr<TextureManager> manager_;
132 std::unique_ptr<MockErrorState> error_state_; 129 std::unique_ptr<MockErrorState> error_state_;
130 ProgressReporterStub progress_reporter_;
133 }; 131 };
134 132
135 // GCC requires these declarations, but MSVC requires they not be present 133 // GCC requires these declarations, but MSVC requires they not be present
136 #ifndef COMPILER_MSVC 134 #ifndef COMPILER_MSVC
137 const GLint TextureManagerTest::kMaxTextureSize; 135 const GLint TextureManagerTest::kMaxTextureSize;
138 const GLint TextureManagerTest::kMaxCubeMapTextureSize; 136 const GLint TextureManagerTest::kMaxCubeMapTextureSize;
139 const GLint TextureManagerTest::kMaxRectangleTextureSize; 137 const GLint TextureManagerTest::kMaxRectangleTextureSize;
140 const GLint TextureManagerTest::kMaxExternalTextureSize; 138 const GLint TextureManagerTest::kMaxExternalTextureSize;
141 const GLint TextureManagerTest::kMax3DTextureSize; 139 const GLint TextureManagerTest::kMax3DTextureSize;
142 const GLint TextureManagerTest::kMaxArrayTextureLayers; 140 const GLint TextureManagerTest::kMaxArrayTextureLayers;
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_t()); 239 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_t());
242 SetParameter(texture_ref, GL_TEXTURE_MAX_ANISOTROPY_EXT, 0, GL_INVALID_VALUE); 240 SetParameter(texture_ref, GL_TEXTURE_MAX_ANISOTROPY_EXT, 0, GL_INVALID_VALUE);
243 SetParameter(texture_ref, GL_TEXTURE_IMMUTABLE_FORMAT, 0, GL_INVALID_ENUM); 241 SetParameter(texture_ref, GL_TEXTURE_IMMUTABLE_FORMAT, 0, GL_INVALID_ENUM);
244 SetParameter(texture_ref, GL_TEXTURE_IMMUTABLE_LEVELS, 0, GL_INVALID_ENUM); 242 SetParameter(texture_ref, GL_TEXTURE_IMMUTABLE_LEVELS, 0, GL_INVALID_ENUM);
245 } 243 }
246 244
247 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) { 245 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) {
248 bool use_default_textures = true; 246 bool use_default_textures = true;
249 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), 247 TestHelper::SetupTextureManagerInitExpectations(gl_.get(),
250 false, false, false, "GL_ANGLE_texture_usage", use_default_textures); 248 false, false, false, "GL_ANGLE_texture_usage", use_default_textures);
251 TextureManager manager(NULL, 249 TextureManager manager(NULL, feature_info_.get(), kMaxTextureSize,
252 feature_info_.get(), 250 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
253 kMaxTextureSize, 251 kMax3DTextureSize, kMaxArrayTextureLayers,
254 kMaxCubeMapTextureSize, 252 use_default_textures, &progress_reporter_);
255 kMaxRectangleTextureSize,
256 kMax3DTextureSize,
257 kMaxArrayTextureLayers,
258 use_default_textures);
259 manager.Initialize(); 253 manager.Initialize();
260 254
261 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL); 255 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL);
262 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL); 256 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL);
263 257
264 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. 258 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB.
265 259
266 manager.Destroy(false); 260 manager.Destroy(false);
267 } 261 }
268 262
269 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) { 263 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) {
270 bool use_default_textures = false; 264 bool use_default_textures = false;
271 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), 265 TestHelper::SetupTextureManagerInitExpectations(gl_.get(),
272 false, false, false, "GL_ANGLE_texture_usage", use_default_textures); 266 false, false, false, "GL_ANGLE_texture_usage", use_default_textures);
273 TextureManager manager(NULL, 267 TextureManager manager(NULL, feature_info_.get(), kMaxTextureSize,
274 feature_info_.get(), 268 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
275 kMaxTextureSize, 269 kMax3DTextureSize, kMaxArrayTextureLayers,
276 kMaxCubeMapTextureSize, 270 use_default_textures, &progress_reporter_);
277 kMaxRectangleTextureSize,
278 kMax3DTextureSize,
279 kMaxArrayTextureLayers,
280 use_default_textures);
281 manager.Initialize(); 271 manager.Initialize();
282 272
283 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL); 273 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL);
284 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL); 274 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL);
285 275
286 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. 276 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB.
287 277
288 manager.Destroy(false); 278 manager.Destroy(false);
289 } 279 }
290 280
291 TEST_F(TextureManagerTest, UseDefaultTexturesTrueES3) { 281 TEST_F(TextureManagerTest, UseDefaultTexturesTrueES3) {
292 bool use_default_textures = true; 282 bool use_default_textures = true;
293 SetupFeatureInfo("", "OpenGL ES 3.0", true); 283 SetupFeatureInfo("", "OpenGL ES 3.0", true);
294 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), 284 TestHelper::SetupTextureManagerInitExpectations(gl_.get(),
295 true, true, false, "", use_default_textures); 285 true, true, false, "", use_default_textures);
296 TextureManager manager(NULL, 286 TextureManager manager(NULL, feature_info_.get(), kMaxTextureSize,
297 feature_info_.get(), 287 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
298 kMaxTextureSize, 288 kMax3DTextureSize, kMaxArrayTextureLayers,
299 kMaxCubeMapTextureSize, 289 use_default_textures, &progress_reporter_);
300 kMaxRectangleTextureSize,
301 kMax3DTextureSize,
302 kMaxArrayTextureLayers,
303 use_default_textures);
304 manager.Initialize(); 290 manager.Initialize();
305 291
306 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) != NULL); 292 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) != NULL);
307 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) != NULL); 293 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) != NULL);
308 294
309 manager.Destroy(false); 295 manager.Destroy(false);
310 } 296 }
311 297
312 TEST_F(TextureManagerTest, UseDefaultTexturesFalseES3) { 298 TEST_F(TextureManagerTest, UseDefaultTexturesFalseES3) {
313 bool use_default_textures = false; 299 bool use_default_textures = false;
314 SetupFeatureInfo("", "OpenGL ES 3.0", true); 300 SetupFeatureInfo("", "OpenGL ES 3.0", true);
315 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), 301 TestHelper::SetupTextureManagerInitExpectations(gl_.get(),
316 true, true, false, "", use_default_textures); 302 true, true, false, "", use_default_textures);
317 TextureManager manager(NULL, 303 TextureManager manager(NULL, feature_info_.get(), kMaxTextureSize,
318 feature_info_.get(), 304 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
319 kMaxTextureSize, 305 kMax3DTextureSize, kMaxArrayTextureLayers,
320 kMaxCubeMapTextureSize, 306 use_default_textures, &progress_reporter_);
321 kMaxRectangleTextureSize,
322 kMax3DTextureSize,
323 kMaxArrayTextureLayers,
324 use_default_textures);
325 manager.Initialize(); 307 manager.Initialize();
326 308
327 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) == NULL); 309 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) == NULL);
328 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) == NULL); 310 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) == NULL);
329 311
330 manager.Destroy(false); 312 manager.Destroy(false);
331 } 313 }
332 314
333 TEST_F(TextureManagerTest, TextureUsageExt) { 315 TEST_F(TextureManagerTest, TextureUsageExt) {
334 TestHelper::SetupTextureManagerInitExpectations( 316 TestHelper::SetupTextureManagerInitExpectations(
335 gl_.get(), false, false, false, "GL_ANGLE_texture_usage", 317 gl_.get(), false, false, false, "GL_ANGLE_texture_usage",
336 kUseDefaultTextures); 318 kUseDefaultTextures);
337 TextureManager manager(NULL, 319 TextureManager manager(NULL, feature_info_.get(), kMaxTextureSize,
338 feature_info_.get(), 320 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
339 kMaxTextureSize, 321 kMax3DTextureSize, kMaxArrayTextureLayers,
340 kMaxCubeMapTextureSize, 322 kUseDefaultTextures, &progress_reporter_);
341 kMaxRectangleTextureSize,
342 kMax3DTextureSize,
343 kMaxArrayTextureLayers,
344 kUseDefaultTextures);
345 manager.Initialize(); 323 manager.Initialize();
346 const GLuint kClient1Id = 1; 324 const GLuint kClient1Id = 1;
347 const GLuint kService1Id = 11; 325 const GLuint kService1Id = 11;
348 // Check we can create texture. 326 // Check we can create texture.
349 manager.CreateTexture(kClient1Id, kService1Id); 327 manager.CreateTexture(kClient1Id, kService1Id);
350 // Check texture got created. 328 // Check texture got created.
351 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 329 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
352 ASSERT_TRUE(texture_ref != NULL); 330 ASSERT_TRUE(texture_ref != NULL);
353 TestHelper::SetTexParameteriWithExpectations( 331 TestHelper::SetTexParameteriWithExpectations(
354 gl_.get(), error_state_.get(), &manager, texture_ref, 332 gl_.get(), error_state_.get(), &manager, texture_ref,
355 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR); 333 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR);
356 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), 334 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE),
357 texture_ref->texture()->usage()); 335 texture_ref->texture()->usage());
358 manager.Destroy(false); 336 manager.Destroy(false);
359 } 337 }
360 338
361 TEST_F(TextureManagerTest, Destroy) { 339 TEST_F(TextureManagerTest, Destroy) {
362 const GLuint kClient1Id = 1; 340 const GLuint kClient1Id = 1;
363 const GLuint kService1Id = 11; 341 const GLuint kService1Id = 11;
364 TestHelper::SetupTextureManagerInitExpectations( 342 TestHelper::SetupTextureManagerInitExpectations(
365 gl_.get(), false, false, false, "", kUseDefaultTextures); 343 gl_.get(), false, false, false, "", kUseDefaultTextures);
366 TextureManager manager(NULL, 344 TextureManager manager(NULL, feature_info_.get(), kMaxTextureSize,
367 feature_info_.get(), 345 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
368 kMaxTextureSize, 346 kMax3DTextureSize, kMaxArrayTextureLayers,
369 kMaxCubeMapTextureSize, 347 kUseDefaultTextures, &progress_reporter_);
370 kMaxRectangleTextureSize,
371 kMax3DTextureSize,
372 kMaxArrayTextureLayers,
373 kUseDefaultTextures);
374 manager.Initialize(); 348 manager.Initialize();
375 // Check we can create texture. 349 // Check we can create texture.
376 manager.CreateTexture(kClient1Id, kService1Id); 350 manager.CreateTexture(kClient1Id, kService1Id);
377 // Check texture got created. 351 // Check texture got created.
378 TextureRef* texture = manager.GetTexture(kClient1Id); 352 TextureRef* texture = manager.GetTexture(kClient1Id);
379 ASSERT_TRUE(texture != NULL); 353 ASSERT_TRUE(texture != NULL);
380 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) 354 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id)))
381 .Times(1) 355 .Times(1)
382 .RetiresOnSaturation(); 356 .RetiresOnSaturation();
383 TestHelper::SetupTextureManagerDestructionExpectations( 357 TestHelper::SetupTextureManagerDestructionExpectations(
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 (kMaxCubeMapTextureSize >> level) * 2, 489 (kMaxCubeMapTextureSize >> level) * 2,
516 1)); 490 1));
517 } 491 }
518 } 492 }
519 493
520 TEST_F(TextureManagerTest, ValidForTargetNPOT) { 494 TEST_F(TextureManagerTest, ValidForTargetNPOT) {
521 TestHelper::SetupFeatureInfoInitExpectations( 495 TestHelper::SetupFeatureInfoInitExpectations(
522 gl_.get(), "GL_OES_texture_npot"); 496 gl_.get(), "GL_OES_texture_npot");
523 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 497 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
524 feature_info->InitializeForTesting(); 498 feature_info->InitializeForTesting();
525 TextureManager manager(NULL, 499 TextureManager manager(NULL, feature_info.get(), kMaxTextureSize,
526 feature_info.get(), 500 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
527 kMaxTextureSize, 501 kMax3DTextureSize, kMaxArrayTextureLayers,
528 kMaxCubeMapTextureSize, 502 kUseDefaultTextures, &progress_reporter_);
529 kMaxRectangleTextureSize,
530 kMax3DTextureSize,
531 kMaxArrayTextureLayers,
532 kUseDefaultTextures);
533 // Check NPOT width on level 0 503 // Check NPOT width on level 0
534 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1)); 504 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1));
535 // Check NPOT height on level 0 505 // Check NPOT height on level 0
536 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1)); 506 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1));
537 // Check NPOT width on level 1 507 // Check NPOT width on level 1
538 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1)); 508 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1));
539 // Check NPOT height on level 1 509 // Check NPOT height on level 1
540 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 2, 5, 1)); 510 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 2, 5, 1));
541 manager.Destroy(false); 511 manager.Destroy(false);
542 } 512 }
543 513
544 TEST_F(TextureManagerTest, AlphaLuminanceCompatibilityProfile) { 514 TEST_F(TextureManagerTest, AlphaLuminanceCompatibilityProfile) {
545 const GLuint kClientId = 1; 515 const GLuint kClientId = 1;
546 const GLuint kServiceId = 11; 516 const GLuint kServiceId = 11;
547 517
548 SetupFeatureInfo("", "2.1", false); 518 SetupFeatureInfo("", "2.1", false);
549 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), false, false, 519 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), false, false,
550 false, "", kUseDefaultTextures); 520 false, "", kUseDefaultTextures);
551 TextureManager manager(NULL, 521 TextureManager manager(NULL, feature_info_.get(), kMaxTextureSize,
552 feature_info_.get(), 522 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
553 kMaxTextureSize, 523 kMax3DTextureSize, kMaxArrayTextureLayers,
554 kMaxCubeMapTextureSize, 524 kUseDefaultTextures, &progress_reporter_);
555 kMaxRectangleTextureSize,
556 kMax3DTextureSize,
557 kMaxArrayTextureLayers,
558 kUseDefaultTextures);
559 manager.Initialize(); 525 manager.Initialize();
560 526
561 // Create a texture. 527 // Create a texture.
562 manager.CreateTexture(kClientId, kServiceId); 528 manager.CreateTexture(kClientId, kServiceId);
563 scoped_refptr<TextureRef> texture_ref(manager.GetTexture(kClientId)); 529 scoped_refptr<TextureRef> texture_ref(manager.GetTexture(kClientId));
564 manager.SetTarget(texture_ref.get(), GL_TEXTURE_2D); 530 manager.SetTarget(texture_ref.get(), GL_TEXTURE_2D);
565 531
566 Texture* texture = texture_ref->texture(); 532 Texture* texture = texture_ref->texture();
567 533
568 // GL_ALPHA emulation 534 // GL_ALPHA emulation
(...skipping 17 matching lines...) Expand all
586 manager.RemoveTexture(kClientId); 552 manager.RemoveTexture(kClientId);
587 } 553 }
588 554
589 TEST_F(TextureManagerTest, AlphaLuminanceCoreProfileEmulation) { 555 TEST_F(TextureManagerTest, AlphaLuminanceCoreProfileEmulation) {
590 const GLuint kClientId = 1; 556 const GLuint kClientId = 1;
591 const GLuint kServiceId = 11; 557 const GLuint kServiceId = 11;
592 558
593 SetupFeatureInfo("", "4.2", true); 559 SetupFeatureInfo("", "4.2", true);
594 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), true, true, true, 560 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), true, true, true,
595 "", kUseDefaultTextures); 561 "", kUseDefaultTextures);
596 TextureManager manager(NULL, 562 TextureManager manager(NULL, feature_info_.get(), kMaxTextureSize,
597 feature_info_.get(), 563 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
598 kMaxTextureSize, 564 kMax3DTextureSize, kMaxArrayTextureLayers,
599 kMaxCubeMapTextureSize, 565 kUseDefaultTextures, &progress_reporter_);
600 kMaxRectangleTextureSize,
601 kMax3DTextureSize,
602 kMaxArrayTextureLayers,
603 kUseDefaultTextures);
604 manager.Initialize(); 566 manager.Initialize();
605 567
606 // Create a texture. 568 // Create a texture.
607 manager.CreateTexture(kClientId, kServiceId); 569 manager.CreateTexture(kClientId, kServiceId);
608 scoped_refptr<TextureRef> texture_ref(manager.GetTexture(kClientId)); 570 scoped_refptr<TextureRef> texture_ref(manager.GetTexture(kClientId));
609 manager.SetTarget(texture_ref.get(), GL_TEXTURE_2D); 571 manager.SetTarget(texture_ref.get(), GL_TEXTURE_2D);
610 572
611 Texture* texture = texture_ref->texture(); 573 Texture* texture = texture_ref->texture();
612 574
613 // GL_ALPHA emulation 575 // GL_ALPHA emulation
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 } 667 }
706 ~TextureTestBase() override { texture_ref_ = NULL; } 668 ~TextureTestBase() override { texture_ref_ = NULL; }
707 669
708 protected: 670 protected:
709 void SetUpBase(MemoryTracker* memory_tracker, const std::string& extensions) { 671 void SetUpBase(MemoryTracker* memory_tracker, const std::string& extensions) {
710 GpuServiceTest::SetUp(); 672 GpuServiceTest::SetUp();
711 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), 673 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(),
712 extensions.c_str()); 674 extensions.c_str());
713 feature_info_->InitializeForTesting(); 675 feature_info_->InitializeForTesting();
714 676
715 manager_.reset(new TextureManager(memory_tracker, 677 manager_.reset(new TextureManager(
716 feature_info_.get(), 678 memory_tracker, feature_info_.get(), kMaxTextureSize,
717 kMaxTextureSize, 679 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, kMax3DTextureSize,
718 kMaxCubeMapTextureSize, 680 kMaxArrayTextureLayers, kUseDefaultTextures, &progress_reporter_));
719 kMaxRectangleTextureSize,
720 kMax3DTextureSize,
721 kMaxArrayTextureLayers,
722 kUseDefaultTextures));
723 decoder_.reset(new ::testing::StrictMock<gles2::MockGLES2Decoder>()); 681 decoder_.reset(new ::testing::StrictMock<gles2::MockGLES2Decoder>());
724 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); 682 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>());
725 manager_->CreateTexture(kClient1Id, kService1Id); 683 manager_->CreateTexture(kClient1Id, kService1Id);
726 texture_ref_ = manager_->GetTexture(kClient1Id); 684 texture_ref_ = manager_->GetTexture(kClient1Id);
727 ASSERT_TRUE(texture_ref_.get() != NULL); 685 ASSERT_TRUE(texture_ref_.get() != NULL);
728 } 686 }
729 687
730 void TearDown() override { 688 void TearDown() override {
731 if (texture_ref_.get()) { 689 if (texture_ref_.get()) {
732 // If it's not in the manager then setting texture_ref_ to NULL will 690 // If it's not in the manager then setting texture_ref_ to NULL will
(...skipping 17 matching lines...) Expand all
750 TestHelper::SetTexParameteriWithExpectations( 708 TestHelper::SetTexParameteriWithExpectations(
751 gl_.get(), error_state_.get(), manager_.get(), 709 gl_.get(), error_state_.get(), manager_.get(),
752 texture_ref, pname, value, error); 710 texture_ref, pname, value, error);
753 } 711 }
754 712
755 std::unique_ptr<MockGLES2Decoder> decoder_; 713 std::unique_ptr<MockGLES2Decoder> decoder_;
756 std::unique_ptr<MockErrorState> error_state_; 714 std::unique_ptr<MockErrorState> error_state_;
757 scoped_refptr<FeatureInfo> feature_info_; 715 scoped_refptr<FeatureInfo> feature_info_;
758 std::unique_ptr<TextureManager> manager_; 716 std::unique_ptr<TextureManager> manager_;
759 scoped_refptr<TextureRef> texture_ref_; 717 scoped_refptr<TextureRef> texture_ref_;
718 ProgressReporterStub progress_reporter_;
760 }; 719 };
761 720
762 class TextureTest : public TextureTestBase { 721 class TextureTest : public TextureTestBase {
763 protected: 722 protected:
764 void SetUp() override { SetUpBase(NULL, std::string()); } 723 void SetUp() override { SetUpBase(NULL, std::string()); }
765 }; 724 };
766 725
767 class TextureMemoryTrackerTest : public TextureTestBase { 726 class TextureMemoryTrackerTest : public TextureTestBase {
768 protected: 727 protected:
769 void SetUp() override { 728 void SetUp() override {
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
1011 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 970 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
1012 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 971 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
1013 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); 972 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
1014 } 973 }
1015 974
1016 TEST_F(TextureTest, NPOT2DNPOTOK) { 975 TEST_F(TextureTest, NPOT2DNPOTOK) {
1017 TestHelper::SetupFeatureInfoInitExpectations( 976 TestHelper::SetupFeatureInfoInitExpectations(
1018 gl_.get(), "GL_OES_texture_npot"); 977 gl_.get(), "GL_OES_texture_npot");
1019 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 978 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1020 feature_info->InitializeForTesting(); 979 feature_info->InitializeForTesting();
1021 TextureManager manager(NULL, 980 TextureManager manager(NULL, feature_info.get(), kMaxTextureSize,
1022 feature_info.get(), 981 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
1023 kMaxTextureSize, 982 kMax3DTextureSize, kMaxArrayTextureLayers,
1024 kMaxCubeMapTextureSize, 983 kUseDefaultTextures, &progress_reporter_);
1025 kMaxRectangleTextureSize,
1026 kMax3DTextureSize,
1027 kMaxArrayTextureLayers,
1028 kUseDefaultTextures);
1029 manager.CreateTexture(kClient1Id, kService1Id); 984 manager.CreateTexture(kClient1Id, kService1Id);
1030 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 985 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1031 ASSERT_TRUE(texture_ref != NULL); 986 ASSERT_TRUE(texture_ref != NULL);
1032 Texture* texture = texture_ref->texture(); 987 Texture* texture = texture_ref->texture();
1033 988
1034 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 989 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1035 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 990 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
1036 // Check Setting level 0 to NPOT 991 // Check Setting level 0 to NPOT
1037 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, 992 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0,
1038 GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5)); 993 GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5));
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
1313 EXPECT_TRUE(texture->ValidForTexture(GL_TEXTURE_2D, 1, 1, 1, 1, 2, 3, 4)); 1268 EXPECT_TRUE(texture->ValidForTexture(GL_TEXTURE_2D, 1, 1, 1, 1, 2, 3, 4));
1314 manager_->RemoveTexture(kClient1Id); 1269 manager_->RemoveTexture(kClient1Id);
1315 EXPECT_TRUE(texture->ValidForTexture(GL_TEXTURE_2D, 1, 0, 0, 0, 4, 5, 6)); 1270 EXPECT_TRUE(texture->ValidForTexture(GL_TEXTURE_2D, 1, 0, 0, 0, 4, 5, 6));
1316 } 1271 }
1317 1272
1318 TEST_F(TextureTest, FloatNotLinear) { 1273 TEST_F(TextureTest, FloatNotLinear) {
1319 TestHelper::SetupFeatureInfoInitExpectations( 1274 TestHelper::SetupFeatureInfoInitExpectations(
1320 gl_.get(), "GL_OES_texture_float"); 1275 gl_.get(), "GL_OES_texture_float");
1321 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1276 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1322 feature_info->InitializeForTesting(); 1277 feature_info->InitializeForTesting();
1323 TextureManager manager(NULL, 1278 TextureManager manager(NULL, feature_info.get(), kMaxTextureSize,
1324 feature_info.get(), 1279 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
1325 kMaxTextureSize, 1280 kMax3DTextureSize, kMaxArrayTextureLayers,
1326 kMaxCubeMapTextureSize, 1281 kUseDefaultTextures, &progress_reporter_);
1327 kMaxRectangleTextureSize,
1328 kMax3DTextureSize,
1329 kMaxArrayTextureLayers,
1330 kUseDefaultTextures);
1331 manager.CreateTexture(kClient1Id, kService1Id); 1282 manager.CreateTexture(kClient1Id, kService1Id);
1332 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1283 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1333 ASSERT_TRUE(texture_ref != NULL); 1284 ASSERT_TRUE(texture_ref != NULL);
1334 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 1285 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1335 Texture* texture = texture_ref->texture(); 1286 Texture* texture = texture_ref->texture();
1336 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 1287 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
1337 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, 1288 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0,
1338 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1)); 1289 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1));
1339 EXPECT_FALSE(manager.CanRender(texture_ref)); 1290 EXPECT_FALSE(manager.CanRender(texture_ref));
1340 TestHelper::SetTexParameteriWithExpectations( 1291 TestHelper::SetTexParameteriWithExpectations(
1341 gl_.get(), error_state_.get(), &manager, 1292 gl_.get(), error_state_.get(), &manager,
1342 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); 1293 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR);
1343 EXPECT_FALSE(manager.CanRender(texture_ref)); 1294 EXPECT_FALSE(manager.CanRender(texture_ref));
1344 TestHelper::SetTexParameteriWithExpectations( 1295 TestHelper::SetTexParameteriWithExpectations(
1345 gl_.get(), error_state_.get(), &manager, texture_ref, 1296 gl_.get(), error_state_.get(), &manager, texture_ref,
1346 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR); 1297 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR);
1347 EXPECT_TRUE(manager.CanRender(texture_ref)); 1298 EXPECT_TRUE(manager.CanRender(texture_ref));
1348 manager.Destroy(false); 1299 manager.Destroy(false);
1349 } 1300 }
1350 1301
1351 TEST_F(TextureTest, FloatLinear) { 1302 TEST_F(TextureTest, FloatLinear) {
1352 TestHelper::SetupFeatureInfoInitExpectations( 1303 TestHelper::SetupFeatureInfoInitExpectations(
1353 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear"); 1304 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear");
1354 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1305 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1355 feature_info->InitializeForTesting(); 1306 feature_info->InitializeForTesting();
1356 TextureManager manager(NULL, 1307 TextureManager manager(NULL, feature_info.get(), kMaxTextureSize,
1357 feature_info.get(), 1308 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
1358 kMaxTextureSize, 1309 kMax3DTextureSize, kMaxArrayTextureLayers,
1359 kMaxCubeMapTextureSize, 1310 kUseDefaultTextures, &progress_reporter_);
1360 kMaxRectangleTextureSize,
1361 kMax3DTextureSize,
1362 kMaxArrayTextureLayers,
1363 kUseDefaultTextures);
1364 manager.CreateTexture(kClient1Id, kService1Id); 1311 manager.CreateTexture(kClient1Id, kService1Id);
1365 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1312 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1366 ASSERT_TRUE(texture_ref != NULL); 1313 ASSERT_TRUE(texture_ref != NULL);
1367 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 1314 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1368 Texture* texture = texture_ref->texture(); 1315 Texture* texture = texture_ref->texture();
1369 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 1316 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
1370 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, 1317 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0,
1371 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1)); 1318 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1));
1372 EXPECT_TRUE(manager.CanRender(texture_ref)); 1319 EXPECT_TRUE(manager.CanRender(texture_ref));
1373 manager.Destroy(false); 1320 manager.Destroy(false);
1374 } 1321 }
1375 1322
1376 TEST_F(TextureTest, HalfFloatNotLinear) { 1323 TEST_F(TextureTest, HalfFloatNotLinear) {
1377 TestHelper::SetupFeatureInfoInitExpectations( 1324 TestHelper::SetupFeatureInfoInitExpectations(
1378 gl_.get(), "GL_OES_texture_half_float"); 1325 gl_.get(), "GL_OES_texture_half_float");
1379 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1326 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1380 feature_info->InitializeForTesting(); 1327 feature_info->InitializeForTesting();
1381 TextureManager manager(NULL, 1328 TextureManager manager(NULL, feature_info.get(), kMaxTextureSize,
1382 feature_info.get(), 1329 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
1383 kMaxTextureSize, 1330 kMax3DTextureSize, kMaxArrayTextureLayers,
1384 kMaxCubeMapTextureSize, 1331 kUseDefaultTextures, &progress_reporter_);
1385 kMaxRectangleTextureSize,
1386 kMax3DTextureSize,
1387 kMaxArrayTextureLayers,
1388 kUseDefaultTextures);
1389 manager.CreateTexture(kClient1Id, kService1Id); 1332 manager.CreateTexture(kClient1Id, kService1Id);
1390 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1333 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1391 ASSERT_TRUE(texture_ref != NULL); 1334 ASSERT_TRUE(texture_ref != NULL);
1392 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 1335 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1393 Texture* texture = texture_ref->texture(); 1336 Texture* texture = texture_ref->texture();
1394 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 1337 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
1395 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, 1338 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0,
1396 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1)); 1339 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1));
1397 EXPECT_FALSE(manager.CanRender(texture_ref)); 1340 EXPECT_FALSE(manager.CanRender(texture_ref));
1398 TestHelper::SetTexParameteriWithExpectations( 1341 TestHelper::SetTexParameteriWithExpectations(
1399 gl_.get(), error_state_.get(), &manager, 1342 gl_.get(), error_state_.get(), &manager,
1400 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); 1343 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR);
1401 EXPECT_FALSE(manager.CanRender(texture_ref)); 1344 EXPECT_FALSE(manager.CanRender(texture_ref));
1402 TestHelper::SetTexParameteriWithExpectations( 1345 TestHelper::SetTexParameteriWithExpectations(
1403 gl_.get(), error_state_.get(), &manager, texture_ref, 1346 gl_.get(), error_state_.get(), &manager, texture_ref,
1404 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR); 1347 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR);
1405 EXPECT_TRUE(manager.CanRender(texture_ref)); 1348 EXPECT_TRUE(manager.CanRender(texture_ref));
1406 manager.Destroy(false); 1349 manager.Destroy(false);
1407 } 1350 }
1408 1351
1409 TEST_F(TextureTest, HalfFloatLinear) { 1352 TEST_F(TextureTest, HalfFloatLinear) {
1410 TestHelper::SetupFeatureInfoInitExpectations( 1353 TestHelper::SetupFeatureInfoInitExpectations(
1411 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); 1354 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear");
1412 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1355 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1413 feature_info->InitializeForTesting(); 1356 feature_info->InitializeForTesting();
1414 TextureManager manager(NULL, 1357 TextureManager manager(NULL, feature_info.get(), kMaxTextureSize,
1415 feature_info.get(), 1358 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
1416 kMaxTextureSize, 1359 kMax3DTextureSize, kMaxArrayTextureLayers,
1417 kMaxCubeMapTextureSize, 1360 kUseDefaultTextures, &progress_reporter_);
1418 kMaxRectangleTextureSize,
1419 kMax3DTextureSize,
1420 kMaxArrayTextureLayers,
1421 kUseDefaultTextures);
1422 manager.CreateTexture(kClient1Id, kService1Id); 1361 manager.CreateTexture(kClient1Id, kService1Id);
1423 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1362 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1424 ASSERT_TRUE(texture_ref != NULL); 1363 ASSERT_TRUE(texture_ref != NULL);
1425 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 1364 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1426 Texture* texture = texture_ref->texture(); 1365 Texture* texture = texture_ref->texture();
1427 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 1366 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
1428 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, 1367 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0,
1429 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1)); 1368 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1));
1430 EXPECT_TRUE(manager.CanRender(texture_ref)); 1369 EXPECT_TRUE(manager.CanRender(texture_ref));
1431 manager.Destroy(false); 1370 manager.Destroy(false);
1432 } 1371 }
1433 1372
1434 TEST_F(TextureTest, EGLImageExternal) { 1373 TEST_F(TextureTest, EGLImageExternal) {
1435 TestHelper::SetupFeatureInfoInitExpectations( 1374 TestHelper::SetupFeatureInfoInitExpectations(
1436 gl_.get(), "GL_OES_EGL_image_external"); 1375 gl_.get(), "GL_OES_EGL_image_external");
1437 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1376 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1438 feature_info->InitializeForTesting(); 1377 feature_info->InitializeForTesting();
1439 TextureManager manager(NULL, 1378 TextureManager manager(NULL, feature_info.get(), kMaxTextureSize,
1440 feature_info.get(), 1379 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
1441 kMaxTextureSize, 1380 kMax3DTextureSize, kMaxArrayTextureLayers,
1442 kMaxCubeMapTextureSize, 1381 kUseDefaultTextures, &progress_reporter_);
1443 kMaxRectangleTextureSize,
1444 kMax3DTextureSize,
1445 kMaxArrayTextureLayers,
1446 kUseDefaultTextures);
1447 manager.CreateTexture(kClient1Id, kService1Id); 1382 manager.CreateTexture(kClient1Id, kService1Id);
1448 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1383 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1449 ASSERT_TRUE(texture_ref != NULL); 1384 ASSERT_TRUE(texture_ref != NULL);
1450 manager.SetTarget(texture_ref, GL_TEXTURE_EXTERNAL_OES); 1385 manager.SetTarget(texture_ref, GL_TEXTURE_EXTERNAL_OES);
1451 Texture* texture = texture_ref->texture(); 1386 Texture* texture = texture_ref->texture();
1452 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target()); 1387 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target());
1453 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); 1388 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref));
1454 manager.Destroy(false); 1389 manager.Destroy(false);
1455 } 1390 }
1456 1391
1457 TEST_F(TextureTest, DepthTexture) { 1392 TEST_F(TextureTest, DepthTexture) {
1458 TestHelper::SetupFeatureInfoInitExpectations( 1393 TestHelper::SetupFeatureInfoInitExpectations(
1459 gl_.get(), "GL_ANGLE_depth_texture"); 1394 gl_.get(), "GL_ANGLE_depth_texture");
1460 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1395 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1461 feature_info->InitializeForTesting(); 1396 feature_info->InitializeForTesting();
1462 TextureManager manager(NULL, 1397 TextureManager manager(NULL, feature_info.get(), kMaxTextureSize,
1463 feature_info.get(), 1398 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
1464 kMaxTextureSize, 1399 kMax3DTextureSize, kMaxArrayTextureLayers,
1465 kMaxCubeMapTextureSize, 1400 kUseDefaultTextures, &progress_reporter_);
1466 kMaxRectangleTextureSize,
1467 kMax3DTextureSize,
1468 kMaxArrayTextureLayers,
1469 kUseDefaultTextures);
1470 manager.CreateTexture(kClient1Id, kService1Id); 1401 manager.CreateTexture(kClient1Id, kService1Id);
1471 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1402 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1472 ASSERT_TRUE(texture_ref != NULL); 1403 ASSERT_TRUE(texture_ref != NULL);
1473 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 1404 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1474 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4, 1405 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4,
1475 1, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, gfx::Rect()); 1406 1, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, gfx::Rect());
1476 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); 1407 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref));
1477 manager.Destroy(false); 1408 manager.Destroy(false);
1478 } 1409 }
1479 1410
(...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after
2229 static const bool kUseDefaultTextures = false; 2160 static const bool kUseDefaultTextures = false;
2230 2161
2231 SharedTextureTest() : feature_info_(new FeatureInfo()) {} 2162 SharedTextureTest() : feature_info_(new FeatureInfo()) {}
2232 2163
2233 ~SharedTextureTest() override {} 2164 ~SharedTextureTest() override {}
2234 2165
2235 void SetUp() override { 2166 void SetUp() override {
2236 GpuServiceTest::SetUp(); 2167 GpuServiceTest::SetUp();
2237 memory_tracker1_ = new CountingMemoryTracker; 2168 memory_tracker1_ = new CountingMemoryTracker;
2238 texture_manager1_.reset( 2169 texture_manager1_.reset(
2239 new TextureManager(memory_tracker1_.get(), 2170 new TextureManager(memory_tracker1_.get(), feature_info_.get(),
2240 feature_info_.get(),
2241 TextureManagerTest::kMaxTextureSize, 2171 TextureManagerTest::kMaxTextureSize,
2242 TextureManagerTest::kMaxCubeMapTextureSize, 2172 TextureManagerTest::kMaxCubeMapTextureSize,
2243 TextureManagerTest::kMaxRectangleTextureSize, 2173 TextureManagerTest::kMaxRectangleTextureSize,
2244 TextureManagerTest::kMax3DTextureSize, 2174 TextureManagerTest::kMax3DTextureSize,
2245 TextureManagerTest::kMaxArrayTextureLayers, 2175 TextureManagerTest::kMaxArrayTextureLayers,
2246 kUseDefaultTextures)); 2176 kUseDefaultTextures, &progress_reporter_));
2247 memory_tracker2_ = new CountingMemoryTracker; 2177 memory_tracker2_ = new CountingMemoryTracker;
2248 texture_manager2_.reset( 2178 texture_manager2_.reset(
2249 new TextureManager(memory_tracker2_.get(), 2179 new TextureManager(memory_tracker2_.get(), feature_info_.get(),
2250 feature_info_.get(),
2251 TextureManagerTest::kMaxTextureSize, 2180 TextureManagerTest::kMaxTextureSize,
2252 TextureManagerTest::kMaxCubeMapTextureSize, 2181 TextureManagerTest::kMaxCubeMapTextureSize,
2253 TextureManagerTest::kMaxRectangleTextureSize, 2182 TextureManagerTest::kMaxRectangleTextureSize,
2254 TextureManagerTest::kMax3DTextureSize, 2183 TextureManagerTest::kMax3DTextureSize,
2255 TextureManagerTest::kMaxArrayTextureLayers, 2184 TextureManagerTest::kMaxArrayTextureLayers,
2256 kUseDefaultTextures)); 2185 kUseDefaultTextures, &progress_reporter_));
2257 SetupFeatureInfo("", "OpenGL ES 2.0", false); 2186 SetupFeatureInfo("", "OpenGL ES 2.0", false);
2258 TestHelper::SetupTextureManagerInitExpectations( 2187 TestHelper::SetupTextureManagerInitExpectations(
2259 gl_.get(), false, false, false, "", kUseDefaultTextures); 2188 gl_.get(), false, false, false, "", kUseDefaultTextures);
2260 texture_manager1_->Initialize(); 2189 texture_manager1_->Initialize();
2261 TestHelper::SetupTextureManagerInitExpectations( 2190 TestHelper::SetupTextureManagerInitExpectations(
2262 gl_.get(), false, false, false, "", kUseDefaultTextures); 2191 gl_.get(), false, false, false, "", kUseDefaultTextures);
2263 texture_manager2_->Initialize(); 2192 texture_manager2_->Initialize();
2264 } 2193 }
2265 2194
2266 void TearDown() override { 2195 void TearDown() override {
(...skipping 21 matching lines...) Expand all
2288 .RetiresOnSaturation(); 2217 .RetiresOnSaturation();
2289 feature_info_->EnableES3Validators(); 2218 feature_info_->EnableES3Validators();
2290 } 2219 }
2291 } 2220 }
2292 2221
2293 scoped_refptr<FeatureInfo> feature_info_; 2222 scoped_refptr<FeatureInfo> feature_info_;
2294 scoped_refptr<CountingMemoryTracker> memory_tracker1_; 2223 scoped_refptr<CountingMemoryTracker> memory_tracker1_;
2295 std::unique_ptr<TextureManager> texture_manager1_; 2224 std::unique_ptr<TextureManager> texture_manager1_;
2296 scoped_refptr<CountingMemoryTracker> memory_tracker2_; 2225 scoped_refptr<CountingMemoryTracker> memory_tracker2_;
2297 std::unique_ptr<TextureManager> texture_manager2_; 2226 std::unique_ptr<TextureManager> texture_manager2_;
2227 ProgressReporterStub progress_reporter_;
2298 }; 2228 };
2299 2229
2300 TEST_F(SharedTextureTest, DeleteTextures) { 2230 TEST_F(SharedTextureTest, DeleteTextures) {
2301 scoped_refptr<TextureRef> ref1 = texture_manager1_->CreateTexture(10, 10); 2231 scoped_refptr<TextureRef> ref1 = texture_manager1_->CreateTexture(10, 10);
2302 scoped_refptr<TextureRef> ref2 = 2232 scoped_refptr<TextureRef> ref2 =
2303 texture_manager2_->Consume(20, ref1->texture()); 2233 texture_manager2_->Consume(20, ref1->texture());
2304 EXPECT_CALL(*gl_, DeleteTextures(1, _)) 2234 EXPECT_CALL(*gl_, DeleteTextures(1, _))
2305 .Times(0); 2235 .Times(0);
2306 ref1 = NULL; 2236 ref1 = NULL;
2307 texture_manager1_->RemoveTexture(10); 2237 texture_manager1_->RemoveTexture(10);
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
2770 ExpectValid( 2700 ExpectValid(
2771 true, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); 2701 true, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8);
2772 ExpectValid(true, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, 2702 ExpectValid(true, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV,
2773 GL_DEPTH32F_STENCIL8); 2703 GL_DEPTH32F_STENCIL8);
2774 2704
2775 ExpectInvalid(true, GL_RGB_INTEGER, GL_INT, GL_RGBA8); 2705 ExpectInvalid(true, GL_RGB_INTEGER, GL_INT, GL_RGBA8);
2776 } 2706 }
2777 2707
2778 } // namespace gles2 2708 } // namespace gles2
2779 } // namespace gpu 2709 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698