diff --git a/src/amd/vulkan/radv_shader_info.c b/src/amd/vulkan/radv_shader_info.c index 742fd782673..845dc6ab18f 100644 --- a/src/amd/vulkan/radv_shader_info.c +++ b/src/amd/vulkan/radv_shader_info.c @@ -375,14 +375,10 @@ gather_xfb_info(const nir_shader *nir, struct radv_shader_info *info) assert(xfb->output_count <= MAX_SO_OUTPUTS); so->num_outputs = xfb->output_count; - for (unsigned i = 0; i < xfb->output_count; i++) { - unsigned output_buffer = xfb->outputs[i].buffer; - unsigned stream = xfb->buffer_to_stream[xfb->outputs[i].buffer]; + u_foreach_bit(output_buffer, xfb->buffers_written) { + unsigned stream = xfb->buffer_to_stream[output_buffer]; so->enabled_stream_buffers_mask |= (1 << output_buffer) << (stream * 4); - } - - for (unsigned i = 0; i < NIR_MAX_XFB_BUFFERS; i++) { - so->strides[i] = xfb->buffers[i].stride / 4; + so->strides[output_buffer] = xfb->buffers[output_buffer].stride / 4; } }