zcull synchronization tweaks

- Implement forced reading when calling update method to sync partial lists
- Defer conditional render evaluation and use a read barrier to avoid extra work
- Fix HLE gcm library when binding tiles & zcull RAM
This commit is contained in:
kd-11 2018-07-19 19:57:01 +03:00 committed by kd-11
parent 3b47e43380
commit 8800c10476
6 changed files with 116 additions and 33 deletions

View file

@ -521,9 +521,10 @@ namespace rsx
return;
}
rsx->sync();
vm::ptr<CellGcmReportData> result = address_ptr;
rsx->conditional_render_test_failed = (result->value == 0);
// Defer conditional render evaluation
rsx->sync_hint(FIFO_hint::hint_conditional_render_eval);
rsx->conditional_render_test_address = address_ptr;
rsx->conditional_render_test_failed = false;
}
void set_zcull_render_enable(thread* rsx, u32, u32 arg)
@ -1809,8 +1810,6 @@ namespace rsx
bind<NV4097_SET_DEPTH_MASK, nv4097::set_surface_options_dirty_bit>();
bind<NV4097_SET_COLOR_MASK, nv4097::set_surface_options_dirty_bit>();
bind<NV4097_WAIT_FOR_IDLE, nv4097::sync>();
bind<NV4097_ZCULL_SYNC, nv4097::sync>();
bind<NV4097_SET_CONTEXT_DMA_REPORT, nv4097::sync>();
bind<NV4097_INVALIDATE_L2, nv4097::set_shader_program_dirty>();
bind<NV4097_SET_SHADER_PROGRAM, nv4097::set_shader_program_dirty>();
bind<NV4097_SET_TRANSFORM_PROGRAM_START, nv4097::set_transform_program_start>();