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

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

Issue 957403004: Compile shader upon deletion if attached. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2311
Patch Set: Created 5 years, 9 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/shader_manager.h" 5 #include "gpu/command_buffer/service/shader_manager.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "gpu/command_buffer/service/gpu_service_test.h" 8 #include "gpu/command_buffer/service/gpu_service_test.h"
9 #include "gpu/command_buffer/service/mocks.h" 9 #include "gpu/command_buffer/service/mocks.h"
10 #include "gpu/command_buffer/service/test_helper.h" 10 #include "gpu/command_buffer/service/test_helper.h"
(...skipping 25 matching lines...) Expand all
36 // Check we can create shader. 36 // Check we can create shader.
37 Shader* info0 = manager_.CreateShader( 37 Shader* info0 = manager_.CreateShader(
38 kClient1Id, kService1Id, kShader1Type); 38 kClient1Id, kService1Id, kShader1Type);
39 // Check shader got created. 39 // Check shader got created.
40 ASSERT_TRUE(info0 != NULL); 40 ASSERT_TRUE(info0 != NULL);
41 Shader* shader1 = manager_.GetShader(kClient1Id); 41 Shader* shader1 = manager_.GetShader(kClient1Id);
42 ASSERT_EQ(info0, shader1); 42 ASSERT_EQ(info0, shader1);
43 // Check we get nothing for a non-existent shader. 43 // Check we get nothing for a non-existent shader.
44 EXPECT_TRUE(manager_.GetShader(kClient2Id) == NULL); 44 EXPECT_TRUE(manager_.GetShader(kClient2Id) == NULL);
45 // Check we can't get the shader after we remove it. 45 // Check we can't get the shader after we remove it.
46 manager_.MarkAsDeleted(shader1); 46 EXPECT_CALL(*gl_, DeleteShader(kService1Id))
47 .Times(1)
48 .RetiresOnSaturation();
49 manager_.Delete(shader1);
47 EXPECT_TRUE(manager_.GetShader(kClient1Id) == NULL); 50 EXPECT_TRUE(manager_.GetShader(kClient1Id) == NULL);
48 } 51 }
49 52
50 TEST_F(ShaderManagerTest, Destroy) { 53 TEST_F(ShaderManagerTest, Destroy) {
51 const GLuint kClient1Id = 1; 54 const GLuint kClient1Id = 1;
52 const GLuint kService1Id = 11; 55 const GLuint kService1Id = 11;
53 const GLenum kShader1Type = GL_VERTEX_SHADER; 56 const GLenum kShader1Type = GL_VERTEX_SHADER;
54 // Check we can create shader. 57 // Check we can create shader.
55 Shader* shader1 = manager_.CreateShader( 58 Shader* shader1 = manager_.CreateShader(
56 kClient1Id, kService1Id, kShader1Type); 59 kClient1Id, kService1Id, kShader1Type);
(...skipping 15 matching lines...) Expand all
72 const GLuint kService2Id = 12; 75 const GLuint kService2Id = 12;
73 const GLenum kShaderType = GL_VERTEX_SHADER; 76 const GLenum kShaderType = GL_VERTEX_SHADER;
74 // Check we can create shader. 77 // Check we can create shader.
75 scoped_refptr<Shader> shader1( 78 scoped_refptr<Shader> shader1(
76 manager_.CreateShader(kClient1Id, kService1Id, kShaderType)); 79 manager_.CreateShader(kClient1Id, kService1Id, kShaderType));
77 scoped_refptr<Shader> shader2( 80 scoped_refptr<Shader> shader2(
78 manager_.CreateShader(kClient2Id, kService2Id, kShaderType)); 81 manager_.CreateShader(kClient2Id, kService2Id, kShaderType));
79 ASSERT_TRUE(shader1.get()); 82 ASSERT_TRUE(shader1.get());
80 ASSERT_TRUE(shader2.get()); 83 ASSERT_TRUE(shader2.get());
81 manager_.UseShader(shader1.get()); 84 manager_.UseShader(shader1.get());
82 manager_.MarkAsDeleted(shader1.get()); 85 EXPECT_CALL(*gl_, DeleteShader(kService1Id))
83 manager_.MarkAsDeleted(shader2.get()); 86 .Times(1)
87 .RetiresOnSaturation();
88 manager_.Delete(shader1.get());
89 EXPECT_CALL(*gl_, DeleteShader(kService2Id))
90 .Times(1)
91 .RetiresOnSaturation();
92 manager_.Delete(shader2.get());
84 EXPECT_TRUE(manager_.IsOwned(shader1.get())); 93 EXPECT_TRUE(manager_.IsOwned(shader1.get()));
85 EXPECT_FALSE(manager_.IsOwned(shader2.get())); 94 EXPECT_FALSE(manager_.IsOwned(shader2.get()));
86 } 95 }
87 96
88 TEST_F(ShaderManagerTest, DoCompile) { 97 TEST_F(ShaderManagerTest, DoCompile) {
89 const GLuint kClient1Id = 1; 98 const GLuint kClient1Id = 1;
90 const GLuint kService1Id = 11; 99 const GLuint kService1Id = 11;
91 const GLenum kShader1Type = GL_VERTEX_SHADER; 100 const GLenum kShader1Type = GL_VERTEX_SHADER;
92 const char* kClient1Source = "hello world"; 101 const char* kClient1Source = "hello world";
93 const GLenum kAttrib1Type = GL_FLOAT_VEC2; 102 const GLenum kAttrib1Type = GL_FLOAT_VEC2;
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 Shader* shader1 = manager_.CreateShader( 251 Shader* shader1 = manager_.CreateShader(
243 kClient1Id, kService1Id, kShader1Type); 252 kClient1Id, kService1Id, kShader1Type);
244 // Check shader got created. 253 // Check shader got created.
245 ASSERT_TRUE(shader1 != NULL); 254 ASSERT_TRUE(shader1 != NULL);
246 EXPECT_FALSE(shader1->InUse()); 255 EXPECT_FALSE(shader1->InUse());
247 EXPECT_FALSE(shader1->IsDeleted()); 256 EXPECT_FALSE(shader1->IsDeleted());
248 manager_.UseShader(shader1); 257 manager_.UseShader(shader1);
249 EXPECT_TRUE(shader1->InUse()); 258 EXPECT_TRUE(shader1->InUse());
250 manager_.UseShader(shader1); 259 manager_.UseShader(shader1);
251 EXPECT_TRUE(shader1->InUse()); 260 EXPECT_TRUE(shader1->InUse());
252 manager_.MarkAsDeleted(shader1); 261 EXPECT_CALL(*gl_, DeleteShader(kService1Id))
262 .Times(1)
263 .RetiresOnSaturation();
264 manager_.Delete(shader1);
253 EXPECT_TRUE(shader1->IsDeleted()); 265 EXPECT_TRUE(shader1->IsDeleted());
254 Shader* shader2 = manager_.GetShader(kClient1Id); 266 Shader* shader2 = manager_.GetShader(kClient1Id);
255 EXPECT_EQ(shader1, shader2); 267 EXPECT_EQ(shader1, shader2);
256 manager_.UnuseShader(shader1); 268 manager_.UnuseShader(shader1);
257 EXPECT_TRUE(shader1->InUse()); 269 EXPECT_TRUE(shader1->InUse());
258 manager_.UnuseShader(shader1); // this should delete the info. 270 manager_.UnuseShader(shader1); // this should delete the info.
259 shader2 = manager_.GetShader(kClient1Id); 271 shader2 = manager_.GetShader(kClient1Id);
260 EXPECT_TRUE(shader2 == NULL); 272 EXPECT_TRUE(shader2 == NULL);
261 273
262 shader1 = manager_.CreateShader(kClient1Id, kService1Id, kShader1Type); 274 shader1 = manager_.CreateShader(kClient1Id, kService1Id, kShader1Type);
263 ASSERT_TRUE(shader1 != NULL); 275 ASSERT_TRUE(shader1 != NULL);
264 EXPECT_FALSE(shader1->InUse()); 276 EXPECT_FALSE(shader1->InUse());
265 manager_.UseShader(shader1); 277 manager_.UseShader(shader1);
266 EXPECT_TRUE(shader1->InUse()); 278 EXPECT_TRUE(shader1->InUse());
267 manager_.UseShader(shader1); 279 manager_.UseShader(shader1);
268 EXPECT_TRUE(shader1->InUse()); 280 EXPECT_TRUE(shader1->InUse());
269 manager_.UnuseShader(shader1); 281 manager_.UnuseShader(shader1);
270 EXPECT_TRUE(shader1->InUse()); 282 EXPECT_TRUE(shader1->InUse());
271 manager_.UnuseShader(shader1); 283 manager_.UnuseShader(shader1);
272 EXPECT_FALSE(shader1->InUse()); 284 EXPECT_FALSE(shader1->InUse());
273 shader2 = manager_.GetShader(kClient1Id); 285 shader2 = manager_.GetShader(kClient1Id);
274 EXPECT_EQ(shader1, shader2); 286 EXPECT_EQ(shader1, shader2);
275 manager_.MarkAsDeleted(shader1); // this should delete the shader. 287 EXPECT_CALL(*gl_, DeleteShader(kService1Id))
288 .Times(1)
289 .RetiresOnSaturation();
290 manager_.Delete(shader1); // this should delete the shader.
276 shader2 = manager_.GetShader(kClient1Id); 291 shader2 = manager_.GetShader(kClient1Id);
277 EXPECT_TRUE(shader2 == NULL); 292 EXPECT_TRUE(shader2 == NULL);
278 } 293 }
279 294
280 } // namespace gles2 295 } // namespace gles2
281 } // namespace gpu 296 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/shader_manager.cc ('k') | gpu/command_buffer/tests/gl_program_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698