rsx: Let 308a::color have a synchronization side-effect in strict mode

- Some games use 308a::color to implement custom sync primitives (ETQW).
- When the color data is written, the engine assumes all occlusion reports are ready which can cause severe flickering if we don't flush the pipeline.
This commit is contained in:
kd-11 2023-12-08 23:11:04 +03:00 committed by kd-11
parent f824be6b7b
commit 67f97b0e15

View File

@ -1054,6 +1054,13 @@ namespace rsx
// Skip "handled methods"
rsx->fifo_ctrl->skip_methods(count - 1);
// 308A::COLOR can be used to create custom sync primitives.
// Hide this behind strict mode due to the potential performance implications.
if (count == 1 && !g_cfg.video.relaxed_zcull_sync && g_cfg.video.strict_rendering_mode)
{
rsx->sync();
}
switch (*method_registers.blit_engine_nv3062_color_format())
{
case blit_engine::transfer_destination_format::a8r8g8b8: