gen_default_modes: Add more refresh rates to fallback modes

Refresh rates >60Hz become ever more common. In order to allow users
to keep hight refresh rates when not running at a natively advertized
resolution, add common refresh rates to our fallback modes.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2189>
This commit is contained in:
Robert Mader 2021-12-30 19:40:47 +01:00 committed by Marge Bot
parent fb9564b87b
commit 36481b8d21

View File

@ -55,6 +55,15 @@ common_resolutions = [
(5120, 2880), (5120, 2880),
] ]
common_refresh_rates = [
60,
90,
120,
144,
165,
240,
]
output_lines = [ output_lines = [
"/* Generated by gen-default-modes.py */\n", "/* Generated by gen-default-modes.py */\n",
"static const drmModeModeInfo meta_default_landscape_drm_mode_infos[] = {", "static const drmModeModeInfo meta_default_landscape_drm_mode_infos[] = {",
@ -84,7 +93,7 @@ def drm_mode_info_from_modeline(line):
def portrait_drm_mode_info_from_modeline(line): def portrait_drm_mode_info_from_modeline(line):
sline = line.split() sline = line.split()
return "{ %d, %d, %d, %d, %d, 0, %d, %d, %d, %d, 0, 0, %s, DRM_MODE_TYPE_DEFAULT, \"%dx%d_60.00\" }," % \ return "{ %d, %d, %d, %d, %d, 0, %d, %d, %d, %d, 0, 0, %s, DRM_MODE_TYPE_DEFAULT, \"%dx%d_%s }," % \
(int(float(sline[2]) * 1000), (int(float(sline[2]) * 1000),
int(sline[7]), int(sline[7]),
int(sline[8]), int(sline[8]),
@ -95,24 +104,26 @@ def portrait_drm_mode_info_from_modeline(line):
int(sline[5]), int(sline[5]),
int(sline[6]), int(sline[6]),
sync_flags(sline[12], sline[11]), sync_flags(sline[12], sline[11]),
int(sline[7]), int(sline[3])) int(sline[7]), int(sline[3]), sline[1].split("_")[1])
for resolution in common_resolutions: for resolution in common_resolutions:
cvt = os.popen("%s %s %s" % ('cvt', resolution[0], resolution[1])) for refresh_rate in common_refresh_rates:
cvt.readline() # discard comment line cvt = os.popen("%s %s %s %s" % ('cvt', resolution[0], resolution[1], refresh_rate))
line = cvt.readline() cvt.readline() # discard comment line
output_lines.append(drm_mode_info_from_modeline(line)) line = cvt.readline()
cvt.close() output_lines.append(drm_mode_info_from_modeline(line))
cvt.close()
output_lines.append("};") output_lines.append("};")
output_lines.append("") output_lines.append("")
output_lines.append("static const drmModeModeInfo meta_default_portrait_drm_mode_infos[] = {") output_lines.append("static const drmModeModeInfo meta_default_portrait_drm_mode_infos[] = {")
for resolution in common_resolutions: for resolution in common_resolutions:
cvt = os.popen("%s %s %s" % ('cvt', resolution[0], resolution[1])) for refresh_rate in common_refresh_rates:
cvt.readline() # discard comment line cvt = os.popen("%s %s %s %s" % ('cvt', resolution[0], resolution[1], refresh_rate))
line = cvt.readline() cvt.readline() # discard comment line
output_lines.append(portrait_drm_mode_info_from_modeline(line)) line = cvt.readline()
cvt.close() output_lines.append(portrait_drm_mode_info_from_modeline(line))
cvt.close()
output_lines.append("};") output_lines.append("};")
try: try: