vkd3d-shader/tpf: Validate index range declarations.

This commit is contained in:
Conor McCarthy
2023-05-04 16:56:30 +10:00
committed by Alexandre Julliard
parent d565fbdcd6
commit 6dd1b01284
Notes: Alexandre Julliard 2023-05-09 22:25:51 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/198
3 changed files with 119 additions and 27 deletions

View File

@@ -6195,8 +6195,6 @@ static bool spirv_compiler_check_index_range(struct spirv_compiler *compiler,
struct vkd3d_shader_register_info reg_info;
struct vkd3d_shader_register current_reg;
struct vkd3d_symbol reg_symbol;
unsigned int i;
uint32_t id;
current_reg = *reg;
vkd3d_symbol_make_register(&reg_symbol, &current_reg);
@@ -6212,27 +6210,6 @@ static bool spirv_compiler_check_index_range(struct spirv_compiler *compiler,
FIXME("Unhandled register %#x.\n", reg->type);
return false;
}
id = reg_info.id;
for (i = reg->idx[0].offset; i < reg->idx[0].offset + range->register_count; ++i)
{
current_reg.idx[0].offset = i;
vkd3d_symbol_make_register(&reg_symbol, &current_reg);
if (range->dst.write_mask != reg_info.write_mask
|| vkd3d_write_mask_component_count(reg_info.write_mask) != 1)
{
FIXME("Unhandled index range write mask %#x (%#x).\n",
range->dst.write_mask, reg_info.write_mask);
return false;
}
if (reg_info.id != id)
{
FIXME("Unhandled index range %#x, %u.\n", reg->type, i);
return false;
}
}
return true;
}