vkd3d-shader: Use iterators in vsir_program_scan().

This commit is contained in:
Giovanni Mascellani
2025-07-22 18:51:36 +02:00
committed by Henri Verbeet
parent aba355896f
commit 50afaf4ac6
Notes: Henri Verbeet 2025-07-29 13:35:06 +02:00
Approved-by: Francisco Casas (@fcasas)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1656

View File

@@ -1598,12 +1598,13 @@ void vkd3d_shader_free_scan_descriptor_info1(struct vkd3d_shader_scan_descriptor
static int vsir_program_scan(struct vsir_program *program, const struct vkd3d_shader_compile_info *compile_info, static int vsir_program_scan(struct vsir_program *program, const struct vkd3d_shader_compile_info *compile_info,
struct vkd3d_shader_message_context *message_context, bool add_descriptor_info) struct vkd3d_shader_message_context *message_context, bool add_descriptor_info)
{ {
struct vsir_program_iterator it = vsir_program_iterator(&program->instructions);
struct vkd3d_shader_scan_combined_resource_sampler_info *combined_sampler_info; struct vkd3d_shader_scan_combined_resource_sampler_info *combined_sampler_info;
struct vkd3d_shader_scan_hull_shader_tessellation_info *tessellation_info; struct vkd3d_shader_scan_hull_shader_tessellation_info *tessellation_info;
struct vkd3d_shader_scan_descriptor_info *descriptor_info; struct vkd3d_shader_scan_descriptor_info *descriptor_info;
struct vkd3d_shader_scan_signature_info *signature_info; struct vkd3d_shader_scan_signature_info *signature_info;
struct vkd3d_shader_instruction *instruction;
struct vkd3d_shader_scan_context context; struct vkd3d_shader_scan_context context;
struct vkd3d_shader_instruction *ins;
int ret = VKD3D_OK; int ret = VKD3D_OK;
unsigned int i; unsigned int i;
@@ -1631,10 +1632,9 @@ static int vsir_program_scan(struct vsir_program *program, const struct vkd3d_sh
if (TRACE_ON()) if (TRACE_ON())
vsir_program_trace(program); vsir_program_trace(program);
for (i = 0; i < program->instructions.count; ++i) for (ins = vsir_program_iterator_head(&it); ins; ins = vsir_program_iterator_next(&it))
{ {
instruction = &program->instructions.elements[i]; if ((ret = vkd3d_shader_scan_instruction(&context, ins)) < 0)
if ((ret = vkd3d_shader_scan_instruction(&context, instruction)) < 0)
break; break;
} }