Designated initializers are not allowed in C++ (not even C++11). Since nir_lower_samplers is now using nir_builder, and nir_lower_samplers is in C++, this breaks the build on some compilers. Aparently, GCC 5 allows it in some limited extent because mesa still builds on my system without this patch.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92052 --- src/glsl/nir/nir_builder.h | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/glsl/nir/nir_builder.h b/src/glsl/nir/nir_builder.h index 8db5fcf..8a43130 100644 --- a/src/glsl/nir/nir_builder.h +++ b/src/glsl/nir/nir_builder.h @@ -76,21 +76,36 @@ nir_build_imm(nir_builder *build, unsigned num_components, nir_const_value value static inline nir_ssa_def * nir_imm_float(nir_builder *build, float x) { - nir_const_value v = { { .f = {x, 0, 0, 0} } }; + nir_const_value v; + + memset(&v, 0, sizeof(&v)); + v.f[0] = x; + return nir_build_imm(build, 1, v); } static inline nir_ssa_def * nir_imm_vec4(nir_builder *build, float x, float y, float z, float w) { - nir_const_value v = { { .f = {x, y, z, w} } }; + nir_const_value v; + + memset(&v, 0, sizeof(&v)); + v.f[0] = x; + v.f[1] = y; + v.f[2] = z; + v.f[3] = w; + return nir_build_imm(build, 4, v); } static inline nir_ssa_def * nir_imm_int(nir_builder *build, int x) { - nir_const_value v = { { .i = {x, 0, 0, 0} } }; + nir_const_value v; + + memset(&v, 0, sizeof(&v)); + v.i[0] = x; + return nir_build_imm(build, 1, v); } -- 2.5.0.400.gff86faf _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
