summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authorsabercrombie@chromium.org <sabercrombie@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-23 22:19:18 +0000
committersabercrombie@chromium.org <sabercrombie@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-23 22:19:18 +0000
commit0c144c40b7850bc4c4c3f2bd61971e7c49e1cde4 (patch)
tree794f24ed10ea7cac357300f15603a0c84a237e19 /gpu
parent496d99f631daf5456c01fb5d01d486008c9b8a57 (diff)
downloadchromium_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.cc2
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(),