From b7d64dbdb78425b501093dfb137072459b5b3f0f Mon Sep 17 00:00:00 2001 From: notaz Date: Sun, 28 Jul 2013 16:45:13 +0300 Subject: [PATCH] tune flip calls and frame setup for pandora, mostly --- pico/draw.c | 10 +++++----- platform/common/emu.c | 11 ++++++----- platform/common/emu.h | 1 + platform/gp2x/plat.c | 1 + platform/pandora/plat.c | 5 ++--- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/pico/draw.c b/pico/draw.c index d24d5d7..ede11f5 100644 --- a/pico/draw.c +++ b/pico/draw.c @@ -1424,11 +1424,6 @@ PICO_INTERNAL void PicoFrameStart(void) lines = 240; } - HighCol = HighColBase + offs * HighColIncrement; - DrawLineDest = (char *)DrawLineDestBase + offs * DrawLineDestIncrement; - DrawScanline = 0; - skip_next_line = 0; - if (rendstatus != rendstatus_old || lines != rendlines) { rendlines = lines; // mode_change() might reset rendstatus_old by calling SetColorFormat @@ -1437,6 +1432,11 @@ PICO_INTERNAL void PicoFrameStart(void) rendstatus_old = rendstatus; } + HighCol = HighColBase + offs * HighColIncrement; + DrawLineDest = (char *)DrawLineDestBase + offs * DrawLineDestIncrement; + DrawScanline = 0; + skip_next_line = 0; + if (PicoOpt & POPT_ALT_RENDERER) return; diff --git a/platform/common/emu.c b/platform/common/emu.c index b828595..4098bd2 100644 --- a/platform/common/emu.c +++ b/platform/common/emu.c @@ -48,7 +48,8 @@ currentConfig_t currentConfig, defaultConfig; int state_slot = 0; int config_slot = 0, config_slot_current = 0; int pico_pen_x = 320/2, pico_pen_y = 240/2; -int pico_inp_mode = 0; +int pico_inp_mode; +int flip_after_sync; int engineState = PGS_Menu; static short __attribute__((aligned(4))) sndBuffer[2*44100/50]; @@ -1431,7 +1432,8 @@ void emu_loop(void) PicoFrame(); pemu_finalize_frame(fpsbuff, notice_msg); - // plat_video_flip(); + if (!flip_after_sync) + plat_video_flip(); /* frame limiter */ if (!reset_timing && !(currentConfig.EmuOpt & (EOPT_NO_FRMLIMIT|EOPT_EXT_FRMLIMIT))) @@ -1449,9 +1451,8 @@ void emu_loop(void) } } - // XXX: for some plats it might be better to flip before vsync - // (due to shadow registers in display hw) - plat_video_flip(); + if (flip_after_sync) + plat_video_flip(); pframes_done++; frames_done++; frames_shown++; diff --git a/platform/common/emu.h b/platform/common/emu.h index d721f94..836d7d4 100644 --- a/platform/common/emu.h +++ b/platform/common/emu.h @@ -82,6 +82,7 @@ extern int state_slot; extern int config_slot, config_slot_current; extern unsigned char *movie_data; extern int reset_timing; +extern int flip_after_sync; #define PICO_PEN_ADJUST_X 4 #define PICO_PEN_ADJUST_Y 2 diff --git a/platform/gp2x/plat.c b/platform/gp2x/plat.c index 8815453..2a3b079 100644 --- a/platform/gp2x/plat.c +++ b/platform/gp2x/plat.c @@ -202,6 +202,7 @@ void plat_init(void) in_set_config(in_name_to_id("evdev:pollux-analog"), IN_CFG_KEY_NAMES, caanoo_keys, sizeof(caanoo_keys)); + flip_after_sync = 1; gp2x_menu_init(); } diff --git a/platform/pandora/plat.c b/platform/pandora/plat.c index 72c63aa..a9fa992 100644 --- a/platform/pandora/plat.c +++ b/platform/pandora/plat.c @@ -300,9 +300,6 @@ void emu_video_mode_change(int start_line, int line_count, int is_32cols) if (doing_bg_frame) return; - PicoDrawSetOutFormat(PDF_RGB555, 1); - PicoDrawSetOutBuf(g_screen_ptr, g_screen_width * 2); - if (is_32cols) { fb_w = 256; fb_left = fb_right = 32; @@ -353,6 +350,8 @@ void emu_video_mode_change(int start_line, int line_count, int is_32cols) vout_fbdev_clear(layer_fb); vout_fbdev_resize(layer_fb, fb_w, fb_h, 16, fb_left, fb_right, fb_top, fb_bottom, 3); plat_video_flip(); + + PicoDrawSetOutFormat(PDF_RGB555, 0); } void plat_video_loop_prepare(void) -- 2.39.2