From: Conor McCarthy cmccarthy@codeweavers.com
Regression in signature normalisation, however the old code was not correct either because it would apply the interpolation mode to all components. Found in an Assassin's Creed: Valhalla shader. --- libs/vkd3d-shader/ir.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/libs/vkd3d-shader/ir.c b/libs/vkd3d-shader/ir.c index acdb660ea..710811c67 100644 --- a/libs/vkd3d-shader/ir.c +++ b/libs/vkd3d-shader/ir.c @@ -777,8 +777,9 @@ static bool shader_signature_merge(struct shader_signature *s, uint8_t range_map f = &elements[j];
/* Merge different components of the same register unless sysvals are different, - * or it will be relative-addressed. */ + * interpolation modes are different, or it will be relative-addressed. */ if (f->register_index != e->register_index || f->sysval_semantic != e->sysval_semantic + || f->interpolation_mode != e->interpolation_mode || range_map_get_register_count(range_map, f->register_index, f->mask) > 1) break;