mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/tpf: Allow I/O index ranges to not intersect a signature element for a given register.
The current TPF validator enforces that for each register involved in a DCL_INDEX_RANGE instruction there must be a signature element for that register and the DCL_INDEX_RANGE write mask. This is an excessively strong request, and causes some shaders from The Falconeer to be invalidly rejected. The excessively strong check was needed to avoid triggering a bug in the I/O normaliser. Since that bug is now solved, the check can be relaxed.
This commit is contained in:
committed by
Henri Verbeet
parent
4b84fb486b
commit
665c29f0be
Notes:
Henri Verbeet
2025-02-19 18:01:43 +01:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Francisco Casas (@fcasas) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1332
@@ -1051,7 +1051,8 @@ static void shader_sm4_read_dcl_index_range(struct vkd3d_shader_instruction *ins
|
||||
register_idx, register_count, write_mask, e->sysval_semantic);
|
||||
return;
|
||||
}
|
||||
if ((io_masks[register_idx + i] & write_mask) != write_mask)
|
||||
if ((io_masks[register_idx + i] & write_mask) != write_mask
|
||||
&& (io_masks[register_idx + i] & write_mask) != 0)
|
||||
{
|
||||
WARN("No matching declaration for index range base %u, count %u, mask %#x.\n",
|
||||
register_idx, register_count, write_mask);
|
||||
|
Reference in New Issue
Block a user