From: notaz Date: Sun, 28 Jul 2013 13:45:13 +0000 (+0300) Subject: tune flip calls and frame setup X-Git-Tag: v1.85~32 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b7d64dbdb78425b501093dfb137072459b5b3f0f;p=picodrive.git tune flip calls and frame setup for pandora, mostly --- diff --git a/pico/draw.c b/pico/draw.c index d24d5d79..ede11f5d 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 b828595f..4098bd25 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 d721f94a..836d7d4b 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 88154535..2a3b0794 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 72c63aa3..a9fa9920 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)