Index: gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc |
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc |
index ceda69078255f13c443835c1b9195036511ac5a0..0fb5d5fcd261f777d86d964491b270307f958ffe 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc |
@@ -8824,6 +8824,57 @@ TEST_F(GLES2DecoderRestoreStateTest, NonDefaultUnit1) { |
GetDecoder()->RestoreAllTextureUnitBindings(&prev_state); |
} |
+TEST_F(GLES2DecoderManualInitTest, ClearUniformsBeforeFirstProgramUse) { |
+ CommandLine command_line(0, NULL); |
+ command_line.AppendSwitchASCII( |
+ switches::kGpuDriverBugWorkarounds, |
+ base::IntToString(gpu::CLEAR_UNIFORMS_BEFORE_FIRST_PROGRAM_USE)); |
+ InitDecoderWithCommandLine( |
+ "", // extensions |
+ "3.0", // gl version |
+ true, // has alpha |
+ false, // has depth |
+ false, // has stencil |
+ true, // request alpha |
+ false, // request depth |
+ false, // request stencil |
+ true, // bind generates resource |
+ &command_line); |
+ { |
+ static AttribInfo attribs[] = { |
+ { kAttrib1Name, kAttrib1Size, kAttrib1Type, kAttrib1Location, }, |
+ { kAttrib2Name, kAttrib2Size, kAttrib2Type, kAttrib2Location, }, |
+ { kAttrib3Name, kAttrib3Size, kAttrib3Type, kAttrib3Location, }, |
+ }; |
+ static UniformInfo uniforms[] = { |
+ { kUniform1Name, kUniform1Size, kUniform1Type, |
+ kUniform1FakeLocation, kUniform1RealLocation, |
+ kUniform1DesiredLocation }, |
+ { kUniform2Name, kUniform2Size, kUniform2Type, |
+ kUniform2FakeLocation, kUniform2RealLocation, |
+ kUniform2DesiredLocation }, |
+ { kUniform3Name, kUniform3Size, kUniform3Type, |
+ kUniform3FakeLocation, kUniform3RealLocation, |
+ kUniform3DesiredLocation }, |
+ }; |
+ SetupShader(attribs, arraysize(attribs), uniforms, arraysize(uniforms), |
+ client_program_id_, kServiceProgramId, |
+ client_vertex_shader_id_, kServiceVertexShaderId, |
+ client_fragment_shader_id_, kServiceFragmentShaderId); |
+ TestHelper::SetupExpectationsForClearingUniforms( |
+ gl_.get(), uniforms, arraysize(uniforms)); |
+ } |
+ |
+ { |
+ EXPECT_CALL(*gl_, UseProgram(kServiceProgramId)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ cmds::UseProgram cmd; |
+ cmd.Init(client_program_id_); |
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
+ } |
+} |
+ |
// TODO(gman): Complete this test. |
// TEST_F(GLES2DecoderTest, CompressedTexImage2DGLError) { |
// } |