Same for me actually. I initially thought sg_display
was enough, but then the flickers occured albeit very rarely. debugmask
basically enables/disables some of the display core functionality.
Setting debugmask = 0x410
is equivalent to enabling two separate flags (can be found here): 0x410 = 0x10 | 0x400 = DC_DISABLE_PSR | DC_DISABLE_REPLAY
(|
is the bitwise or
operator; it’s a pretty common technique for setting flags in a C
code, where you define the options with enum
-s with non-overlapping bits). The documentation describes what these options mean.
DC_DISABLE_PSR
If set, disable Panel self refresh v1 and PSR-SU
DC_DISABLE_REPLAY
If set, disable Panel Replay
PSR
or panel self-refresh is a functionality that allows for the refresh rate of the display to be adjusted, depending on how fast things change on the display. This is basically designed to reduce the power consumption. PSR2
(or PSR-SU
, SU = selectively update) is analogous, but allows for only portions of the screen to have adjusted update frequency. Here’s a description of that:
PSR2/PSR-SU allows for expanded power-savings over the original PSR power-savings tech. Rather than being limited to power-savings when there are no changes/damage to the screen contents, this refined tech allows for selectively updating changed regions of the screen.
If I understand correctly, Panel Replay
is analogous to PSR
, except it’s designed for external displays (over the display port 2.0+). So I’m assuming if you’re not using an external display, simply setting debugmask=0x10
should be enough, but I haven’t tested that.
So in short, these options are intended to reduce the power consumption when rendering static (or close to static) images on the screen. Disabling them will likely increase the power consumption and shorten the battery lifespan.