diff --git a/parallel-rdp-standalone/gfx_m64p.c b/parallel-rdp-standalone/gfx_m64p.c index 5a5ae2e..e86b5bc 100644 --- a/parallel-rdp-standalone/gfx_m64p.c +++ b/parallel-rdp-standalone/gfx_m64p.c @@ -90,7 +90,7 @@ static m64p_handle configVideoGeneral = NULL; static m64p_handle configVideoParallel = NULL; #define PLUGIN_VERSION 0x000001 -#define VIDEO_PLUGIN_API_VERSION 0x020200 +#define VIDEO_PLUGIN_API_VERSION 0x020201 #define DP_INTERRUPT 0x20 uint32_t rdram_size; @@ -251,6 +251,11 @@ EXPORT void CALL ProcessRDPList(void) vk_process_commands(); } +EXPORT void CALL FullSync(void) +{ + vk_full_sync(); +} + EXPORT int CALL RomOpen(void) { window_fullscreen = ConfigGetParamBool(configVideoParallel, KEY_FULLSCREEN); diff --git a/parallel-rdp-standalone/parallel_imp.cpp b/parallel-rdp-standalone/parallel_imp.cpp index bd86574..54280d8 100644 --- a/parallel-rdp-standalone/parallel_imp.cpp +++ b/parallel-rdp-standalone/parallel_imp.cpp @@ -31,6 +31,8 @@ bool vk_vi_aa, vk_vi_scale, vk_dither_filter; bool vk_interlacing; bool skip_swap_clear; +static uint64_t signal; + static const unsigned cmd_len_lut[64] = { 1, 1, 1, 1, 1, 1, 1, 1, 4, 6, 12, 14, 12, 14, 20, 22, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -386,7 +388,7 @@ void vk_process_commands() { // For synchronous RDP: if (vk_synchronous && processor) - processor->wait_for_timeline(processor->signal_timeline()); + signal = processor->signal_timeline(); *gfx.MI_INTR_REG |= DP_INTERRUPT; *GET_GFX_INFO(DPC_STATUS_REG) &= ~(DP_STATUS_PIPE_BUSY | DP_STATUS_START_GCLK); gfx.CheckInterrupts(); @@ -401,6 +403,12 @@ void vk_process_commands() *GET_GFX_INFO(DPC_STATUS_REG) |= DP_STATUS_CBUF_READY; } +void vk_full_sync() +{ + if (vk_synchronous && processor) + processor->wait_for_timeline(signal); +} + void vk_resize() { QT_WSIPlatform* platform = (QT_WSIPlatform*)&wsi->get_platform(); diff --git a/parallel-rdp-standalone/parallel_imp.h b/parallel-rdp-standalone/parallel_imp.h index 3792816..f33bf8d 100644 --- a/parallel-rdp-standalone/parallel_imp.h +++ b/parallel-rdp-standalone/parallel_imp.h @@ -29,6 +29,7 @@ extern "C" bool vk_init(); void vk_destroy(); void vk_resize(); + void vk_full_sync(); void vk_read_screen(unsigned char* dest); #ifdef __cplusplus