vkd3d-shader/ir: Merge tess factor used masks together.

Encountered with the domain shader in
test_domain_shader_one_patch_constant_input().
This commit is contained in:
Elizabeth Figura
2025-05-12 14:08:40 -05:00
committed by Henri Verbeet
parent d4032f7d09
commit d40422592a
Notes: Henri Verbeet 2025-05-14 15:26:55 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1493

View File

@@ -2048,23 +2048,27 @@ static enum vkd3d_result shader_signature_map_patch_constant_index_ranges(struct
for (i = 0; i < s->element_count; i += register_count)
{
uint32_t used_mask;
e = &s->elements[i];
register_count = 1;
if (!e->sysval_semantic)
continue;
used_mask = e->used_mask;
for (j = i + 1; j < s->element_count; ++j, ++register_count)
{
f = &s->elements[j];
if (f->register_index != e->register_index + register_count || !sysval_semantics_should_merge(e, f))
break;
used_mask |= f->used_mask;
}
if (register_count < 2)
continue;
if ((ret = range_map_set_register_range(normaliser, range_map,
e->register_index, register_count, e->mask, e->used_mask, false)) < 0)
e->register_index, register_count, e->mask, used_mask, false)) < 0)
return ret;
}