When video_off_hdmi=1 is set in MiSTer.ini, the ADV7513 HDMI
transmitter is powered down via I2C when the video_off timeout
expires, allowing the connected monitor to enter sleep mode.
HDMI is restored when user activity is detected (OSD opens).
* Add video_mode FIFO command for CRT video mode switching
- video.cpp: Add video_mode_cmd() that parses custom modelines and
applies them via video_set_mode(), with hfreq safety check blocking
modes outside 15625-16500Hz to protect 15kHz CRT monitors
- video.h: Declare video_mode_cmd()
- input.cpp: Dispatch "video_mode" commands from MiSTer_cmd FIFO
to video_mode_cmd()
* Remove hfreq guard from video_mode_cmd
The horizontal frequency check was limiting the command to 15kHz modes only. Removing it allows custom modelines with any frequency to be applied. Software at the other end must take care of not calling this API with unsafe frequencies.
`preset_default` option added to ini. Filename is relative to the presets/ path.
"Reset to defaults" option added to video processing menu which will delete the config files and reload the default configuration.
Reduce cost of setting video mode information when using
vsync_adjust=1/2 or vscale_mode=4/5 from 90ms to 5ms (worst case, most
instances are less than 1ms).
Split video initialization into video_init and video_set_mode.
video_init is called once, video_set_mode is called whenever the mode
changes.
Split hdmi_config into hdmi_config_init and hdmi_config_set_mode. Same
as video_, hdmi_config_init does the bulk of the initialization,
hdmi_config_set_mode is just for parameters that can change based on the
mode.
Load video filter data in loadScalerCfg and persist it.
Calculate a digest for scaler data and use that to determine whether new
data needs to be sent.
Only send gamma information if the filename has changed.
Offload fb module parameter writing to a separate thread via the new
offload system.
Reduce the amount of work being done in set_vrr_mode when vrr is
disabled.
Send pixel repetition as high bit of video width
Half linux framebuffer size when PR is in use
If a modes width is > 2048 then use pixel repetition
Add video_mode 14 2560x1440.
Fallback to mode 8 if core doesn't support PR
* Override configuration based on video mode
Configuration options can now be overridden based on the core's video
mode.
The config parser now supports sections with names in the format
"video=WIDTHxHEIGHT[@VREFRESH]". When a core changes video mode, MiSTer
reloads the config file and checks for a section matching the new mode.
If one is found, the options in the section override options in the
MiSTer/core sections.
MiSTer will look for a section matching the width, height, and vertical
refresh rate first. If none is found, it will fall back to a section
matching the width and height but not specifying a refresh rate. If
there is still no match, no overrides will be used.
Also, VREFRESH must match exactly the output from video_info or the
logs. To match 720x400 31.48KHz 70.1Hz, the section title would need to
be [video=720x400@70.1].
* Move video section variables out of cfg_t