Skip to content

panfrost/blend: Fix invalid const values leading to NIR validation errors

Jessica Clarke requested to merge jrtc27/mesa:panfrost-blend-zero-padding into main

Using a designated initializer like this leaves padding bits, which form part of the aliasing u64/f64 member of the union, uninitialised, but a nir_const_value must always have the unused bits zeroed out. Thus, use the nir_const_value_for_float helper instead like everywhere else which will do a memset 0 for us first.

Without this, using the pan_blend shader in a build with validation enabled fails with:

NIR validation failed after nir_lower_vars_to_ssa ... vec4 32 ssa_58 = load_const (0x3f7cfcfd /* 0.988235 /, 0x3f7cfcfd / 0.988235 /, 0x3f7cfcfd / 0.988235 /, 0x3f800000 / 1.000000 */) error: memcmp(val, &cmp_val, sizeof(cmp_val)) == 0 (../src/compiler/nir/nir_validate.c:976)

Fixes: 1378c67b ("panfrost/blend: Inline blend constants")

Merge request reports