Skip to content
Snippets Groups Projects
Commit 83851133 authored by Conor McCarthy's avatar Conor McCarthy Committed by Alexandre Julliard
Browse files

vkd3d-shader/ir: Set merged signature element interpolation mode only from used elements.

parent 759362b5
No related branches found
No related tags found
1 merge request!536vkd3d-shader/ir: Set merged signature element interpolation mode only from used elements.
Pipeline #21047 skipped
......@@ -840,6 +840,7 @@ static bool shader_signature_merge(struct shader_signature *s, uint8_t range_map
unsigned int i, j, element_count, new_count, register_count;
struct signature_element *elements;
struct signature_element *e, *f;
bool used;
element_count = s->element_count;
if (!(elements = vkd3d_malloc(element_count * sizeof(*elements))))
......@@ -860,6 +861,8 @@ static bool shader_signature_merge(struct shader_signature *s, uint8_t range_map
if (range_map_get_register_count(range_map, e->register_index, e->mask) > 1)
continue;
used = e->used_mask;
for (; j < element_count; ++j)
{
f = &elements[j];
......@@ -877,6 +880,16 @@ static bool shader_signature_merge(struct shader_signature *s, uint8_t range_map
e->mask |= f->mask;
e->used_mask |= f->used_mask;
e->semantic_index = min(e->semantic_index, f->semantic_index);
/* The first element may have no interpolation mode if it is unused. Elements which
* actually have different interpolation modes are assigned different registers. */
if (f->used_mask && !used)
{
if (e->interpolation_mode && e->interpolation_mode != f->interpolation_mode)
FIXME("Mismatching interpolation modes %u and %u.\n", e->interpolation_mode, f->interpolation_mode);
else
e->interpolation_mode = f->interpolation_mode;
}
}
}
element_count = new_count;
......
......@@ -37943,7 +37943,6 @@ static void test_unused_interpolated_input(void)
D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_COPY_SOURCE);
 
get_resource_readback_with_command_list(context.render_target, 0, &rb, queue, command_list);
todo
check_readback_data_uint(&rb.rb, &box, 0xff00ff00, 0);
release_resource_readback(&rb);
 
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment