Chromium Code Reviews| Index: gpu/command_buffer/service/test_helper.cc |
| diff --git a/gpu/command_buffer/service/test_helper.cc b/gpu/command_buffer/service/test_helper.cc |
| index c3efa89204d5a794337be84ec63c1a6c9f54683f..3143d3c7c95f9e15a30d9f585c28bbb49c35602b 100644 |
| --- a/gpu/command_buffer/service/test_helper.cc |
| +++ b/gpu/command_buffer/service/test_helper.cc |
| @@ -58,6 +58,10 @@ T ConstructShaderVariable( |
| #ifndef COMPILER_MSVC |
| const GLuint TestHelper::kServiceBlackTexture2dId; |
| const GLuint TestHelper::kServiceDefaultTexture2dId; |
| +const GLuint TestHelper::kServiceBlackTexture3dId; |
| +const GLuint TestHelper::kServiceDefaultTexture3dId; |
| +const GLuint TestHelper::kServiceBlackTexture2dArrayId; |
| +const GLuint TestHelper::kServiceDefaultTexture2dArrayId; |
| const GLuint TestHelper::kServiceBlackTextureCubemapId; |
| const GLuint TestHelper::kServiceDefaultTextureCubemapId; |
| const GLuint TestHelper::kServiceBlackExternalTextureId; |
| @@ -93,10 +97,18 @@ void TestHelper::SetupTextureInitializationExpectations( |
| bool needs_initialization = (target != GL_TEXTURE_EXTERNAL_OES); |
| bool needs_faces = (target == GL_TEXTURE_CUBE_MAP); |
| + bool is_3d_or_2d_array_target = (target == GL_TEXTURE_3D || |
| + target == GL_TEXTURE_2D_ARRAY); |
| static GLuint texture_2d_ids[] = { |
| kServiceBlackTexture2dId, |
| kServiceDefaultTexture2dId }; |
| + static GLuint texture_3d_ids[] = { |
| + kServiceBlackTexture3dId, |
| + kServiceDefaultTexture3dId }; |
| + static GLuint texture_2d_array_ids[] = { |
| + kServiceBlackTexture2dArrayId, |
| + kServiceDefaultTexture2dArrayId }; |
| static GLuint texture_cube_map_ids[] = { |
| kServiceBlackTextureCubemapId, |
| kServiceDefaultTextureCubemapId }; |
| @@ -112,6 +124,12 @@ void TestHelper::SetupTextureInitializationExpectations( |
| case GL_TEXTURE_2D: |
| texture_ids = &texture_2d_ids[0]; |
| break; |
| + case GL_TEXTURE_3D: |
| + texture_ids = &texture_3d_ids[0]; |
| + break; |
| + case GL_TEXTURE_2D_ARRAY: |
| + texture_ids = &texture_2d_array_ids[0]; |
| + break; |
| case GL_TEXTURE_CUBE_MAP: |
| texture_ids = &texture_cube_map_ids[0]; |
| break; |
| @@ -152,10 +170,17 @@ void TestHelper::SetupTextureInitializationExpectations( |
| .RetiresOnSaturation(); |
| } |
| } else { |
| - EXPECT_CALL(*gl, TexImage2D(target, 0, GL_RGBA, 1, 1, 0, GL_RGBA, |
| - GL_UNSIGNED_BYTE, _)) |
| - .Times(1) |
| - .RetiresOnSaturation(); |
| + if (is_3d_or_2d_array_target) { |
| + EXPECT_CALL(*gl, TexImage3D(target, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, |
| + GL_UNSIGNED_BYTE, _)) |
| + .Times(1) |
| + .RetiresOnSaturation(); |
| + } else { |
| + EXPECT_CALL(*gl, TexImage2D(target, 0, GL_RGBA, 1, 1, 0, GL_RGBA, |
| + GL_UNSIGNED_BYTE, _)) |
| + .Times(1) |
| + .RetiresOnSaturation(); |
| + } |
| } |
| } |
| } |
| @@ -166,6 +191,7 @@ void TestHelper::SetupTextureInitializationExpectations( |
| void TestHelper::SetupTextureManagerInitExpectations( |
| ::gfx::MockGLInterface* gl, |
| + bool is_es3_enabled, |
| const char* extensions, |
| bool use_default_textures) { |
| InSequence sequence; |
| @@ -175,6 +201,13 @@ void TestHelper::SetupTextureManagerInitExpectations( |
| SetupTextureInitializationExpectations( |
| gl, GL_TEXTURE_CUBE_MAP, use_default_textures); |
| + if (is_es3_enabled) { |
| + SetupTextureInitializationExpectations( |
| + gl, GL_TEXTURE_3D, use_default_textures); |
| + SetupTextureInitializationExpectations( |
| + gl, GL_TEXTURE_2D_ARRAY, use_default_textures); |
| + } |
| + |
| bool ext_image_external = false; |
| bool arb_texture_rectangle = false; |
| base::CStringTokenizer t(extensions, extensions + strlen(extensions), " "); |
| @@ -211,6 +244,12 @@ void TestHelper::SetupTextureDestructionExpectations( |
| case GL_TEXTURE_2D: |
| texture_id = kServiceDefaultTexture2dId; |
| break; |
| + case GL_TEXTURE_3D: |
| + texture_id = kServiceDefaultTexture3dId; |
| + break; |
| + case GL_TEXTURE_2D_ARRAY: |
| + texture_id = kServiceDefaultTexture2dArrayId; |
| + break; |
| case GL_TEXTURE_CUBE_MAP: |
| texture_id = kServiceDefaultTextureCubemapId; |
| break; |
| @@ -231,12 +270,20 @@ void TestHelper::SetupTextureDestructionExpectations( |
| void TestHelper::SetupTextureManagerDestructionExpectations( |
| ::gfx::MockGLInterface* gl, |
| + bool is_es3_enabled, |
| const char* extensions, |
| bool use_default_textures) { |
| SetupTextureDestructionExpectations(gl, GL_TEXTURE_2D, use_default_textures); |
| SetupTextureDestructionExpectations( |
| gl, GL_TEXTURE_CUBE_MAP, use_default_textures); |
| + if (is_es3_enabled) { |
| + SetupTextureDestructionExpectations( |
| + gl, GL_TEXTURE_3D, use_default_textures); |
| + SetupTextureDestructionExpectations( |
| + gl, GL_TEXTURE_2D_ARRAY,use_default_textures); |
| + } |
| + |
| bool ext_image_external = false; |
| bool arb_texture_rectangle = false; |
| base::CStringTokenizer t(extensions, extensions + strlen(extensions), " "); |
| @@ -260,7 +307,7 @@ void TestHelper::SetupTextureManagerDestructionExpectations( |
| gl, GL_TEXTURE_RECTANGLE_ARB, use_default_textures); |
| } |
| - EXPECT_CALL(*gl, DeleteTextures(4, _)) |
| + EXPECT_CALL(*gl, DeleteTextures(6, _)) |
|
Zhenyao Mo
2015/09/15 18:37:15
This needs to be conditional. If it's ES2, then 4
qiankun
2015/09/17 09:39:27
This tests "glDeleteTextures(arraysize(black_textu
Zhenyao Mo
2015/09/17 14:47:05
I see. You can use kNumDefaultTextures here inste
qiankun
2015/09/17 15:18:31
Done.
|
| .Times(1) |
| .RetiresOnSaturation(); |
| } |
| @@ -343,7 +390,8 @@ void TestHelper::SetupContextGroupInitExpectations( |
| } |
| bool use_default_textures = bind_generates_resource; |
| - SetupTextureManagerInitExpectations(gl, extensions, use_default_textures); |
| + SetupTextureManagerInitExpectations( |
| + gl, false, extensions, use_default_textures); |
| } |
| void TestHelper::SetupFeatureInfoInitExpectations( |