mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
vkd3d-shader/ir: Do not merge signature elements which have different interpolation modes.
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.
This commit is contained in:
parent
8d83b2eaec
commit
b5c067b41a
Notes:
Alexandre Julliard
2023-12-06 23:24:41 +01:00
Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/513
@ -777,8 +777,9 @@ static bool shader_signature_merge(struct shader_signature *s, uint8_t range_map
|
|||||||
f = &elements[j];
|
f = &elements[j];
|
||||||
|
|
||||||
/* Merge different components of the same register unless sysvals are different,
|
/* 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
|
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)
|
|| range_map_get_register_count(range_map, f->register_index, f->mask) > 1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user