diff --git a/rpcs3/Emu/RSX/GL/GLGSRender.cpp b/rpcs3/Emu/RSX/GL/GLGSRender.cpp index 1e380daae5..f90635250b 100644 --- a/rpcs3/Emu/RSX/GL/GLGSRender.cpp +++ b/rpcs3/Emu/RSX/GL/GLGSRender.cpp @@ -465,7 +465,10 @@ void GLGSRender::end() } const GLenum draw_mode = gl::draw_mode(rsx::method_registers.current_draw_clause.primitive); - bool single_draw = !supports_multidraw || (rsx::method_registers.current_draw_clause.first_count_commands.size() <= 1 || rsx::method_registers.current_draw_clause.is_disjoint_primitive); + const bool allow_multidraw = supports_multidraw && !g_cfg.video.disable_FIFO_reordering; + const bool single_draw = (!allow_multidraw || + rsx::method_registers.current_draw_clause.first_count_commands.size() <= 1 || + rsx::method_registers.current_draw_clause.is_disjoint_primitive); if (upload_info.index_info) { diff --git a/rpcs3/Emu/RSX/VK/VKGSRender.cpp b/rpcs3/Emu/RSX/VK/VKGSRender.cpp index d30219d3b9..5aed289926 100644 --- a/rpcs3/Emu/RSX/VK/VKGSRender.cpp +++ b/rpcs3/Emu/RSX/VK/VKGSRender.cpp @@ -1430,7 +1430,8 @@ void VKGSRender::end() bool primitive_emulated = false; vk::get_appropriate_topology(rsx::method_registers.current_draw_clause.primitive, primitive_emulated); - const bool single_draw = (!supports_multidraw || + const bool allow_multidraw = supports_multidraw && !g_cfg.video.disable_FIFO_reordering; + const bool single_draw = (!allow_multidraw || rsx::method_registers.current_draw_clause.first_count_commands.size() <= 1 || rsx::method_registers.current_draw_clause.is_disjoint_primitive);