src/compiler/MapLongVariableNames.cpp


Log

Author Commit Date CI Message
zmo@google.com 571fe348 2012-04-17T17:40:29 Don't append '_' to the end of prefix in long name mapping if the original name starts with '_' Otherwise we will have '__' which is illegal. Review URL: https://codereview.appspot.com/5978058 git-svn-id: https://angleproject.googlecode.com/svn/trunk@1044 736b8ea6-26fd-11df-bfd4-992fa37f6226
zmo@google.com b9f64aae 2012-01-20T00:35:15 Use a global ref-counted singleton for long name map. This makes sure the same varying/uniform variables maps to the unique name in vertex/fragment shader. BUG= TEST=webgl conformance tests Review URL: https://codereview.appspot.com/5556065 git-svn-id: https://angleproject.googlecode.com/svn/trunk@950 736b8ea6-26fd-11df-bfd4-992fa37f6226
zmo@google.com 9996b8e6 2012-01-19T01:43:55 Rollback r942. MapLongVariableNames inherits from TIntermTraverser, and TIntermTraverser uses ANGLE's memory allocator, thus the memory is released per compilation. Our design is for MapLongVariableNames to be a singleton across all compilations, thus, this is not working. BUG= TEST= TBR=kbr Review URL: https://codereview.appspot.com/5556053 git-svn-id: https://angleproject.googlecode.com/svn/trunk@949 736b8ea6-26fd-11df-bfd4-992fa37f6226
zmo@google.com 4625d27b 2012-01-13T00:29:21 Long name mapping needs to be consistent between vertex/fragment shaders. For example: varying variables, uniforms. This CL makes MapLongVariableNames a ref-counted singleton and therefore, the map is shared by all shaders. Also, function/variable names changes from Varying to Global because uniforms also need to be consistent, not just varying variables. ANGLEBUG=279 TEST=webgl conformance tests, especially invalid-passed-params.html and glsl-long-variable-names.html Review URL: http://codereview.appspot.com/5539046 git-svn-id: https://angleproject.googlecode.com/svn/trunk@942 736b8ea6-26fd-11df-bfd4-992fa37f6226
zmo@google.com 89c9813b 2012-01-06T02:17:03 Fix a bug in long variable name mapping. Originally we only match varying variables in vertex/fragment shaders. However, we should also match uniform names. For example, if a uniform variable name is used in both vertex and fragment shader, and after mapping the names are different, then the name mapping table is no longer 1:1. BUG=106638 (crbug) TEST=http://seanseefried.com/chrome-bug/simple-broken.html shows a magenta square Review URL: http://codereview.appspot.com/5520051 git-svn-id: https://angleproject.googlecode.com/svn/trunk@939 736b8ea6-26fd-11df-bfd4-992fa37f6226
kbr@chromium.org 22152117 2011-10-26T01:18:28 Limit copied uniform and vertex attribute names to the implicit size of the buffers passed in. Increase the size of the buffer the client will allocate for mapped names to be equal to the maximum token length. BUG=http://code.google.com/p/angleproject/issues/detail?id=234 TEST=WebGL conformance test to be checked in soon Review URL: http://codereview.appspot.com/5306063 git-svn-id: https://angleproject.googlecode.com/svn/trunk@804 736b8ea6-26fd-11df-bfd4-992fa37f6226
zmo@google.com 46974d29 2011-09-27T21:26:19 Fix memory corruption in ANGLE shader translator. The bug is that within each compilation cycle, all the memory allocated through T* types are freed to be reused. So if certain information is meant to outlive the cycle, it should use the std type instead of the T* type: 1) emulated function vector 2) mapped long names map BUG=none TEST=webgl conformance test conformance/glsl/glsl-feature-mod-gentype.html does not crash in Win Debug. Review URL: http://codereview.appspot.com/5137047 git-svn-id: https://angleproject.googlecode.com/svn/trunk@773 736b8ea6-26fd-11df-bfd4-992fa37f6226
zmo@google.com 5a0a8dd3 2011-08-03T20:57:52 Remove unnecessary Visit function overloading. BUG=none TEST=build ok, run as before Review URL: http://codereview.appspot.com/4814063 git-svn-id: https://angleproject.googlecode.com/svn/trunk@715 736b8ea6-26fd-11df-bfd4-992fa37f6226
zmo@google.com 216aa5ed 2011-06-17T22:31:32 Map long for-loop control variable names in shaders. Look at TIntermLoop::traverse() in IntermTraverse.cpp, the control init part is not handled explicitly there (unlike the other two parts). It is expected hat visitLoop will cover the init part. The bug in the MapLongVariableNames is that the visitLoop doesn't do anything. This CL fixes it. BUG=171 TEST=conformance/glsl-long-variable-names.html passing. Review URL: http://codereview.appspot.com/4644045 git-svn-id: https://angleproject.googlecode.com/svn/trunk@696 736b8ea6-26fd-11df-bfd4-992fa37f6226
zmo@google.com 24c08c4e 2011-05-27T17:40:48 Fix the bug that long varying varibales are mapped into different names in fragment/vertex shaders. ANGLEBUG=144 TEST=the same long varying variable name in fragment/vertex shaders map to the same shortened name if using the same translator. Review URL: http://codereview.appspot.com/4547063 git-svn-id: https://angleproject.googlecode.com/svn/trunk@660 736b8ea6-26fd-11df-bfd4-992fa37f6226
zmo@google.com fd747b86 2011-04-23T01:30:07 Implement shader identifier name mapping. The name mapping happens when an identifier is longer than 32 characters. The name mapping is behind a flag, so it won't happen by default. Also, functions to query the mapped names are added. The purpose of this CL is for the drivers that can't handle long names. For example, linux NVIDIA driver can't handle 256 character name, whereas WebGL spec requires that. This CL also fixes the issue that some of the TIntermSymbols' ids are 0s. ANGLEBUG=144 TEST=test manually with shaders with long identifier names. Review URL: http://codereview.appspot.com/4428058 git-svn-id: https://angleproject.googlecode.com/svn/trunk@619 736b8ea6-26fd-11df-bfd4-992fa37f6226