Release Date for Patreon Members: 1st January 2019, 6:30AM CET

Public Release Date : 1st February 2019, 6:30AM CET

Main website : Black-Seraph.com

If you enjoy the development that Black-Seraph has offered, please consider joining him at Patreon or maybe just buy him a coffee at Ko-fi page.

Refresh bug squashed!

This will be the last time it will be referred to as the Refresh Bug since the problem did not have anything to do with the GFX driver or the GPU. From here on out it will be referred to as BOB ( because I decided it! ). So instead of pretending to know how it was fixed or what the problem actually was here is a comment from Black-Seraph:

For those technically inclined, here's an explanation of the issue: in Linux there's two major ways to safe CPU power and improve battery life. Hotplug support and scaling governors. The job of the hotplug support is to evaluate how many CPU cores the system needs right now and enable or disable CPU cores to ensure the system only uses as many cores as are currently required to ensure smooth operation. Scaling governors have the same purpose, but they regulate core frequency without turning them off. The Hotplug support on the XD+ is bugged though (or badly configured?), turning off CPU cores while they are in active use. After realizing it's mistake it panics and turns the core back on... Resulting in a constant core on / off cycle that causes the stutter we thought was vsync related. As it turns out the XD+'s HPS messes up because the battery thermal sensor on the XD+ is a fake.

It constantly returns extremely high temperatures forcing the interactive governor into constant minimal cpu frequencies and HPS into a constant emergency anti overheat routine. Turning HPS off fixes the cpu toggle issue... While the ondemand governor (which CleanROM enables by default) takes care of the rock bottom cpu frequencies.

Summed up:

The "refresh" issue was that HPS (hotplug support driver) was pulling cpu4 (big core #1) away while the apps were still using it. This caused a wait situation on app threads which would in turn cause a dip in fps. The reason multithreaded emulators got away with it was because they moved their cpu loads away from cpu4 (the one that kept getting turned on and off).

So now that BOB has been killed, let's move on to everything else that has changed.