Thanks for pointing out the open issue!
I looked into this a bit more to confirm what settings actually have an impact on framepacing, at least as far as the core settings are concerned. I’ll go into more detail in that open issue, but basically (assuming 240p is used in all scenarios):
1.) Normal/fullspeed doesn’t seem to make a significant difference (at least for the type of hitching/stutter I’m talking about).
2.) Using VGA produces dropped frames for some reason (which doesn’t make sense?), while composite/tv(rgb) produces the smoothest output.
3.) Threaded and synchronous rendering produces massive stuttering that does NOT get reported by RivaTuner’s time graph for some reason, but it is there. Using just the threaded renderer also produces the same result. This affects all modes and settings.
4.) Affects both PAL and NTSC video modes.
One anomaly I did observe was that frame times with VGA (480p) is degenerative, meaning that it gradually gets worse with time. If you were to unfocus the window or go back to the retroarch gui, and then go back to the emulator, it will initially be smooth as it should be. But over time, the frame timings get worse and produces a noticeable stutter.
My observations were conducted using the 240pvr test suite. I used Rivatuner to produce a frame time graph that updated every 500ms. As far as settings are concerned, the only changes I made to Retroarch’s settings were the refresh rate (which is using the refresh rate reported by the monitor), setting the index number of the GSYNC monitor to 1, Vsync, and sync to exact content. As far as core settings are concerned, here’s what I tested with (probably shouldn’t have disabled some of these, but I did this just to ensure I could at least get the best performance possible):
reicast_allow_service_buttons = "disabled"
reicast_alpha_sorting = "per-strip (fast, least accurate)"
reicast_analog_stick_deadzone = "15%"
reicast_boot_to_bios = "disabled"
reicast_broadcast = "NTSC"
reicast_cable_type = "TV (Composite)"
reicast_cpu_mode = "dynamic_recompiler"
reicast_custom_textures = "disabled"
reicast_digital_triggers = "disabled"
reicast_div_matching = "disabled"
reicast_dump_textures = "disabled"
reicast_enable_dsp = "disabled"
reicast_enable_purupuru = "disabled"
reicast_enable_rtt = "disabled"
reicast_enable_rttb = "disabled"
reicast_frame_skipping = "disabled"
reicast_framerate = "fullspeed"
reicast_gdrom_fast_loading = "disabled"
reicast_internal_resolution = "640x480"
reicast_language = "Default"
reicast_lightgun1_crosshair = "disabled"
reicast_lightgun2_crosshair = "disabled"
reicast_lightgun3_crosshair = "disabled"
reicast_lightgun4_crosshair = "disabled"
reicast_mipmapping = "disabled"
reicast_oit_abuffer_size = "512MB"
reicast_per_content_vmus = "disabled"
reicast_region = "Default"
reicast_render_to_texture_upscaling = "1x"
reicast_screen_rotation = "horizontal"
reicast_synchronous_rendering = "disabled"
reicast_system = "auto"
reicast_texupscale = "off"
reicast_texupscale_max_filtered_texture_size = "256"
reicast_threaded_rendering = "disabled"
reicast_trigger_deadzone = "0%"
reicast_vmu1_pixel_off_color = "DEFAULT_OFF 01"
reicast_vmu1_pixel_on_color = "DEFAULT_ON 00"
reicast_vmu1_screen_display = "disabled"
reicast_vmu1_screen_opacity = "100%"
reicast_vmu1_screen_position = "Upper Left"
reicast_vmu1_screen_size_mult = "1x"
reicast_vmu2_pixel_off_color = "DEFAULT_OFF 01"
reicast_vmu2_pixel_on_color = "DEFAULT_ON 00"
reicast_vmu2_screen_display = "disabled"
reicast_vmu2_screen_opacity = "100%"
reicast_vmu2_screen_position = "Upper Left"
reicast_vmu2_screen_size_mult = "1x"
reicast_vmu3_pixel_off_color = "DEFAULT_OFF 01"
reicast_vmu3_pixel_on_color = "DEFAULT_ON 00"
reicast_vmu3_screen_display = "disabled"
reicast_vmu3_screen_opacity = "100%"
reicast_vmu3_screen_position = "Upper Left"
reicast_vmu3_screen_size_mult = "1x"
reicast_vmu4_pixel_off_color = "DEFAULT_OFF 01"
reicast_vmu4_pixel_on_color = "DEFAULT_ON 00"
reicast_vmu4_screen_display = "disabled"
reicast_vmu4_screen_opacity = "100%"
reicast_vmu4_screen_position = "Upper Left"
reicast_vmu4_screen_size_mult = "1x"
reicast_volume_modifier_enable = "disabled"
reicast_widescreen_hack = "disabled"
I did most of my testing by manipulating the Cable type, framerate, threaded, and synchronous rendering settings. I wrote down all the results into a spreadsheet and recorded every test with ShadowPlay. I’ll add some more details in the open issue.
Hope this helps…