The mix of bitwise operators with * and + to compute the packing_class values was a little weird. Just use bitwise ops instead. --- src/compiler/glsl/link_varyings.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp index 7821b1e..17d8653 100644 --- a/src/compiler/glsl/link_varyings.cpp +++ b/src/compiler/glsl/link_varyings.cpp @@ -1982,11 +1982,12 @@ varying_matches::compute_packing_class(const ir_variable *var) * * Therefore, the packing class depends only on the interpolation type. */ - unsigned packing_class = var->data.centroid | (var->data.sample << 1) | + unsigned packing_class = (var->data.centroid << 0) | + (var->data.sample << 1) | (var->data.patch << 2) | (var->data.must_be_shader_input << 3); - packing_class *= 8; - packing_class += var->is_interpolation_flat() + packing_class <<= 3; + packing_class |= var->is_interpolation_flat() ? unsigned(INTERP_MODE_FLAT) : var->data.interpolation; return packing_class; } -- 1.9.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev