Hookup clear_uniforms_before_first_program_use workaround with implementation.
Right now it's hardwired in command buffer.
BUG=340516
TEST=gpu_unittests, webgl conformance tests
[email protected], [email protected]
Review URL: https://codereview.chromium.org/147593011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249460 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index f913c48..7b9bbc6 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -5417,13 +5417,12 @@
if (program->Link(shader_manager(),
vertex_translator,
fragment_translator,
- feature_info_.get(),
shader_cache_callback_)) {
if (program == state_.current_program.get()) {
- if (workarounds().use_current_program_after_successful_link) {
+ if (workarounds().use_current_program_after_successful_link)
glUseProgram(program->service_id());
- }
- program_manager()->ClearUniforms(program);
+ if (workarounds().clear_uniforms_before_first_program_use)
+ program_manager()->ClearUniforms(program);
}
}
};
@@ -5889,6 +5888,8 @@
glUseProgram(service_id);
if (state_.current_program.get()) {
program_manager()->UseProgram(state_.current_program.get());
+ if (workarounds().clear_uniforms_before_first_program_use)
+ program_manager()->ClearUniforms(program);
}
}
@@ -6616,7 +6617,11 @@
vertex_translator_.get() : fragment_translator_.get();
}
- program_manager()->DoCompileShader(shader, translator, feature_info_.get());
+ program_manager()->DoCompileShader(
+ shader,
+ translator,
+ feature_info_->feature_flags().angle_translated_shader_source ?
+ ProgramManager::kANGLE : ProgramManager::kGL);
};
void GLES2DecoderImpl::DoGetShaderiv(