diff options
author | sabercrombie@chromium.org <sabercrombie@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-23 22:19:18 +0000 |
---|---|---|
committer | sabercrombie@chromium.org <sabercrombie@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-23 22:19:18 +0000 |
commit | 0c144c40b7850bc4c4c3f2bd61971e7c49e1cde4 (patch) | |
tree | 794f24ed10ea7cac357300f15603a0c84a237e19 /gpu | |
parent | 496d99f631daf5456c01fb5d01d486008c9b8a57 (diff) | |
download | chromium_src-0c144c40b7850bc4c4c3f2bd61971e7c49e1cde4.zip chromium_src-0c144c40b7850bc4c4c3f2bd61971e7c49e1cde4.tar.gz chromium_src-0c144c40b7850bc4c4c3f2bd61971e7c49e1cde4.tar.bz2 |
A mesa update added GL_ARB_get_program_binary to the extension string. This enabled the program cache, exposing a problem with attribute bindings.
Mesa doesn't actually implement the extension, which wasn't a problem in itself. However, it meant Program::Link would always hit the cache lookup failure case.
In this scenario we were running ExecuteBindAttribLocationCalls before translation/compilation, when we need mapped attribute names generated during translation for this to operate correctly.
The result was incorrect attribute bindings leading to incorrect rendering.
BUG=197027
TEST=Modified WebGl Conformance gl-clear now passes on Lumpy. gpu_unittests passes.
Review URL: https://chromiumcodereview.appspot.com/13800012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@195914 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r-- | gpu/command_buffer/service/program_manager.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gpu/command_buffer/service/program_manager.cc b/gpu/command_buffer/service/program_manager.cc index a692712..0fecd0a 100644 --- a/gpu/command_buffer/service/program_manager.cc +++ b/gpu/command_buffer/service/program_manager.cc @@ -545,7 +545,6 @@ bool Program::Link(ShaderManager* manager, set_log_info("glBindAttribLocation() conflicts"); return false; } - ExecuteBindAttribLocationCalls(); TimeTicks before_time = TimeTicks::HighResNow(); bool link = true; @@ -589,6 +588,7 @@ bool Program::Link(ShaderManager* manager, } if (link) { + ExecuteBindAttribLocationCalls(); before_time = TimeTicks::HighResNow(); if (cache && gfx::g_driver_gl.ext.b_GL_ARB_get_program_binary) { glProgramParameteri(service_id(), |