mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
vkd3d-shader/d3dbc: Scan for the maximum temporary register index.
This commit is contained in:
committed by
Alexandre Julliard
parent
e489098878
commit
73d422a0e0
Notes:
Alexandre Julliard
2023-07-04 23:25:44 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/255
@@ -729,6 +729,16 @@ static bool add_signature_element_from_semantic(struct vkd3d_shader_sm1_parser *
|
|||||||
semantic->usage_idx, sysval, reg->idx[0].offset, true, mask);
|
semantic->usage_idx, sysval, reg->idx[0].offset, true, mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void shader_sm1_scan_register(struct vkd3d_shader_sm1_parser *sm1, const struct vkd3d_shader_register *reg, unsigned int mask)
|
||||||
|
{
|
||||||
|
uint32_t register_index = reg->idx[0].offset;
|
||||||
|
|
||||||
|
if (reg->type == VKD3DSPR_TEMP)
|
||||||
|
sm1->p.shader_desc.temp_count = max(sm1->p.shader_desc.temp_count, register_index + 1);
|
||||||
|
|
||||||
|
add_signature_element_from_register(sm1, reg, false, mask);
|
||||||
|
}
|
||||||
|
|
||||||
/* Read a parameter token from the input stream, and possibly a relative
|
/* Read a parameter token from the input stream, and possibly a relative
|
||||||
* addressing token. */
|
* addressing token. */
|
||||||
static void shader_sm1_read_param(struct vkd3d_shader_sm1_parser *sm1,
|
static void shader_sm1_read_param(struct vkd3d_shader_sm1_parser *sm1,
|
||||||
@@ -1083,7 +1093,7 @@ static void shader_sm1_read_instruction(struct vkd3d_shader_sm1_parser *sm1, str
|
|||||||
if (ins->dst_count)
|
if (ins->dst_count)
|
||||||
{
|
{
|
||||||
shader_sm1_read_dst_param(sm1, &p, dst_param);
|
shader_sm1_read_dst_param(sm1, &p, dst_param);
|
||||||
add_signature_element_from_register(sm1, &dst_param->reg, false, dst_param->write_mask);
|
shader_sm1_scan_register(sm1, &dst_param->reg, dst_param->write_mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Predication token */
|
/* Predication token */
|
||||||
@@ -1094,8 +1104,7 @@ static void shader_sm1_read_instruction(struct vkd3d_shader_sm1_parser *sm1, str
|
|||||||
for (i = 0; i < ins->src_count; ++i)
|
for (i = 0; i < ins->src_count; ++i)
|
||||||
{
|
{
|
||||||
shader_sm1_read_src_param(sm1, &p, &src_params[i]);
|
shader_sm1_read_src_param(sm1, &p, &src_params[i]);
|
||||||
add_signature_element_from_register(sm1, &src_params[i].reg,
|
shader_sm1_scan_register(sm1, &src_params[i].reg, mask_from_swizzle(src_params[i].swizzle));
|
||||||
false, mask_from_swizzle(src_params[i].swizzle));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user