nir/spirv: Handle builtins in OpAccessChain
authorJason Ekstrand <jason.ekstrand@intel.com>
Mon, 19 Oct 2015 22:50:45 +0000 (15:50 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Mon, 19 Oct 2015 22:50:45 +0000 (15:50 -0700)
commit7e6959402de45a668ec4efa3cdac042bcfa2b349
tree6e53adee3ae14781ac828cb9cf7a580a0cca7d2b
parent958fc04dc51a2561c8598f42df59e3d9139e56a7
nir/spirv: Handle builtins in OpAccessChain

Previously, we were trying to handle them later when loading.  However, at
that point, you've already lost information and it's harder to handle
certain corner-cases.  In particular, if you have a shader that does

gl_PerVertex.gl_Position.x = foo

we have trouble because we see the .x and we don't know that we're in
gl_Position.  If we, instead, handle it in OpAccessChain, we have all the
information we need and we can silently re-direct it to the appropreate
variable.  This also lets us delete some code which is a nice side-effect.
src/glsl/nir/spirv_to_nir.c