rsx: Do not consume draw call barrier iterator when executing deps

This commit is contained in:
kd-11 2025-04-23 03:19:54 +03:00
parent 6a3e08383d
commit fdd6259945
2 changed files with 10 additions and 4 deletions

View file

@ -183,11 +183,11 @@ namespace rsx
u32 draw_clause::execute_pipeline_dependencies(context* ctx, instanced_draw_config_t* instance_config) const u32 draw_clause::execute_pipeline_dependencies(context* ctx, instanced_draw_config_t* instance_config) const
{ {
u32 result = 0u; u32 result = 0u;
for (; for (auto it = current_barrier_it;
current_barrier_it != draw_command_barriers.end() && current_barrier_it->draw_id == current_range_index; it != draw_command_barriers.end() && it->draw_id == current_range_index;
current_barrier_it++) it++)
{ {
const auto& barrier = *current_barrier_it; const auto& barrier = *it;
switch (barrier.type) switch (barrier.type)
{ {
case primitive_restart_barrier: case primitive_restart_barrier:

View file

@ -252,6 +252,12 @@ namespace rsx
return false; return false;
} }
// Advance barrier iterator so it always points to the current draw
for (;
current_barrier_it != draw_command_barriers.end() &&
current_barrier_it->draw_id < current_range_index;
++current_barrier_it);
if (draw_command_ranges[current_range_index].count == 0) if (draw_command_ranges[current_range_index].count == 0)
{ {
// Dangling execution barrier // Dangling execution barrier