Adding some instrumentation to shader_runner shows that the compiler tells the application the correct offsets of 0, 4, 8, and 12 for s.s1.r, s.s2.g, s.s2.b, and s.s2.a, respectively. However, the IR generated is full of madness: GLSL IR for native vertex shader 3: ( (declare (uniform ) S@0x20bdb90 s) (declare (shader_out ) vec4 gl_Position) (declare (shader_in ) vec4 vertex) (declare (shader_out ) vec4 v) (function main (signature void (parameters ) ( (assign (xyzw) (var_ref gl_Position) (var_ref vertex) ) (declare (temporary ) vec4 vec_ctor) (assign (x) (var_ref vec_ctor) (expression float ubo_load (constant uint (0)) (constant uint (0)) ) ) (assign (y) (var_ref vec_ctor) (expression float ubo_load (constant uint (0)) (constant uint (16)) ) ) (assign (z) (var_ref vec_ctor) (expression float ubo_load (constant uint (0)) (constant uint (32)) ) ) (assign (w) (var_ref vec_ctor) (expression float ubo_load (constant uint (0)) (constant uint (32)) ) ) (assign (xyzw) (var_ref v) (var_ref vec_ctor) ) )) ) )
Also, the tests are currently broken because they try to declare structures inside the uniform block. This is explicitly forbidden by the spec.
commit 574e4843e9e26aa6affa31c80ac42f745b68268b Author: Ian Romanick <ian.d.romanick@intel.com> Date: Sat Aug 17 00:27:43 2013 -0700 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
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.