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

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

Issue 2814583002: Service/ClientDiscardableManager (Closed)
Patch Set: rebase Created 3 years, 7 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
« no previous file with comments | « gpu/command_buffer/service/texture_manager.cc ('k') | gpu/command_buffer/tests/fuzzer_main.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/service_discardable_manager.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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 } 74 }
74 75
75 ~TextureManagerTest() override {} 76 ~TextureManagerTest() override {}
76 77
77 protected: 78 protected:
78 void SetUp() override { 79 void SetUp() override {
79 GpuServiceTest::SetUp(); 80 GpuServiceTest::SetUp();
80 manager_.reset(new TextureManager( 81 manager_.reset(new TextureManager(
81 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize, 82 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize,
82 kMaxRectangleTextureSize, kMax3DTextureSize, kMaxArrayTextureLayers, 83 kMaxRectangleTextureSize, kMax3DTextureSize, kMaxArrayTextureLayers,
83 kUseDefaultTextures, nullptr)); 84 kUseDefaultTextures, nullptr, &discardable_manager_));
84 SetupFeatureInfo("", "OpenGL ES 2.0", CONTEXT_TYPE_OPENGLES2); 85 SetupFeatureInfo("", "OpenGL ES 2.0", CONTEXT_TYPE_OPENGLES2);
85 TestHelper::SetupTextureManagerInitExpectations( 86 TestHelper::SetupTextureManagerInitExpectations(
86 gl_.get(), false, false, false, "", kUseDefaultTextures); 87 gl_.get(), false, false, false, "", kUseDefaultTextures);
87 manager_->Initialize(); 88 manager_->Initialize();
88 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); 89 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>());
89 } 90 }
90 91
91 void TearDown() override { 92 void TearDown() override {
92 manager_->Destroy(false); 93 manager_->Destroy(false);
93 manager_.reset(); 94 manager_.reset();
(...skipping 19 matching lines...) Expand all
113 .WillOnce(SetArgPointee<1>(8)) 114 .WillOnce(SetArgPointee<1>(8))
114 .RetiresOnSaturation(); 115 .RetiresOnSaturation();
115 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_DRAW_BUFFERS, _)) 116 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_DRAW_BUFFERS, _))
116 .WillOnce(SetArgPointee<1>(8)) 117 .WillOnce(SetArgPointee<1>(8))
117 .RetiresOnSaturation(); 118 .RetiresOnSaturation();
118 feature_info_->EnableES3Validators(); 119 feature_info_->EnableES3Validators();
119 } 120 }
120 } 121 }
121 122
122 scoped_refptr<FeatureInfo> feature_info_; 123 scoped_refptr<FeatureInfo> feature_info_;
124 ServiceDiscardableManager discardable_manager_;
123 std::unique_ptr<TextureManager> manager_; 125 std::unique_ptr<TextureManager> manager_;
124 std::unique_ptr<MockErrorState> error_state_; 126 std::unique_ptr<MockErrorState> error_state_;
125 }; 127 };
126 128
127 // GCC requires these declarations, but MSVC requires they not be present 129 // GCC requires these declarations, but MSVC requires they not be present
128 #ifndef COMPILER_MSVC 130 #ifndef COMPILER_MSVC
129 const GLint TextureManagerTest::kMaxTextureSize; 131 const GLint TextureManagerTest::kMaxTextureSize;
130 const GLint TextureManagerTest::kMaxCubeMapTextureSize; 132 const GLint TextureManagerTest::kMaxCubeMapTextureSize;
131 const GLint TextureManagerTest::kMaxRectangleTextureSize; 133 const GLint TextureManagerTest::kMaxRectangleTextureSize;
132 const GLint TextureManagerTest::kMaxExternalTextureSize; 134 const GLint TextureManagerTest::kMaxExternalTextureSize;
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 SetParameter(texture_ref, GL_TEXTURE_IMMUTABLE_LEVELS, 0, GL_INVALID_ENUM); 237 SetParameter(texture_ref, GL_TEXTURE_IMMUTABLE_LEVELS, 0, GL_INVALID_ENUM);
236 } 238 }
237 239
238 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) { 240 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) {
239 bool use_default_textures = true; 241 bool use_default_textures = true;
240 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), 242 TestHelper::SetupTextureManagerInitExpectations(gl_.get(),
241 false, false, false, "GL_ANGLE_texture_usage", use_default_textures); 243 false, false, false, "GL_ANGLE_texture_usage", use_default_textures);
242 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize, 244 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize,
243 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, 245 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
244 kMax3DTextureSize, kMaxArrayTextureLayers, 246 kMax3DTextureSize, kMaxArrayTextureLayers,
245 use_default_textures, nullptr); 247 use_default_textures, nullptr, &discardable_manager_);
246 manager.Initialize(); 248 manager.Initialize();
247 249
248 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL); 250 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL);
249 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL); 251 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL);
250 252
251 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. 253 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB.
252 254
253 manager.Destroy(false); 255 manager.Destroy(false);
254 } 256 }
255 257
256 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) { 258 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) {
257 bool use_default_textures = false; 259 bool use_default_textures = false;
258 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), 260 TestHelper::SetupTextureManagerInitExpectations(gl_.get(),
259 false, false, false, "GL_ANGLE_texture_usage", use_default_textures); 261 false, false, false, "GL_ANGLE_texture_usage", use_default_textures);
260 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize, 262 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize,
261 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, 263 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
262 kMax3DTextureSize, kMaxArrayTextureLayers, 264 kMax3DTextureSize, kMaxArrayTextureLayers,
263 use_default_textures, nullptr); 265 use_default_textures, nullptr, &discardable_manager_);
264 manager.Initialize(); 266 manager.Initialize();
265 267
266 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL); 268 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL);
267 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL); 269 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL);
268 270
269 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. 271 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB.
270 272
271 manager.Destroy(false); 273 manager.Destroy(false);
272 } 274 }
273 275
274 TEST_F(TextureManagerTest, UseDefaultTexturesTrueES3) { 276 TEST_F(TextureManagerTest, UseDefaultTexturesTrueES3) {
275 bool use_default_textures = true; 277 bool use_default_textures = true;
276 SetupFeatureInfo("", "OpenGL ES 3.0", CONTEXT_TYPE_OPENGLES3); 278 SetupFeatureInfo("", "OpenGL ES 3.0", CONTEXT_TYPE_OPENGLES3);
277 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), 279 TestHelper::SetupTextureManagerInitExpectations(gl_.get(),
278 true, true, false, "", use_default_textures); 280 true, true, false, "", use_default_textures);
279 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize, 281 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize,
280 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, 282 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
281 kMax3DTextureSize, kMaxArrayTextureLayers, 283 kMax3DTextureSize, kMaxArrayTextureLayers,
282 use_default_textures, nullptr); 284 use_default_textures, nullptr, &discardable_manager_);
283 manager.Initialize(); 285 manager.Initialize();
284 286
285 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) != NULL); 287 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) != NULL);
286 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) != NULL); 288 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) != NULL);
287 289
288 manager.Destroy(false); 290 manager.Destroy(false);
289 } 291 }
290 292
291 TEST_F(TextureManagerTest, UseDefaultTexturesFalseES3) { 293 TEST_F(TextureManagerTest, UseDefaultTexturesFalseES3) {
292 bool use_default_textures = false; 294 bool use_default_textures = false;
293 SetupFeatureInfo("", "OpenGL ES 3.0", CONTEXT_TYPE_OPENGLES3); 295 SetupFeatureInfo("", "OpenGL ES 3.0", CONTEXT_TYPE_OPENGLES3);
294 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), 296 TestHelper::SetupTextureManagerInitExpectations(gl_.get(),
295 true, true, false, "", use_default_textures); 297 true, true, false, "", use_default_textures);
296 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize, 298 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize,
297 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, 299 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
298 kMax3DTextureSize, kMaxArrayTextureLayers, 300 kMax3DTextureSize, kMaxArrayTextureLayers,
299 use_default_textures, nullptr); 301 use_default_textures, nullptr, &discardable_manager_);
300 manager.Initialize(); 302 manager.Initialize();
301 303
302 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) == NULL); 304 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) == NULL);
303 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) == NULL); 305 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) == NULL);
304 306
305 manager.Destroy(false); 307 manager.Destroy(false);
306 } 308 }
307 309
308 TEST_F(TextureManagerTest, TextureUsageExt) { 310 TEST_F(TextureManagerTest, TextureUsageExt) {
309 TestHelper::SetupTextureManagerInitExpectations( 311 TestHelper::SetupTextureManagerInitExpectations(
310 gl_.get(), false, false, false, "GL_ANGLE_texture_usage", 312 gl_.get(), false, false, false, "GL_ANGLE_texture_usage",
311 kUseDefaultTextures); 313 kUseDefaultTextures);
312 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize, 314 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize,
313 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, 315 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
314 kMax3DTextureSize, kMaxArrayTextureLayers, 316 kMax3DTextureSize, kMaxArrayTextureLayers,
315 kUseDefaultTextures, nullptr); 317 kUseDefaultTextures, nullptr, &discardable_manager_);
316 manager.Initialize(); 318 manager.Initialize();
317 const GLuint kClient1Id = 1; 319 const GLuint kClient1Id = 1;
318 const GLuint kService1Id = 11; 320 const GLuint kService1Id = 11;
319 // Check we can create texture. 321 // Check we can create texture.
320 manager.CreateTexture(kClient1Id, kService1Id); 322 manager.CreateTexture(kClient1Id, kService1Id);
321 // Check texture got created. 323 // Check texture got created.
322 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 324 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
323 ASSERT_TRUE(texture_ref != NULL); 325 ASSERT_TRUE(texture_ref != NULL);
324 TestHelper::SetTexParameteriWithExpectations( 326 TestHelper::SetTexParameteriWithExpectations(
325 gl_.get(), error_state_.get(), &manager, texture_ref, 327 gl_.get(), error_state_.get(), &manager, texture_ref,
326 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR); 328 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR);
327 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), 329 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE),
328 texture_ref->texture()->usage()); 330 texture_ref->texture()->usage());
329 manager.Destroy(false); 331 manager.Destroy(false);
330 } 332 }
331 333
332 TEST_F(TextureManagerTest, Destroy) { 334 TEST_F(TextureManagerTest, Destroy) {
333 const GLuint kClient1Id = 1; 335 const GLuint kClient1Id = 1;
334 const GLuint kService1Id = 11; 336 const GLuint kService1Id = 11;
335 TestHelper::SetupTextureManagerInitExpectations( 337 TestHelper::SetupTextureManagerInitExpectations(
336 gl_.get(), false, false, false, "", kUseDefaultTextures); 338 gl_.get(), false, false, false, "", kUseDefaultTextures);
337 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize, 339 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize,
338 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, 340 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
339 kMax3DTextureSize, kMaxArrayTextureLayers, 341 kMax3DTextureSize, kMaxArrayTextureLayers,
340 kUseDefaultTextures, nullptr); 342 kUseDefaultTextures, nullptr, &discardable_manager_);
341 manager.Initialize(); 343 manager.Initialize();
342 // Check we can create texture. 344 // Check we can create texture.
343 manager.CreateTexture(kClient1Id, kService1Id); 345 manager.CreateTexture(kClient1Id, kService1Id);
344 // Check texture got created. 346 // Check texture got created.
345 TextureRef* texture = manager.GetTexture(kClient1Id); 347 TextureRef* texture = manager.GetTexture(kClient1Id);
346 ASSERT_TRUE(texture != NULL); 348 ASSERT_TRUE(texture != NULL);
347 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) 349 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id)))
348 .Times(1) 350 .Times(1)
349 .RetiresOnSaturation(); 351 .RetiresOnSaturation();
350 TestHelper::SetupTextureManagerDestructionExpectations( 352 TestHelper::SetupTextureManagerDestructionExpectations(
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 } 487 }
486 488
487 TEST_F(TextureManagerTest, ValidForTargetNPOT) { 489 TEST_F(TextureManagerTest, ValidForTargetNPOT) {
488 TestHelper::SetupFeatureInfoInitExpectations( 490 TestHelper::SetupFeatureInfoInitExpectations(
489 gl_.get(), "GL_OES_texture_npot"); 491 gl_.get(), "GL_OES_texture_npot");
490 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 492 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
491 feature_info->InitializeForTesting(); 493 feature_info->InitializeForTesting();
492 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize, 494 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize,
493 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, 495 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
494 kMax3DTextureSize, kMaxArrayTextureLayers, 496 kMax3DTextureSize, kMaxArrayTextureLayers,
495 kUseDefaultTextures, nullptr); 497 kUseDefaultTextures, nullptr, &discardable_manager_);
496 // Check NPOT width on level 0 498 // Check NPOT width on level 0
497 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1)); 499 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1));
498 // Check NPOT height on level 0 500 // Check NPOT height on level 0
499 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1)); 501 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1));
500 // Check NPOT width on level 1 502 // Check NPOT width on level 1
501 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1)); 503 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1));
502 // Check NPOT height on level 1 504 // Check NPOT height on level 1
503 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 2, 5, 1)); 505 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 2, 5, 1));
504 manager.Destroy(false); 506 manager.Destroy(false);
505 } 507 }
506 508
507 TEST_F(TextureManagerTest, AlphaLuminanceCompatibilityProfile) { 509 TEST_F(TextureManagerTest, AlphaLuminanceCompatibilityProfile) {
508 const GLuint kClientId = 1; 510 const GLuint kClientId = 1;
509 const GLuint kServiceId = 11; 511 const GLuint kServiceId = 11;
510 512
511 SetupFeatureInfo("", "2.1", CONTEXT_TYPE_OPENGLES2); 513 SetupFeatureInfo("", "2.1", CONTEXT_TYPE_OPENGLES2);
512 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), false, false, 514 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), false, false,
513 false, "", kUseDefaultTextures); 515 false, "", kUseDefaultTextures);
514 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize, 516 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize,
515 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, 517 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
516 kMax3DTextureSize, kMaxArrayTextureLayers, 518 kMax3DTextureSize, kMaxArrayTextureLayers,
517 kUseDefaultTextures, nullptr); 519 kUseDefaultTextures, nullptr, &discardable_manager_);
518 manager.Initialize(); 520 manager.Initialize();
519 521
520 // Create a texture. 522 // Create a texture.
521 manager.CreateTexture(kClientId, kServiceId); 523 manager.CreateTexture(kClientId, kServiceId);
522 scoped_refptr<TextureRef> texture_ref(manager.GetTexture(kClientId)); 524 scoped_refptr<TextureRef> texture_ref(manager.GetTexture(kClientId));
523 manager.SetTarget(texture_ref.get(), GL_TEXTURE_2D); 525 manager.SetTarget(texture_ref.get(), GL_TEXTURE_2D);
524 526
525 Texture* texture = texture_ref->texture(); 527 Texture* texture = texture_ref->texture();
526 528
527 // GL_ALPHA emulation 529 // GL_ALPHA emulation
(...skipping 20 matching lines...) Expand all
548 TEST_F(TextureManagerTest, AlphaLuminanceCoreProfileEmulation) { 550 TEST_F(TextureManagerTest, AlphaLuminanceCoreProfileEmulation) {
549 const GLuint kClientId = 1; 551 const GLuint kClientId = 1;
550 const GLuint kServiceId = 11; 552 const GLuint kServiceId = 11;
551 553
552 SetupFeatureInfo("", "4.2", CONTEXT_TYPE_OPENGLES3); 554 SetupFeatureInfo("", "4.2", CONTEXT_TYPE_OPENGLES3);
553 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), true, true, true, 555 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), true, true, true,
554 "", kUseDefaultTextures); 556 "", kUseDefaultTextures);
555 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize, 557 TextureManager manager(nullptr, feature_info_.get(), kMaxTextureSize,
556 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, 558 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
557 kMax3DTextureSize, kMaxArrayTextureLayers, 559 kMax3DTextureSize, kMaxArrayTextureLayers,
558 kUseDefaultTextures, nullptr); 560 kUseDefaultTextures, nullptr, &discardable_manager_);
559 manager.Initialize(); 561 manager.Initialize();
560 562
561 // Create a texture. 563 // Create a texture.
562 manager.CreateTexture(kClientId, kServiceId); 564 manager.CreateTexture(kClientId, kServiceId);
563 scoped_refptr<TextureRef> texture_ref(manager.GetTexture(kClientId)); 565 scoped_refptr<TextureRef> texture_ref(manager.GetTexture(kClientId));
564 manager.SetTarget(texture_ref.get(), GL_TEXTURE_2D); 566 manager.SetTarget(texture_ref.get(), GL_TEXTURE_2D);
565 567
566 Texture* texture = texture_ref->texture(); 568 Texture* texture = texture_ref->texture();
567 569
568 // GL_ALPHA emulation 570 // GL_ALPHA emulation
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 protected: 665 protected:
664 void SetUpBase(MemoryTracker* memory_tracker, const std::string& extensions) { 666 void SetUpBase(MemoryTracker* memory_tracker, const std::string& extensions) {
665 GpuServiceTest::SetUp(); 667 GpuServiceTest::SetUp();
666 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), 668 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(),
667 extensions.c_str()); 669 extensions.c_str());
668 feature_info_->InitializeForTesting(); 670 feature_info_->InitializeForTesting();
669 671
670 manager_.reset(new TextureManager( 672 manager_.reset(new TextureManager(
671 memory_tracker, feature_info_.get(), kMaxTextureSize, 673 memory_tracker, feature_info_.get(), kMaxTextureSize,
672 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, kMax3DTextureSize, 674 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, kMax3DTextureSize,
673 kMaxArrayTextureLayers, kUseDefaultTextures, nullptr)); 675 kMaxArrayTextureLayers, kUseDefaultTextures, nullptr,
676 &discardable_manager_));
674 decoder_.reset(new ::testing::StrictMock<gles2::MockGLES2Decoder>()); 677 decoder_.reset(new ::testing::StrictMock<gles2::MockGLES2Decoder>());
675 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); 678 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>());
676 manager_->CreateTexture(kClient1Id, kService1Id); 679 manager_->CreateTexture(kClient1Id, kService1Id);
677 texture_ref_ = manager_->GetTexture(kClient1Id); 680 texture_ref_ = manager_->GetTexture(kClient1Id);
678 ASSERT_TRUE(texture_ref_.get() != NULL); 681 ASSERT_TRUE(texture_ref_.get() != NULL);
679 } 682 }
680 683
681 void TearDown() override { 684 void TearDown() override {
682 if (texture_ref_.get()) { 685 if (texture_ref_.get()) {
683 // If it's not in the manager then setting texture_ref_ to NULL will 686 // If it's not in the manager then setting texture_ref_ to NULL will
(...skipping 15 matching lines...) Expand all
699 void SetParameter( 702 void SetParameter(
700 TextureRef* texture_ref, GLenum pname, GLint value, GLenum error) { 703 TextureRef* texture_ref, GLenum pname, GLint value, GLenum error) {
701 TestHelper::SetTexParameteriWithExpectations( 704 TestHelper::SetTexParameteriWithExpectations(
702 gl_.get(), error_state_.get(), manager_.get(), 705 gl_.get(), error_state_.get(), manager_.get(),
703 texture_ref, pname, value, error); 706 texture_ref, pname, value, error);
704 } 707 }
705 708
706 std::unique_ptr<MockGLES2Decoder> decoder_; 709 std::unique_ptr<MockGLES2Decoder> decoder_;
707 std::unique_ptr<MockErrorState> error_state_; 710 std::unique_ptr<MockErrorState> error_state_;
708 scoped_refptr<FeatureInfo> feature_info_; 711 scoped_refptr<FeatureInfo> feature_info_;
712 ServiceDiscardableManager discardable_manager_;
709 std::unique_ptr<TextureManager> manager_; 713 std::unique_ptr<TextureManager> manager_;
710 scoped_refptr<TextureRef> texture_ref_; 714 scoped_refptr<TextureRef> texture_ref_;
711 }; 715 };
712 716
713 class TextureTest : public TextureTestBase { 717 class TextureTest : public TextureTestBase {
714 protected: 718 protected:
715 void SetUp() override { SetUpBase(NULL, std::string()); } 719 void SetUp() override { SetUpBase(NULL, std::string()); }
716 }; 720 };
717 721
718 class TextureMemoryTrackerTest : public TextureTestBase { 722 class TextureMemoryTrackerTest : public TextureTestBase {
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
993 } 997 }
994 998
995 TEST_F(TextureTest, NPOT2DNPOTOK) { 999 TEST_F(TextureTest, NPOT2DNPOTOK) {
996 TestHelper::SetupFeatureInfoInitExpectations( 1000 TestHelper::SetupFeatureInfoInitExpectations(
997 gl_.get(), "GL_OES_texture_npot"); 1001 gl_.get(), "GL_OES_texture_npot");
998 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1002 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
999 feature_info->InitializeForTesting(); 1003 feature_info->InitializeForTesting();
1000 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize, 1004 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize,
1001 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, 1005 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
1002 kMax3DTextureSize, kMaxArrayTextureLayers, 1006 kMax3DTextureSize, kMaxArrayTextureLayers,
1003 kUseDefaultTextures, nullptr); 1007 kUseDefaultTextures, nullptr, &discardable_manager_);
1004 manager.CreateTexture(kClient1Id, kService1Id); 1008 manager.CreateTexture(kClient1Id, kService1Id);
1005 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1009 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1006 ASSERT_TRUE(texture_ref != NULL); 1010 ASSERT_TRUE(texture_ref != NULL);
1007 Texture* texture = texture_ref->texture(); 1011 Texture* texture = texture_ref->texture();
1008 1012
1009 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 1013 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1010 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 1014 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
1011 // Check Setting level 0 to NPOT 1015 // Check Setting level 0 to NPOT
1012 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, 1016 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0,
1013 GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5)); 1017 GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5));
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
1291 } 1295 }
1292 1296
1293 TEST_F(TextureTest, FloatNotLinear) { 1297 TEST_F(TextureTest, FloatNotLinear) {
1294 TestHelper::SetupFeatureInfoInitExpectations( 1298 TestHelper::SetupFeatureInfoInitExpectations(
1295 gl_.get(), "GL_OES_texture_float"); 1299 gl_.get(), "GL_OES_texture_float");
1296 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1300 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1297 feature_info->InitializeForTesting(); 1301 feature_info->InitializeForTesting();
1298 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize, 1302 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize,
1299 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, 1303 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
1300 kMax3DTextureSize, kMaxArrayTextureLayers, 1304 kMax3DTextureSize, kMaxArrayTextureLayers,
1301 kUseDefaultTextures, nullptr); 1305 kUseDefaultTextures, nullptr, &discardable_manager_);
1302 manager.CreateTexture(kClient1Id, kService1Id); 1306 manager.CreateTexture(kClient1Id, kService1Id);
1303 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1307 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1304 ASSERT_TRUE(texture_ref != NULL); 1308 ASSERT_TRUE(texture_ref != NULL);
1305 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 1309 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1306 Texture* texture = texture_ref->texture(); 1310 Texture* texture = texture_ref->texture();
1307 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 1311 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
1308 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, 1312 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0,
1309 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1)); 1313 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1));
1310 EXPECT_FALSE(manager.CanRender(texture_ref)); 1314 EXPECT_FALSE(manager.CanRender(texture_ref));
1311 TestHelper::SetTexParameteriWithExpectations( 1315 TestHelper::SetTexParameteriWithExpectations(
1312 gl_.get(), error_state_.get(), &manager, 1316 gl_.get(), error_state_.get(), &manager,
1313 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); 1317 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR);
1314 EXPECT_FALSE(manager.CanRender(texture_ref)); 1318 EXPECT_FALSE(manager.CanRender(texture_ref));
1315 TestHelper::SetTexParameteriWithExpectations( 1319 TestHelper::SetTexParameteriWithExpectations(
1316 gl_.get(), error_state_.get(), &manager, texture_ref, 1320 gl_.get(), error_state_.get(), &manager, texture_ref,
1317 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR); 1321 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR);
1318 EXPECT_TRUE(manager.CanRender(texture_ref)); 1322 EXPECT_TRUE(manager.CanRender(texture_ref));
1319 manager.Destroy(false); 1323 manager.Destroy(false);
1320 } 1324 }
1321 1325
1322 TEST_F(TextureTest, FloatLinear) { 1326 TEST_F(TextureTest, FloatLinear) {
1323 TestHelper::SetupFeatureInfoInitExpectations( 1327 TestHelper::SetupFeatureInfoInitExpectations(
1324 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear"); 1328 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear");
1325 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1329 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1326 feature_info->InitializeForTesting(); 1330 feature_info->InitializeForTesting();
1327 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize, 1331 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize,
1328 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, 1332 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
1329 kMax3DTextureSize, kMaxArrayTextureLayers, 1333 kMax3DTextureSize, kMaxArrayTextureLayers,
1330 kUseDefaultTextures, nullptr); 1334 kUseDefaultTextures, nullptr, &discardable_manager_);
1331 manager.CreateTexture(kClient1Id, kService1Id); 1335 manager.CreateTexture(kClient1Id, kService1Id);
1332 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1336 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1333 ASSERT_TRUE(texture_ref != NULL); 1337 ASSERT_TRUE(texture_ref != NULL);
1334 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 1338 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1335 Texture* texture = texture_ref->texture(); 1339 Texture* texture = texture_ref->texture();
1336 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 1340 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, 1341 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0,
1338 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1)); 1342 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1));
1339 EXPECT_TRUE(manager.CanRender(texture_ref)); 1343 EXPECT_TRUE(manager.CanRender(texture_ref));
1340 manager.Destroy(false); 1344 manager.Destroy(false);
1341 } 1345 }
1342 1346
1343 TEST_F(TextureTest, HalfFloatNotLinear) { 1347 TEST_F(TextureTest, HalfFloatNotLinear) {
1344 TestHelper::SetupFeatureInfoInitExpectations( 1348 TestHelper::SetupFeatureInfoInitExpectations(
1345 gl_.get(), "GL_OES_texture_half_float"); 1349 gl_.get(), "GL_OES_texture_half_float");
1346 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1350 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1347 feature_info->InitializeForTesting(); 1351 feature_info->InitializeForTesting();
1348 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize, 1352 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize,
1349 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, 1353 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
1350 kMax3DTextureSize, kMaxArrayTextureLayers, 1354 kMax3DTextureSize, kMaxArrayTextureLayers,
1351 kUseDefaultTextures, nullptr); 1355 kUseDefaultTextures, nullptr, &discardable_manager_);
1352 manager.CreateTexture(kClient1Id, kService1Id); 1356 manager.CreateTexture(kClient1Id, kService1Id);
1353 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1357 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1354 ASSERT_TRUE(texture_ref != NULL); 1358 ASSERT_TRUE(texture_ref != NULL);
1355 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 1359 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1356 Texture* texture = texture_ref->texture(); 1360 Texture* texture = texture_ref->texture();
1357 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 1361 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
1358 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, 1362 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0,
1359 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1)); 1363 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1));
1360 EXPECT_FALSE(manager.CanRender(texture_ref)); 1364 EXPECT_FALSE(manager.CanRender(texture_ref));
1361 TestHelper::SetTexParameteriWithExpectations( 1365 TestHelper::SetTexParameteriWithExpectations(
1362 gl_.get(), error_state_.get(), &manager, 1366 gl_.get(), error_state_.get(), &manager,
1363 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); 1367 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR);
1364 EXPECT_FALSE(manager.CanRender(texture_ref)); 1368 EXPECT_FALSE(manager.CanRender(texture_ref));
1365 TestHelper::SetTexParameteriWithExpectations( 1369 TestHelper::SetTexParameteriWithExpectations(
1366 gl_.get(), error_state_.get(), &manager, texture_ref, 1370 gl_.get(), error_state_.get(), &manager, texture_ref,
1367 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR); 1371 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR);
1368 EXPECT_TRUE(manager.CanRender(texture_ref)); 1372 EXPECT_TRUE(manager.CanRender(texture_ref));
1369 manager.Destroy(false); 1373 manager.Destroy(false);
1370 } 1374 }
1371 1375
1372 TEST_F(TextureTest, HalfFloatLinear) { 1376 TEST_F(TextureTest, HalfFloatLinear) {
1373 TestHelper::SetupFeatureInfoInitExpectations( 1377 TestHelper::SetupFeatureInfoInitExpectations(
1374 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); 1378 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear");
1375 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1379 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1376 feature_info->InitializeForTesting(); 1380 feature_info->InitializeForTesting();
1377 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize, 1381 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize,
1378 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, 1382 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
1379 kMax3DTextureSize, kMaxArrayTextureLayers, 1383 kMax3DTextureSize, kMaxArrayTextureLayers,
1380 kUseDefaultTextures, nullptr); 1384 kUseDefaultTextures, nullptr, &discardable_manager_);
1381 manager.CreateTexture(kClient1Id, kService1Id); 1385 manager.CreateTexture(kClient1Id, kService1Id);
1382 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1386 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1383 ASSERT_TRUE(texture_ref != NULL); 1387 ASSERT_TRUE(texture_ref != NULL);
1384 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 1388 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1385 Texture* texture = texture_ref->texture(); 1389 Texture* texture = texture_ref->texture();
1386 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 1390 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
1387 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, 1391 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0,
1388 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1)); 1392 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1));
1389 EXPECT_TRUE(manager.CanRender(texture_ref)); 1393 EXPECT_TRUE(manager.CanRender(texture_ref));
1390 manager.Destroy(false); 1394 manager.Destroy(false);
1391 } 1395 }
1392 1396
1393 TEST_F(TextureTest, EGLImageExternal) { 1397 TEST_F(TextureTest, EGLImageExternal) {
1394 TestHelper::SetupFeatureInfoInitExpectations( 1398 TestHelper::SetupFeatureInfoInitExpectations(
1395 gl_.get(), "GL_OES_EGL_image_external"); 1399 gl_.get(), "GL_OES_EGL_image_external");
1396 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1400 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1397 feature_info->InitializeForTesting(); 1401 feature_info->InitializeForTesting();
1398 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize, 1402 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize,
1399 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, 1403 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
1400 kMax3DTextureSize, kMaxArrayTextureLayers, 1404 kMax3DTextureSize, kMaxArrayTextureLayers,
1401 kUseDefaultTextures, nullptr); 1405 kUseDefaultTextures, nullptr, &discardable_manager_);
1402 manager.CreateTexture(kClient1Id, kService1Id); 1406 manager.CreateTexture(kClient1Id, kService1Id);
1403 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1407 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1404 ASSERT_TRUE(texture_ref != NULL); 1408 ASSERT_TRUE(texture_ref != NULL);
1405 manager.SetTarget(texture_ref, GL_TEXTURE_EXTERNAL_OES); 1409 manager.SetTarget(texture_ref, GL_TEXTURE_EXTERNAL_OES);
1406 Texture* texture = texture_ref->texture(); 1410 Texture* texture = texture_ref->texture();
1407 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target()); 1411 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target());
1408 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); 1412 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref));
1409 manager.Destroy(false); 1413 manager.Destroy(false);
1410 } 1414 }
1411 1415
1412 TEST_F(TextureTest, DepthTexture) { 1416 TEST_F(TextureTest, DepthTexture) {
1413 TestHelper::SetupFeatureInfoInitExpectations( 1417 TestHelper::SetupFeatureInfoInitExpectations(
1414 gl_.get(), "GL_ANGLE_depth_texture"); 1418 gl_.get(), "GL_ANGLE_depth_texture");
1415 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1419 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1416 feature_info->InitializeForTesting(); 1420 feature_info->InitializeForTesting();
1417 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize, 1421 TextureManager manager(nullptr, feature_info.get(), kMaxTextureSize,
1418 kMaxCubeMapTextureSize, kMaxRectangleTextureSize, 1422 kMaxCubeMapTextureSize, kMaxRectangleTextureSize,
1419 kMax3DTextureSize, kMaxArrayTextureLayers, 1423 kMax3DTextureSize, kMaxArrayTextureLayers,
1420 kUseDefaultTextures, nullptr); 1424 kUseDefaultTextures, nullptr, &discardable_manager_);
1421 manager.CreateTexture(kClient1Id, kService1Id); 1425 manager.CreateTexture(kClient1Id, kService1Id);
1422 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1426 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1423 ASSERT_TRUE(texture_ref != NULL); 1427 ASSERT_TRUE(texture_ref != NULL);
1424 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 1428 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1425 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4, 1429 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4,
1426 1, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, gfx::Rect()); 1430 1, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, gfx::Rect());
1427 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); 1431 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref));
1428 manager.Destroy(false); 1432 manager.Destroy(false);
1429 } 1433 }
1430 1434
(...skipping 748 matching lines...) Expand 10 before | Expand all | Expand 10 after
2179 public: 2183 public:
2180 static const bool kUseDefaultTextures = false; 2184 static const bool kUseDefaultTextures = false;
2181 2185
2182 SharedTextureTest() : feature_info_(new FeatureInfo()) {} 2186 SharedTextureTest() : feature_info_(new FeatureInfo()) {}
2183 2187
2184 ~SharedTextureTest() override {} 2188 ~SharedTextureTest() override {}
2185 2189
2186 void SetUp() override { 2190 void SetUp() override {
2187 GpuServiceTest::SetUp(); 2191 GpuServiceTest::SetUp();
2188 memory_tracker1_ = new CountingMemoryTracker; 2192 memory_tracker1_ = new CountingMemoryTracker;
2189 texture_manager1_.reset( 2193 texture_manager1_.reset(new TextureManager(
2190 new TextureManager(memory_tracker1_.get(), feature_info_.get(), 2194 memory_tracker1_.get(), feature_info_.get(),
2191 TextureManagerTest::kMaxTextureSize, 2195 TextureManagerTest::kMaxTextureSize,
2192 TextureManagerTest::kMaxCubeMapTextureSize, 2196 TextureManagerTest::kMaxCubeMapTextureSize,
2193 TextureManagerTest::kMaxRectangleTextureSize, 2197 TextureManagerTest::kMaxRectangleTextureSize,
2194 TextureManagerTest::kMax3DTextureSize, 2198 TextureManagerTest::kMax3DTextureSize,
2195 TextureManagerTest::kMaxArrayTextureLayers, 2199 TextureManagerTest::kMaxArrayTextureLayers, kUseDefaultTextures,
2196 kUseDefaultTextures, nullptr)); 2200 nullptr, &discardable_manager_));
2197 memory_tracker2_ = new CountingMemoryTracker; 2201 memory_tracker2_ = new CountingMemoryTracker;
2198 texture_manager2_.reset( 2202 texture_manager2_.reset(new TextureManager(
2199 new TextureManager(memory_tracker2_.get(), feature_info_.get(), 2203 memory_tracker2_.get(), feature_info_.get(),
2200 TextureManagerTest::kMaxTextureSize, 2204 TextureManagerTest::kMaxTextureSize,
2201 TextureManagerTest::kMaxCubeMapTextureSize, 2205 TextureManagerTest::kMaxCubeMapTextureSize,
2202 TextureManagerTest::kMaxRectangleTextureSize, 2206 TextureManagerTest::kMaxRectangleTextureSize,
2203 TextureManagerTest::kMax3DTextureSize, 2207 TextureManagerTest::kMax3DTextureSize,
2204 TextureManagerTest::kMaxArrayTextureLayers, 2208 TextureManagerTest::kMaxArrayTextureLayers, kUseDefaultTextures,
2205 kUseDefaultTextures, nullptr)); 2209 nullptr, &discardable_manager_));
2206 SetupFeatureInfo("", "OpenGL ES 2.0", CONTEXT_TYPE_OPENGLES2); 2210 SetupFeatureInfo("", "OpenGL ES 2.0", CONTEXT_TYPE_OPENGLES2);
2207 TestHelper::SetupTextureManagerInitExpectations( 2211 TestHelper::SetupTextureManagerInitExpectations(
2208 gl_.get(), false, false, false, "", kUseDefaultTextures); 2212 gl_.get(), false, false, false, "", kUseDefaultTextures);
2209 texture_manager1_->Initialize(); 2213 texture_manager1_->Initialize();
2210 TestHelper::SetupTextureManagerInitExpectations( 2214 TestHelper::SetupTextureManagerInitExpectations(
2211 gl_.get(), false, false, false, "", kUseDefaultTextures); 2215 gl_.get(), false, false, false, "", kUseDefaultTextures);
2212 texture_manager2_->Initialize(); 2216 texture_manager2_->Initialize();
2213 } 2217 }
2214 2218
2215 void TearDown() override { 2219 void TearDown() override {
(...skipping 17 matching lines...) Expand all
2233 .WillOnce(SetArgPointee<1>(8)) 2237 .WillOnce(SetArgPointee<1>(8))
2234 .RetiresOnSaturation(); 2238 .RetiresOnSaturation();
2235 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_DRAW_BUFFERS, _)) 2239 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_DRAW_BUFFERS, _))
2236 .WillOnce(SetArgPointee<1>(8)) 2240 .WillOnce(SetArgPointee<1>(8))
2237 .RetiresOnSaturation(); 2241 .RetiresOnSaturation();
2238 feature_info_->EnableES3Validators(); 2242 feature_info_->EnableES3Validators();
2239 } 2243 }
2240 } 2244 }
2241 2245
2242 scoped_refptr<FeatureInfo> feature_info_; 2246 scoped_refptr<FeatureInfo> feature_info_;
2247 ServiceDiscardableManager discardable_manager_;
2243 scoped_refptr<CountingMemoryTracker> memory_tracker1_; 2248 scoped_refptr<CountingMemoryTracker> memory_tracker1_;
2244 std::unique_ptr<TextureManager> texture_manager1_; 2249 std::unique_ptr<TextureManager> texture_manager1_;
2245 scoped_refptr<CountingMemoryTracker> memory_tracker2_; 2250 scoped_refptr<CountingMemoryTracker> memory_tracker2_;
2246 std::unique_ptr<TextureManager> texture_manager2_; 2251 std::unique_ptr<TextureManager> texture_manager2_;
2247 }; 2252 };
2248 2253
2249 TEST_F(SharedTextureTest, DeleteTextures) { 2254 TEST_F(SharedTextureTest, DeleteTextures) {
2250 scoped_refptr<TextureRef> ref1 = texture_manager1_->CreateTexture(10, 10); 2255 scoped_refptr<TextureRef> ref1 = texture_manager1_->CreateTexture(10, 10);
2251 scoped_refptr<TextureRef> ref2 = 2256 scoped_refptr<TextureRef> ref2 =
2252 texture_manager2_->Consume(20, ref1->texture()); 2257 texture_manager2_->Consume(20, ref1->texture());
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
2718 ExpectValid( 2723 ExpectValid(
2719 true, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); 2724 true, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8);
2720 ExpectValid(true, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, 2725 ExpectValid(true, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV,
2721 GL_DEPTH32F_STENCIL8); 2726 GL_DEPTH32F_STENCIL8);
2722 2727
2723 ExpectInvalid(true, GL_RGB_INTEGER, GL_INT, GL_RGBA8); 2728 ExpectInvalid(true, GL_RGB_INTEGER, GL_INT, GL_RGBA8);
2724 } 2729 }
2725 2730
2726 } // namespace gles2 2731 } // namespace gles2
2727 } // namespace gpu 2732 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/texture_manager.cc ('k') | gpu/command_buffer/tests/fuzzer_main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698