Index: gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc |
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc |
index c0b1e8c4acd375a92a2ee3e2e4f106871bf02559..40e98d4e097a9d44e13dd3d9eb4daa8f97c70aad 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc |
@@ -1255,6 +1255,86 @@ void GLES2DecoderTestBase::SetupShader( |
link_cmd.Init(program_client_id); |
EXPECT_EQ(error::kNoError, ExecuteCmd(link_cmd)); |
+ |
+ // Assume the next command will be UseProgram. |
+ SetupExpectationsForClearingUniforms(uniforms, num_uniforms); |
+} |
+ |
+void GLES2DecoderTestBase::SetupExpectationsForClearingUniforms( |
+ UniformInfo* uniforms, size_t num_uniforms) { |
+ for (size_t ii = 0; ii < num_uniforms; ++ii) { |
+ const UniformInfo& info = uniforms[ii]; |
+ switch (info.type) { |
+ case GL_FLOAT: |
+ EXPECT_CALL(*gl_, Uniform1fv(info.real_location, info.size, _)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ break; |
+ case GL_FLOAT_VEC2: |
+ EXPECT_CALL(*gl_, Uniform2fv(info.real_location, info.size, _)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ break; |
+ case GL_FLOAT_VEC3: |
+ EXPECT_CALL(*gl_, Uniform3fv(info.real_location, info.size, _)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ break; |
+ case GL_FLOAT_VEC4: |
+ EXPECT_CALL(*gl_, Uniform4fv(info.real_location, info.size, _)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ break; |
+ case GL_INT: |
+ case GL_BOOL: |
+ case GL_SAMPLER_2D: |
+ case GL_SAMPLER_CUBE: |
+ case GL_SAMPLER_EXTERNAL_OES: |
+ EXPECT_CALL(*gl_, Uniform1iv(info.real_location, info.size, _)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ break; |
+ case GL_INT_VEC2: |
+ case GL_BOOL_VEC2: |
+ EXPECT_CALL(*gl_, Uniform2iv(info.real_location, info.size, _)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ break; |
+ case GL_INT_VEC3: |
+ case GL_BOOL_VEC3: |
+ EXPECT_CALL(*gl_, Uniform3iv(info.real_location, info.size, _)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ break; |
+ case GL_INT_VEC4: |
+ case GL_BOOL_VEC4: |
+ EXPECT_CALL(*gl_, Uniform4iv(info.real_location, info.size, _)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ break; |
+ case GL_FLOAT_MAT2: |
+ EXPECT_CALL(*gl_, UniformMatrix2fv( |
+ info.real_location, info.size, false, _)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ break; |
+ case GL_FLOAT_MAT3: |
+ EXPECT_CALL(*gl_, UniformMatrix3fv( |
+ info.real_location, info.size, false, _)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ break; |
+ case GL_FLOAT_MAT4: |
+ EXPECT_CALL(*gl_, UniformMatrix4fv( |
+ info.real_location, info.size, false, _)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ break; |
+ default: |
+ NOTREACHED(); |
+ break; |
+ } |
+ } |
} |
void GLES2DecoderTestBase::DoEnableVertexAttribArray(GLint index) { |