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

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

Issue 224763002: Remove default textures in (!bind_generates_resource) context groups. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use kBindGeneratesResource in context_group_unittest.cc. Created 6 years, 8 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') | no next file » | 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 "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "gpu/command_buffer/service/error_state_mock.h" 8 #include "gpu/command_buffer/service/error_state_mock.h"
9 #include "gpu/command_buffer/service/feature_info.h" 9 #include "gpu/command_buffer/service/feature_info.h"
10 #include "gpu/command_buffer/service/framebuffer_manager.h" 10 #include "gpu/command_buffer/service/framebuffer_manager.h"
(...skipping 29 matching lines...) Expand all
40 }; 40 };
41 41
42 class TextureManagerTest : public testing::Test { 42 class TextureManagerTest : public testing::Test {
43 public: 43 public:
44 static const GLint kMaxTextureSize = 16; 44 static const GLint kMaxTextureSize = 16;
45 static const GLint kMaxCubeMapTextureSize = 8; 45 static const GLint kMaxCubeMapTextureSize = 8;
46 static const GLint kMaxExternalTextureSize = 16; 46 static const GLint kMaxExternalTextureSize = 16;
47 static const GLint kMax2dLevels = 5; 47 static const GLint kMax2dLevels = 5;
48 static const GLint kMaxCubeMapLevels = 4; 48 static const GLint kMaxCubeMapLevels = 4;
49 static const GLint kMaxExternalLevels = 1; 49 static const GLint kMaxExternalLevels = 1;
50 static const bool kUseDefaultTextures = false;
50 51
51 TextureManagerTest() 52 TextureManagerTest() : feature_info_(new FeatureInfo()) {}
52 : feature_info_(new FeatureInfo()) {
53 }
54 53
55 virtual ~TextureManagerTest() { 54 virtual ~TextureManagerTest() {
56 } 55 }
57 56
58 protected: 57 protected:
59 virtual void SetUp() { 58 virtual void SetUp() {
60 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>()); 59 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
61 ::gfx::MockGLInterface::SetGLInterface(gl_.get()); 60 ::gfx::MockGLInterface::SetGLInterface(gl_.get());
62 61
63 manager_.reset(new TextureManager( 62 manager_.reset(new TextureManager(NULL,
64 NULL, feature_info_.get(), 63 feature_info_.get(),
65 kMaxTextureSize, kMaxCubeMapTextureSize)); 64 kMaxTextureSize,
66 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), ""); 65 kMaxCubeMapTextureSize,
66 kUseDefaultTextures));
67 TestHelper::SetupTextureManagerInitExpectations(
68 gl_.get(), "", kUseDefaultTextures);
67 manager_->Initialize(); 69 manager_->Initialize();
68 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); 70 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>());
69 } 71 }
70 72
71 virtual void TearDown() { 73 virtual void TearDown() {
72 manager_->Destroy(false); 74 manager_->Destroy(false);
73 manager_.reset(); 75 manager_.reset();
74 ::gfx::MockGLInterface::SetGLInterface(NULL); 76 ::gfx::MockGLInterface::SetGLInterface(NULL);
75 gl_.reset(); 77 gl_.reset();
76 } 78 }
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 SetParameter( 157 SetParameter(
156 texture_ref, GL_TEXTURE_MAG_FILTER, GL_CLAMP_TO_EDGE, GL_INVALID_ENUM); 158 texture_ref, GL_TEXTURE_MAG_FILTER, GL_CLAMP_TO_EDGE, GL_INVALID_ENUM);
157 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), texture->min_filter()); 159 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), texture->min_filter());
158 SetParameter(texture_ref, GL_TEXTURE_WRAP_S, GL_NEAREST, GL_INVALID_ENUM); 160 SetParameter(texture_ref, GL_TEXTURE_WRAP_S, GL_NEAREST, GL_INVALID_ENUM);
159 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_s()); 161 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_s());
160 SetParameter(texture_ref, GL_TEXTURE_WRAP_T, GL_NEAREST, GL_INVALID_ENUM); 162 SetParameter(texture_ref, GL_TEXTURE_WRAP_T, GL_NEAREST, GL_INVALID_ENUM);
161 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_t()); 163 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_t());
162 SetParameter(texture_ref, GL_TEXTURE_MAX_ANISOTROPY_EXT, 0, GL_INVALID_VALUE); 164 SetParameter(texture_ref, GL_TEXTURE_MAX_ANISOTROPY_EXT, 0, GL_INVALID_VALUE);
163 } 165 }
164 166
167 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) {
168 bool use_default_textures = true;
169 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
170
171 TestHelper::SetupTextureManagerInitExpectations(
172 gl_.get(), "GL_ANGLE_texture_usage", use_default_textures);
173 TextureManager manager(NULL,
174 feature_info_.get(),
175 kMaxTextureSize,
176 kMaxCubeMapTextureSize,
177 use_default_textures);
178 manager.Initialize();
179
180 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL);
181 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL);
182
183 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB.
184
185 manager.Destroy(false);
186 }
187
188 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) {
189 bool use_default_textures = false;
190 TestHelper::SetupTextureManagerInitExpectations(
191 gl_.get(), "GL_ANGLE_texture_usage", use_default_textures);
192 TextureManager manager(NULL,
193 feature_info_.get(),
194 kMaxTextureSize,
195 kMaxCubeMapTextureSize,
196 use_default_textures);
197 manager.Initialize();
198
199 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL);
200 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL);
201
202 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB.
203
204 manager.Destroy(false);
205 }
206
165 TEST_F(TextureManagerTest, TextureUsageExt) { 207 TEST_F(TextureManagerTest, TextureUsageExt) {
166 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), 208 TestHelper::SetupTextureManagerInitExpectations(
167 "GL_ANGLE_texture_usage"); 209 gl_.get(), "GL_ANGLE_texture_usage", kUseDefaultTextures);
168 TextureManager manager( 210 TextureManager manager(NULL,
169 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize); 211 feature_info_.get(),
212 kMaxTextureSize,
213 kMaxCubeMapTextureSize,
214 kUseDefaultTextures);
170 manager.Initialize(); 215 manager.Initialize();
171 const GLuint kClient1Id = 1; 216 const GLuint kClient1Id = 1;
172 const GLuint kService1Id = 11; 217 const GLuint kService1Id = 11;
173 // Check we can create texture. 218 // Check we can create texture.
174 manager.CreateTexture(kClient1Id, kService1Id); 219 manager.CreateTexture(kClient1Id, kService1Id);
175 // Check texture got created. 220 // Check texture got created.
176 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 221 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
177 ASSERT_TRUE(texture_ref != NULL); 222 ASSERT_TRUE(texture_ref != NULL);
178 TestHelper::SetTexParameteriWithExpectations( 223 TestHelper::SetTexParameteriWithExpectations(
179 gl_.get(), error_state_.get(), &manager, texture_ref, 224 gl_.get(), error_state_.get(), &manager, texture_ref,
180 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE,GL_NO_ERROR); 225 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE,GL_NO_ERROR);
181 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), 226 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE),
182 texture_ref->texture()->usage()); 227 texture_ref->texture()->usage());
183 manager.Destroy(false); 228 manager.Destroy(false);
184 } 229 }
185 230
186 TEST_F(TextureManagerTest, Destroy) { 231 TEST_F(TextureManagerTest, Destroy) {
187 const GLuint kClient1Id = 1; 232 const GLuint kClient1Id = 1;
188 const GLuint kService1Id = 11; 233 const GLuint kService1Id = 11;
189 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), ""); 234 TestHelper::SetupTextureManagerInitExpectations(
190 TextureManager manager( 235 gl_.get(), "", kUseDefaultTextures);
191 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize); 236 TextureManager manager(NULL,
237 feature_info_.get(),
238 kMaxTextureSize,
239 kMaxCubeMapTextureSize,
240 kUseDefaultTextures);
192 manager.Initialize(); 241 manager.Initialize();
193 // Check we can create texture. 242 // Check we can create texture.
194 manager.CreateTexture(kClient1Id, kService1Id); 243 manager.CreateTexture(kClient1Id, kService1Id);
195 // Check texture got created. 244 // Check texture got created.
196 TextureRef* texture = manager.GetTexture(kClient1Id); 245 TextureRef* texture = manager.GetTexture(kClient1Id);
197 ASSERT_TRUE(texture != NULL); 246 ASSERT_TRUE(texture != NULL);
198 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) 247 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id)))
199 .Times(1) 248 .Times(1)
200 .RetiresOnSaturation(); 249 .RetiresOnSaturation();
201 TestHelper::SetupTextureManagerDestructionExpectations(gl_.get(), ""); 250 TestHelper::SetupTextureManagerDestructionExpectations(
251 gl_.get(), "", kUseDefaultTextures);
202 manager.Destroy(true); 252 manager.Destroy(true);
203 // Check that resources got freed. 253 // Check that resources got freed.
204 texture = manager.GetTexture(kClient1Id); 254 texture = manager.GetTexture(kClient1Id);
205 ASSERT_TRUE(texture == NULL); 255 ASSERT_TRUE(texture == NULL);
206 } 256 }
207 257
208 TEST_F(TextureManagerTest, MaxValues) { 258 TEST_F(TextureManagerTest, MaxValues) {
209 // Check we get the right values for the max sizes. 259 // Check we get the right values for the max sizes.
210 EXPECT_EQ(kMax2dLevels, manager_->MaxLevelsForTarget(GL_TEXTURE_2D)); 260 EXPECT_EQ(kMax2dLevels, manager_->MaxLevelsForTarget(GL_TEXTURE_2D));
211 EXPECT_EQ(kMaxCubeMapLevels, 261 EXPECT_EQ(kMaxCubeMapLevels,
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 (kMaxCubeMapTextureSize >> level) * 2, 362 (kMaxCubeMapTextureSize >> level) * 2,
313 1)); 363 1));
314 } 364 }
315 } 365 }
316 366
317 TEST_F(TextureManagerTest, ValidForTargetNPOT) { 367 TEST_F(TextureManagerTest, ValidForTargetNPOT) {
318 TestHelper::SetupFeatureInfoInitExpectations( 368 TestHelper::SetupFeatureInfoInitExpectations(
319 gl_.get(), "GL_OES_texture_npot"); 369 gl_.get(), "GL_OES_texture_npot");
320 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 370 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
321 feature_info->Initialize(); 371 feature_info->Initialize();
322 TextureManager manager( 372 TextureManager manager(NULL,
323 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); 373 feature_info.get(),
374 kMaxTextureSize,
375 kMaxCubeMapTextureSize,
376 kUseDefaultTextures);
324 // Check NPOT width on level 0 377 // Check NPOT width on level 0
325 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1)); 378 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1));
326 // Check NPOT height on level 0 379 // Check NPOT height on level 0
327 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1)); 380 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1));
328 // Check NPOT width on level 1 381 // Check NPOT width on level 1
329 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1)); 382 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1));
330 // Check NPOT height on level 1 383 // Check NPOT height on level 1
331 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 2, 5, 1)); 384 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 2, 5, 1));
332 manager.Destroy(false); 385 manager.Destroy(false);
333 } 386 }
334 387
335 class TextureTestBase : public testing::Test { 388 class TextureTestBase : public testing::Test {
336 public: 389 public:
337 static const GLint kMaxTextureSize = 16; 390 static const GLint kMaxTextureSize = 16;
338 static const GLint kMaxCubeMapTextureSize = 8; 391 static const GLint kMaxCubeMapTextureSize = 8;
339 static const GLint kMax2dLevels = 5; 392 static const GLint kMax2dLevels = 5;
340 static const GLint kMaxCubeMapLevels = 4; 393 static const GLint kMaxCubeMapLevels = 4;
341 static const GLuint kClient1Id = 1; 394 static const GLuint kClient1Id = 1;
342 static const GLuint kService1Id = 11; 395 static const GLuint kService1Id = 11;
396 static const bool kUseDefaultTextures = false;
343 397
344 TextureTestBase() 398 TextureTestBase()
345 : feature_info_(new FeatureInfo()) { 399 : feature_info_(new FeatureInfo()) {
346 } 400 }
347 virtual ~TextureTestBase() { 401 virtual ~TextureTestBase() {
348 texture_ref_ = NULL; 402 texture_ref_ = NULL;
349 } 403 }
350 404
351 protected: 405 protected:
352 void SetUpBase(MemoryTracker* memory_tracker, std::string extensions) { 406 void SetUpBase(MemoryTracker* memory_tracker, std::string extensions) {
353 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>()); 407 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
354 ::gfx::MockGLInterface::SetGLInterface(gl_.get()); 408 ::gfx::MockGLInterface::SetGLInterface(gl_.get());
355 409
356 if (!extensions.empty()) { 410 if (!extensions.empty()) {
357 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), 411 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(),
358 extensions.c_str()); 412 extensions.c_str());
359 feature_info_->Initialize(); 413 feature_info_->Initialize();
360 } 414 }
361 415
362 manager_.reset(new TextureManager( 416 manager_.reset(new TextureManager(memory_tracker,
363 memory_tracker, feature_info_.get(), 417 feature_info_.get(),
364 kMaxTextureSize, kMaxCubeMapTextureSize)); 418 kMaxTextureSize,
419 kMaxCubeMapTextureSize,
420 kUseDefaultTextures));
365 decoder_.reset(new ::testing::StrictMock<gles2::MockGLES2Decoder>()); 421 decoder_.reset(new ::testing::StrictMock<gles2::MockGLES2Decoder>());
366 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); 422 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>());
367 manager_->CreateTexture(kClient1Id, kService1Id); 423 manager_->CreateTexture(kClient1Id, kService1Id);
368 texture_ref_ = manager_->GetTexture(kClient1Id); 424 texture_ref_ = manager_->GetTexture(kClient1Id);
369 ASSERT_TRUE(texture_ref_.get() != NULL); 425 ASSERT_TRUE(texture_ref_.get() != NULL);
370 } 426 }
371 427
372 virtual void TearDown() { 428 virtual void TearDown() {
373 if (texture_ref_.get()) { 429 if (texture_ref_.get()) {
374 // If it's not in the manager then setting texture_ref_ to NULL will 430 // If it's not in the manager then setting texture_ref_ to NULL will
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
788 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 844 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
789 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); 845 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
790 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 846 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
791 } 847 }
792 848
793 TEST_F(TextureTest, NPOT2DNPOTOK) { 849 TEST_F(TextureTest, NPOT2DNPOTOK) {
794 TestHelper::SetupFeatureInfoInitExpectations( 850 TestHelper::SetupFeatureInfoInitExpectations(
795 gl_.get(), "GL_OES_texture_npot"); 851 gl_.get(), "GL_OES_texture_npot");
796 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 852 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
797 feature_info->Initialize(); 853 feature_info->Initialize();
798 TextureManager manager( 854 TextureManager manager(NULL,
799 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); 855 feature_info.get(),
856 kMaxTextureSize,
857 kMaxCubeMapTextureSize,
858 kUseDefaultTextures);
800 manager.CreateTexture(kClient1Id, kService1Id); 859 manager.CreateTexture(kClient1Id, kService1Id);
801 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 860 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
802 ASSERT_TRUE(texture_ref != NULL); 861 ASSERT_TRUE(texture_ref != NULL);
803 Texture* texture = texture_ref->texture(); 862 Texture* texture = texture_ref->texture();
804 863
805 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 864 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
806 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 865 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
807 // Check Setting level 0 to NPOT 866 // Check Setting level 0 to NPOT
808 manager.SetLevelInfo(texture_ref, 867 manager.SetLevelInfo(texture_ref,
809 GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 868 GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
1076 manager_->RemoveTexture(kClient1Id); 1135 manager_->RemoveTexture(kClient1Id);
1077 EXPECT_TRUE(texture->ValidForTexture( 1136 EXPECT_TRUE(texture->ValidForTexture(
1078 GL_TEXTURE_2D, 1, 0, 0, 4, 5, GL_UNSIGNED_BYTE)); 1137 GL_TEXTURE_2D, 1, 0, 0, 4, 5, GL_UNSIGNED_BYTE));
1079 } 1138 }
1080 1139
1081 TEST_F(TextureTest, FloatNotLinear) { 1140 TEST_F(TextureTest, FloatNotLinear) {
1082 TestHelper::SetupFeatureInfoInitExpectations( 1141 TestHelper::SetupFeatureInfoInitExpectations(
1083 gl_.get(), "GL_OES_texture_float"); 1142 gl_.get(), "GL_OES_texture_float");
1084 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1143 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1085 feature_info->Initialize(); 1144 feature_info->Initialize();
1086 TextureManager manager( 1145 TextureManager manager(NULL,
1087 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); 1146 feature_info.get(),
1147 kMaxTextureSize,
1148 kMaxCubeMapTextureSize,
1149 kUseDefaultTextures);
1088 manager.CreateTexture(kClient1Id, kService1Id); 1150 manager.CreateTexture(kClient1Id, kService1Id);
1089 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1151 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1090 ASSERT_TRUE(texture_ref != NULL); 1152 ASSERT_TRUE(texture_ref != NULL);
1091 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 1153 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1092 Texture* texture = texture_ref->texture(); 1154 Texture* texture = texture_ref->texture();
1093 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 1155 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
1094 manager.SetLevelInfo(texture_ref, 1156 manager.SetLevelInfo(texture_ref,
1095 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true); 1157 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true);
1096 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 1158 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
1097 TestHelper::SetTexParameteriWithExpectations( 1159 TestHelper::SetTexParameteriWithExpectations(
1098 gl_.get(), error_state_.get(), &manager, 1160 gl_.get(), error_state_.get(), &manager,
1099 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); 1161 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR);
1100 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 1162 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
1101 TestHelper::SetTexParameteriWithExpectations( 1163 TestHelper::SetTexParameteriWithExpectations(
1102 gl_.get(), error_state_.get(), &manager, texture_ref, 1164 gl_.get(), error_state_.get(), &manager, texture_ref,
1103 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR); 1165 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR);
1104 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 1166 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
1105 manager.Destroy(false); 1167 manager.Destroy(false);
1106 } 1168 }
1107 1169
1108 TEST_F(TextureTest, FloatLinear) { 1170 TEST_F(TextureTest, FloatLinear) {
1109 TestHelper::SetupFeatureInfoInitExpectations( 1171 TestHelper::SetupFeatureInfoInitExpectations(
1110 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear"); 1172 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear");
1111 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1173 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1112 feature_info->Initialize(); 1174 feature_info->Initialize();
1113 TextureManager manager( 1175 TextureManager manager(NULL,
1114 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); 1176 feature_info.get(),
1177 kMaxTextureSize,
1178 kMaxCubeMapTextureSize,
1179 kUseDefaultTextures);
1115 manager.CreateTexture(kClient1Id, kService1Id); 1180 manager.CreateTexture(kClient1Id, kService1Id);
1116 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1181 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1117 ASSERT_TRUE(texture_ref != NULL); 1182 ASSERT_TRUE(texture_ref != NULL);
1118 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 1183 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1119 Texture* texture = texture_ref->texture(); 1184 Texture* texture = texture_ref->texture();
1120 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 1185 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
1121 manager.SetLevelInfo(texture_ref, 1186 manager.SetLevelInfo(texture_ref,
1122 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true); 1187 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true);
1123 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 1188 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
1124 manager.Destroy(false); 1189 manager.Destroy(false);
1125 } 1190 }
1126 1191
1127 TEST_F(TextureTest, HalfFloatNotLinear) { 1192 TEST_F(TextureTest, HalfFloatNotLinear) {
1128 TestHelper::SetupFeatureInfoInitExpectations( 1193 TestHelper::SetupFeatureInfoInitExpectations(
1129 gl_.get(), "GL_OES_texture_half_float"); 1194 gl_.get(), "GL_OES_texture_half_float");
1130 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1195 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1131 feature_info->Initialize(); 1196 feature_info->Initialize();
1132 TextureManager manager( 1197 TextureManager manager(NULL,
1133 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); 1198 feature_info.get(),
1199 kMaxTextureSize,
1200 kMaxCubeMapTextureSize,
1201 kUseDefaultTextures);
1134 manager.CreateTexture(kClient1Id, kService1Id); 1202 manager.CreateTexture(kClient1Id, kService1Id);
1135 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1203 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1136 ASSERT_TRUE(texture_ref != NULL); 1204 ASSERT_TRUE(texture_ref != NULL);
1137 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 1205 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1138 Texture* texture = texture_ref->texture(); 1206 Texture* texture = texture_ref->texture();
1139 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 1207 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
1140 manager.SetLevelInfo(texture_ref, 1208 manager.SetLevelInfo(texture_ref,
1141 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true); 1209 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true);
1142 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 1210 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
1143 TestHelper::SetTexParameteriWithExpectations( 1211 TestHelper::SetTexParameteriWithExpectations(
1144 gl_.get(), error_state_.get(), &manager, 1212 gl_.get(), error_state_.get(), &manager,
1145 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); 1213 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR);
1146 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 1214 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
1147 TestHelper::SetTexParameteriWithExpectations( 1215 TestHelper::SetTexParameteriWithExpectations(
1148 gl_.get(), error_state_.get(), &manager, texture_ref, 1216 gl_.get(), error_state_.get(), &manager, texture_ref,
1149 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR); 1217 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR);
1150 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 1218 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
1151 manager.Destroy(false); 1219 manager.Destroy(false);
1152 } 1220 }
1153 1221
1154 TEST_F(TextureTest, HalfFloatLinear) { 1222 TEST_F(TextureTest, HalfFloatLinear) {
1155 TestHelper::SetupFeatureInfoInitExpectations( 1223 TestHelper::SetupFeatureInfoInitExpectations(
1156 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); 1224 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear");
1157 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1225 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1158 feature_info->Initialize(); 1226 feature_info->Initialize();
1159 TextureManager manager( 1227 TextureManager manager(NULL,
1160 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); 1228 feature_info.get(),
1229 kMaxTextureSize,
1230 kMaxCubeMapTextureSize,
1231 kUseDefaultTextures);
1161 manager.CreateTexture(kClient1Id, kService1Id); 1232 manager.CreateTexture(kClient1Id, kService1Id);
1162 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1233 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1163 ASSERT_TRUE(texture_ref != NULL); 1234 ASSERT_TRUE(texture_ref != NULL);
1164 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 1235 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1165 Texture* texture = texture_ref->texture(); 1236 Texture* texture = texture_ref->texture();
1166 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 1237 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
1167 manager.SetLevelInfo(texture_ref, 1238 manager.SetLevelInfo(texture_ref,
1168 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true); 1239 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true);
1169 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 1240 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
1170 manager.Destroy(false); 1241 manager.Destroy(false);
1171 } 1242 }
1172 1243
1173 TEST_F(TextureTest, EGLImageExternal) { 1244 TEST_F(TextureTest, EGLImageExternal) {
1174 TestHelper::SetupFeatureInfoInitExpectations( 1245 TestHelper::SetupFeatureInfoInitExpectations(
1175 gl_.get(), "GL_OES_EGL_image_external"); 1246 gl_.get(), "GL_OES_EGL_image_external");
1176 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1247 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1177 feature_info->Initialize(); 1248 feature_info->Initialize();
1178 TextureManager manager( 1249 TextureManager manager(NULL,
1179 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); 1250 feature_info.get(),
1251 kMaxTextureSize,
1252 kMaxCubeMapTextureSize,
1253 kUseDefaultTextures);
1180 manager.CreateTexture(kClient1Id, kService1Id); 1254 manager.CreateTexture(kClient1Id, kService1Id);
1181 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1255 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1182 ASSERT_TRUE(texture_ref != NULL); 1256 ASSERT_TRUE(texture_ref != NULL);
1183 manager.SetTarget(texture_ref, GL_TEXTURE_EXTERNAL_OES); 1257 manager.SetTarget(texture_ref, GL_TEXTURE_EXTERNAL_OES);
1184 Texture* texture = texture_ref->texture(); 1258 Texture* texture = texture_ref->texture();
1185 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target()); 1259 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target());
1186 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); 1260 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref));
1187 manager.Destroy(false); 1261 manager.Destroy(false);
1188 } 1262 }
1189 1263
1190 TEST_F(TextureTest, DepthTexture) { 1264 TEST_F(TextureTest, DepthTexture) {
1191 TestHelper::SetupFeatureInfoInitExpectations( 1265 TestHelper::SetupFeatureInfoInitExpectations(
1192 gl_.get(), "GL_ANGLE_depth_texture"); 1266 gl_.get(), "GL_ANGLE_depth_texture");
1193 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 1267 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
1194 feature_info->Initialize(); 1268 feature_info->Initialize();
1195 TextureManager manager( 1269 TextureManager manager(NULL,
1196 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); 1270 feature_info.get(),
1271 kMaxTextureSize,
1272 kMaxCubeMapTextureSize,
1273 kUseDefaultTextures);
1197 manager.CreateTexture(kClient1Id, kService1Id); 1274 manager.CreateTexture(kClient1Id, kService1Id);
1198 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 1275 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
1199 ASSERT_TRUE(texture_ref != NULL); 1276 ASSERT_TRUE(texture_ref != NULL);
1200 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 1277 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
1201 manager.SetLevelInfo( 1278 manager.SetLevelInfo(
1202 texture_ref, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4, 1, 0, 1279 texture_ref, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4, 1, 0,
1203 GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, false); 1280 GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, false);
1204 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref)); 1281 EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref));
1205 manager.Destroy(false); 1282 manager.Destroy(false);
1206 } 1283 }
(...skipping 912 matching lines...) Expand 10 before | Expand all | Expand 10 after
2119 2196
2120 private: 2197 private:
2121 virtual ~CountingMemoryTracker() {} 2198 virtual ~CountingMemoryTracker() {}
2122 2199
2123 size_t current_size_[2]; 2200 size_t current_size_[2];
2124 DISALLOW_COPY_AND_ASSIGN(CountingMemoryTracker); 2201 DISALLOW_COPY_AND_ASSIGN(CountingMemoryTracker);
2125 }; 2202 };
2126 2203
2127 class SharedTextureTest : public testing::Test { 2204 class SharedTextureTest : public testing::Test {
2128 public: 2205 public:
2129 SharedTextureTest() 2206 static const bool kUseDefaultTextures = false;
2130 : feature_info_(new FeatureInfo()) { 2207
2131 } 2208 SharedTextureTest() : feature_info_(new FeatureInfo()) {}
2132 2209
2133 virtual ~SharedTextureTest() { 2210 virtual ~SharedTextureTest() {
2134 } 2211 }
2135 2212
2136 virtual void SetUp() { 2213 virtual void SetUp() {
2137 gl_.reset(new ::gfx::MockGLInterface()); 2214 gl_.reset(new ::gfx::MockGLInterface());
2138 ::gfx::MockGLInterface::SetGLInterface(gl_.get()); 2215 ::gfx::MockGLInterface::SetGLInterface(gl_.get());
2139 2216
2140 memory_tracker1_ = new CountingMemoryTracker; 2217 memory_tracker1_ = new CountingMemoryTracker;
2141 texture_manager1_.reset( 2218 texture_manager1_.reset(
2142 new TextureManager(memory_tracker1_.get(), 2219 new TextureManager(memory_tracker1_.get(),
2143 feature_info_.get(), 2220 feature_info_.get(),
2144 TextureManagerTest::kMaxTextureSize, 2221 TextureManagerTest::kMaxTextureSize,
2145 TextureManagerTest::kMaxCubeMapTextureSize)); 2222 TextureManagerTest::kMaxCubeMapTextureSize,
2223 kUseDefaultTextures));
2146 memory_tracker2_ = new CountingMemoryTracker; 2224 memory_tracker2_ = new CountingMemoryTracker;
2147 texture_manager2_.reset( 2225 texture_manager2_.reset(
2148 new TextureManager(memory_tracker2_.get(), 2226 new TextureManager(memory_tracker2_.get(),
2149 feature_info_.get(), 2227 feature_info_.get(),
2150 TextureManagerTest::kMaxTextureSize, 2228 TextureManagerTest::kMaxTextureSize,
2151 TextureManagerTest::kMaxCubeMapTextureSize)); 2229 TextureManagerTest::kMaxCubeMapTextureSize,
2152 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), ""); 2230 kUseDefaultTextures));
2231 TestHelper::SetupTextureManagerInitExpectations(
2232 gl_.get(), "", kUseDefaultTextures);
2153 texture_manager1_->Initialize(); 2233 texture_manager1_->Initialize();
2154 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), ""); 2234 TestHelper::SetupTextureManagerInitExpectations(
2235 gl_.get(), "", kUseDefaultTextures);
2155 texture_manager2_->Initialize(); 2236 texture_manager2_->Initialize();
2156 } 2237 }
2157 2238
2158 virtual void TearDown() { 2239 virtual void TearDown() {
2159 texture_manager2_->Destroy(false); 2240 texture_manager2_->Destroy(false);
2160 texture_manager2_.reset(); 2241 texture_manager2_.reset();
2161 texture_manager1_->Destroy(false); 2242 texture_manager1_->Destroy(false);
2162 texture_manager1_.reset(); 2243 texture_manager1_.reset();
2163 ::gfx::MockGLInterface::SetGLInterface(NULL); 2244 ::gfx::MockGLInterface::SetGLInterface(NULL);
2164 gl_.reset(); 2245 gl_.reset();
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
2438 2519
2439 EXPECT_CALL(*gl_, DeleteTextures(1, _)) 2520 EXPECT_CALL(*gl_, DeleteTextures(1, _))
2440 .Times(1) 2521 .Times(1)
2441 .RetiresOnSaturation(); 2522 .RetiresOnSaturation();
2442 texture_manager1_->RemoveTexture(10); 2523 texture_manager1_->RemoveTexture(10);
2443 texture_manager2_->RemoveTexture(20); 2524 texture_manager2_->RemoveTexture(20);
2444 } 2525 }
2445 2526
2446 } // namespace gles2 2527 } // namespace gles2
2447 } // namespace gpu 2528 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/texture_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698