| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/test_helper.h" | 5 #include "gpu/command_buffer/service/test_helper.h" |
| 6 | 6 |
| 7 #include "base/string_tokenizer.h" |
| 7 #include "gpu/command_buffer/common/gl_mock.h" | 8 #include "gpu/command_buffer/common/gl_mock.h" |
| 8 #include "gpu/command_buffer/common/types.h" | 9 #include "gpu/command_buffer/common/types.h" |
| 10 #include "gpu/command_buffer/service/gl_utils.h" |
| 9 #include "gpu/GLES2/gles2_command_buffer.h" | 11 #include "gpu/GLES2/gles2_command_buffer.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 11 | 13 |
| 14 #include <string.h> |
| 15 |
| 12 using ::testing::_; | 16 using ::testing::_; |
| 13 using ::testing::DoAll; | 17 using ::testing::DoAll; |
| 14 using ::testing::InSequence; | 18 using ::testing::InSequence; |
| 15 using ::testing::MatcherCast; | 19 using ::testing::MatcherCast; |
| 16 using ::testing::Pointee; | 20 using ::testing::Pointee; |
| 17 using ::testing::Return; | 21 using ::testing::Return; |
| 18 using ::testing::SetArrayArgument; | 22 using ::testing::SetArrayArgument; |
| 19 using ::testing::SetArgumentPointee; | 23 using ::testing::SetArgumentPointee; |
| 20 using ::testing::StrEq; | 24 using ::testing::StrEq; |
| 21 using ::testing::StrictMock; | 25 using ::testing::StrictMock; |
| 22 | 26 |
| 23 namespace gpu { | 27 namespace gpu { |
| 24 namespace gles2 { | 28 namespace gles2 { |
| 25 | 29 |
| 26 // GCC requires these declarations, but MSVC requires they not be present | 30 // GCC requires these declarations, but MSVC requires they not be present |
| 27 #ifndef COMPILER_MSVC | 31 #ifndef COMPILER_MSVC |
| 28 const GLuint TestHelper::kServiceBlackTexture2dId; | 32 const GLuint TestHelper::kServiceBlackTexture2dId; |
| 29 const GLuint TestHelper::kServiceBlackTextureCubemapId; | 33 const GLuint TestHelper::kServiceBlackTextureCubemapId; |
| 30 const GLuint TestHelper::kServiceDefaultTexture2dId; | 34 const GLuint TestHelper::kServiceDefaultTexture2dId; |
| 31 const GLuint TestHelper::kServiceDefaultTextureCubemapId; | 35 const GLuint TestHelper::kServiceDefaultTextureCubemapId; |
| 36 const GLuint TestHelper::kServiceDefaultExternalTextureId; |
| 37 const GLuint TestHelper::kServiceBlackExternalTextureId; |
| 32 | 38 |
| 33 const GLint TestHelper::kMaxRenderbufferSize; | 39 const GLint TestHelper::kMaxRenderbufferSize; |
| 34 const GLint TestHelper::kMaxTextureSize; | 40 const GLint TestHelper::kMaxTextureSize; |
| 35 const GLint TestHelper::kMaxCubeMapTextureSize; | 41 const GLint TestHelper::kMaxCubeMapTextureSize; |
| 36 const GLint TestHelper::kNumVertexAttribs; | 42 const GLint TestHelper::kNumVertexAttribs; |
| 37 const GLint TestHelper::kNumTextureUnits; | 43 const GLint TestHelper::kNumTextureUnits; |
| 38 const GLint TestHelper::kMaxTextureImageUnits; | 44 const GLint TestHelper::kMaxTextureImageUnits; |
| 39 const GLint TestHelper::kMaxVertexTextureImageUnits; | 45 const GLint TestHelper::kMaxVertexTextureImageUnits; |
| 40 const GLint TestHelper::kMaxFragmentUniformVectors; | 46 const GLint TestHelper::kMaxFragmentUniformVectors; |
| 41 const GLint TestHelper::kMaxFragmentUniformComponents; | 47 const GLint TestHelper::kMaxFragmentUniformComponents; |
| 42 const GLint TestHelper::kMaxVaryingVectors; | 48 const GLint TestHelper::kMaxVaryingVectors; |
| 43 const GLint TestHelper::kMaxVaryingFloats; | 49 const GLint TestHelper::kMaxVaryingFloats; |
| 44 const GLint TestHelper::kMaxVertexUniformVectors; | 50 const GLint TestHelper::kMaxVertexUniformVectors; |
| 45 const GLint TestHelper::kMaxVertexUniformComponents; | 51 const GLint TestHelper::kMaxVertexUniformComponents; |
| 46 #endif | 52 #endif |
| 47 | 53 |
| 48 void TestHelper::SetupTextureManagerInitExpectations( | 54 void TestHelper::SetupTextureManagerInitExpectations( |
| 49 ::gfx::MockGLInterface* gl) { | 55 ::gfx::MockGLInterface* gl, |
| 56 const char* extensions) { |
| 50 static GLuint texture_ids[] = { | 57 static GLuint texture_ids[] = { |
| 51 kServiceBlackTexture2dId, | 58 kServiceBlackTexture2dId, |
| 52 kServiceDefaultTexture2dId, | 59 kServiceDefaultTexture2dId, |
| 53 kServiceBlackTextureCubemapId, | 60 kServiceBlackTextureCubemapId, |
| 54 kServiceDefaultTextureCubemapId, | 61 kServiceDefaultTextureCubemapId, |
| 55 }; | 62 }; |
| 56 EXPECT_CALL(*gl, GenTextures(arraysize(texture_ids), _)) | 63 EXPECT_CALL(*gl, GenTextures(arraysize(texture_ids), _)) |
| 57 .WillOnce(SetArrayArgument<1>(texture_ids, | 64 .WillOnce(SetArrayArgument<1>(texture_ids, |
| 58 texture_ids + arraysize(texture_ids))) | 65 texture_ids + arraysize(texture_ids))) |
| 59 .RetiresOnSaturation(); | 66 .RetiresOnSaturation(); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 82 .Times(1) | 89 .Times(1) |
| 83 .RetiresOnSaturation(); | 90 .RetiresOnSaturation(); |
| 84 } | 91 } |
| 85 } | 92 } |
| 86 EXPECT_CALL(*gl, BindTexture(GL_TEXTURE_2D, 0)) | 93 EXPECT_CALL(*gl, BindTexture(GL_TEXTURE_2D, 0)) |
| 87 .Times(1) | 94 .Times(1) |
| 88 .RetiresOnSaturation(); | 95 .RetiresOnSaturation(); |
| 89 EXPECT_CALL(*gl, BindTexture(GL_TEXTURE_CUBE_MAP, 0)) | 96 EXPECT_CALL(*gl, BindTexture(GL_TEXTURE_CUBE_MAP, 0)) |
| 90 .Times(1) | 97 .Times(1) |
| 91 .RetiresOnSaturation(); | 98 .RetiresOnSaturation(); |
| 99 |
| 100 bool ext_image_external = false; |
| 101 CStringTokenizer t(extensions, extensions + strlen(extensions), " "); |
| 102 while (t.GetNext()) { |
| 103 if (t.token() == "GL_OES_EGL_image_external") { |
| 104 ext_image_external = true; |
| 105 break; |
| 106 } |
| 107 } |
| 108 |
| 109 if (ext_image_external) { |
| 110 static GLuint external_texture_ids[] = { |
| 111 kServiceDefaultExternalTextureId, |
| 112 kServiceBlackExternalTextureId, |
| 113 }; |
| 114 EXPECT_CALL(*gl, GenTextures(arraysize(external_texture_ids), _)) |
| 115 .WillOnce(SetArrayArgument<1>( |
| 116 external_texture_ids, |
| 117 external_texture_ids + arraysize(external_texture_ids))) |
| 118 .RetiresOnSaturation(); |
| 119 EXPECT_CALL(*gl, BindTexture(GL_TEXTURE_EXTERNAL_OES, 0)) |
| 120 .Times(1) |
| 121 .RetiresOnSaturation(); |
| 122 } |
| 92 } | 123 } |
| 93 | 124 |
| 94 void TestHelper::SetupContextGroupInitExpectations( | 125 void TestHelper::SetupContextGroupInitExpectations( |
| 95 ::gfx::MockGLInterface* gl, | 126 ::gfx::MockGLInterface* gl, |
| 96 const DisallowedExtensions& disallowed_extensions, | 127 const DisallowedExtensions& disallowed_extensions, |
| 97 const char* extensions) { | 128 const char* extensions) { |
| 98 InSequence sequence; | 129 InSequence sequence; |
| 99 | 130 |
| 100 SetupFeatureInfoInitExpectations(gl, extensions); | 131 SetupFeatureInfoInitExpectations(gl, extensions); |
| 101 | 132 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 124 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, _)) | 155 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, _)) |
| 125 .WillOnce(SetArgumentPointee<1>(kMaxFragmentUniformComponents)) | 156 .WillOnce(SetArgumentPointee<1>(kMaxFragmentUniformComponents)) |
| 126 .RetiresOnSaturation(); | 157 .RetiresOnSaturation(); |
| 127 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VARYING_FLOATS, _)) | 158 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VARYING_FLOATS, _)) |
| 128 .WillOnce(SetArgumentPointee<1>(kMaxVaryingFloats)) | 159 .WillOnce(SetArgumentPointee<1>(kMaxVaryingFloats)) |
| 129 .RetiresOnSaturation(); | 160 .RetiresOnSaturation(); |
| 130 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS, _)) | 161 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS, _)) |
| 131 .WillOnce(SetArgumentPointee<1>(kMaxVertexUniformComponents)) | 162 .WillOnce(SetArgumentPointee<1>(kMaxVertexUniformComponents)) |
| 132 .RetiresOnSaturation(); | 163 .RetiresOnSaturation(); |
| 133 | 164 |
| 134 SetupTextureManagerInitExpectations(gl); | 165 SetupTextureManagerInitExpectations(gl, extensions); |
| 135 } | 166 } |
| 136 | 167 |
| 137 void TestHelper::SetupFeatureInfoInitExpectations( | 168 void TestHelper::SetupFeatureInfoInitExpectations( |
| 138 ::gfx::MockGLInterface* gl, const char* extensions) { | 169 ::gfx::MockGLInterface* gl, const char* extensions) { |
| 139 InSequence sequence; | 170 InSequence sequence; |
| 140 | 171 |
| 141 EXPECT_CALL(*gl, GetString(GL_EXTENSIONS)) | 172 EXPECT_CALL(*gl, GetString(GL_EXTENSIONS)) |
| 142 .WillOnce(Return(reinterpret_cast<const uint8*>(extensions))) | 173 .WillOnce(Return(reinterpret_cast<const uint8*>(extensions))) |
| 143 .RetiresOnSaturation(); | 174 .RetiresOnSaturation(); |
| 144 } | 175 } |
| 145 | 176 |
| 146 } // namespace gles2 | 177 } // namespace gles2 |
| 147 } // namespace gpu | 178 } // namespace gpu |
| 148 | 179 |
| OLD | NEW |