glsl: Use alignment of container record for its first field
authorIan Romanick <ian.d.romanick@intel.com>
Sat, 17 Aug 2013 07:27:43 +0000 (00:27 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Mon, 19 Aug 2013 23:39:04 +0000 (16:39 -0700)
commit574e4843e9e26aa6affa31c80ac42f745b68268b
tree6ce82887a557f927b81c3393d49aac2d29e2d44b
parent5ac884fd9f213baed1de52eb7d17b86455c48a02
glsl: Use alignment of container record for its first field

The first field of a record in a UBO has the aligment of the record
itself.

Fixes piglit vs-struct-pad, fs-struct-pad, and (with the patch posted to
the piglit list that extends the test) layout-std140.

NOTE: The bit of strangeness with the version of visit_field without the
record_type poitner is because that method is pure virtual in the base
class.  The original implementation of the class did this to ensure
derived classes remembered to implement that flavor.  Now they can
implement either flavor but not both.  I don't know a C++ way to enforce
that.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68195
Cc: "9.2 9.1" mesa-stable@lists.freedesktop.org
src/glsl/link_uniform_blocks.cpp
src/glsl/link_uniforms.cpp