From 6146f53ad57e88b50f7e4630e5eb991ebdd48034 Mon Sep 17 00:00:00 2001 From: icex2 Date: Thu, 13 Feb 2025 14:31:47 +0100 Subject: [PATCH] feat: Improve d3d9-monitor-check command line args (#325) Use more user-friendly seconds for total and warm-up time instead of frames. Use the refresh rate to calculcate the total frame count internally for the test. Co-authored-by: icex2 --- src/main/d3d9-monitor-check/main.c | 40 +++++++++++++++++------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/src/main/d3d9-monitor-check/main.c b/src/main/d3d9-monitor-check/main.c index 5ab438d..d4445aa 100644 --- a/src/main/d3d9-monitor-check/main.c +++ b/src/main/d3d9-monitor-check/main.c @@ -40,12 +40,12 @@ static void _print_synopsis() printfln_err("Available commands:"); printfln_err(" adapter: Query adapter information"); printfln_err(" modes: Query adapter modes"); - printfln_err(" run [--total-warm-up-frame-count n] [--total-frame-count n] [--windowed] [--vsync-off]: Run the monitor check. Ensure that the mandatory parameters for width, height and refresh rate are values that are supported by the adapter's mode. Use the \"modes\" subcommand to get a list of supported modes."); + printfln_err(" run [--warm-up-secs n] [--total-secs n] [--windowed] [--vsync-off]: Run the monitor check. Ensure that the mandatory parameters for width, height and refresh rate are values that are supported by the adapter's mode. Use the \"modes\" subcommand to get a list of supported modes."); printfln_err(" width: Width of the rendering resolution to run the test at"); printfln_err(" height: Height of the rendering resolution to run the test at"); printfln_err(" refresh_rate: Target refresh rate to run the test at"); - printfln_err(" total-warm-up-frame-count: Optional. Number of frames to warm-up before executing the main run that counts towards the measurement results"); - printfln_err(" total-frame-count: Optional. Total number of frames to run the test for that count towards the measurement results"); + printfln_err(" warm-up-secs: Optional. Number of seconds to warm-up before executing the main run that counts towards the measurement results"); + printfln_err(" total-secs: Optional. Total number of seconds to run the test for that count towards the measurement results"); printfln_err(" windowed: Optional. Run the test in windowed mode (not recommended)"); printfln_err(" vsync-off: Optional. Run the test with vsync off (not recommended)"); } @@ -581,11 +581,14 @@ static bool _cmd_run(int argc, char **argv) uint32_t width; uint32_t height; uint32_t refresh_rate; - uint32_t total_warm_up_frame_count; - uint32_t total_frame_count; + uint32_t warm_up_seconds; + uint32_t total_seconds; bool windowed; bool vsync_off; + uint32_t total_warm_up_frame_count; + uint32_t total_frame_count; + if (argc < 3) { _print_synopsis(); printfln_err("ERROR: Insufficient arguments"); @@ -617,38 +620,38 @@ static bool _cmd_run(int argc, char **argv) } // Sane defaults - total_warm_up_frame_count = 500; - total_frame_count = 1000; + warm_up_seconds = 10; + total_seconds = 20; windowed = false; vsync_off = false; for (int i = 3; i < argc; i++) { - if (!strcmp(argv[i], "--total-warm-up-frame-count")) { + if (!strcmp(argv[i], "--warm-up-secs")) { if (i + 1 < argc) { - total_warm_up_frame_count = atoi(argv[++i]); + warm_up_seconds = atoi(argv[++i]); - if (total_warm_up_frame_count == 0) { + if (warm_up_seconds == 0) { _print_synopsis(); - printfln_err("ERROR: Invalid total warm-up frame count: %d", total_warm_up_frame_count); + printfln_err("ERROR: Invalid warm-up seconds: %d", warm_up_seconds); return false; } } else { _print_synopsis(); - printfln_err("ERROR: Missing argument for --total-warm-up-frame-count"); + printfln_err("ERROR: Missing argument for --warm-up-secs"); return false; } - } else if (!strcmp(argv[i], "--total-frame-count")) { + } else if (!strcmp(argv[i], "--total-secs")) { if (i + 1 < argc) { - total_frame_count = atoi(argv[++i]); + total_seconds = atoi(argv[++i]); - if (total_frame_count == 0) { + if (total_seconds == 0) { _print_synopsis(); - printfln_err("ERROR: Invalid total frame count: %d", total_frame_count); + printfln_err("ERROR: Invalid total seconds: %d", total_seconds); return false; } } else { _print_synopsis(); - printfln_err("ERROR: Missing argument for --total-frame-count"); + printfln_err("ERROR: Missing argument for --total-secs"); return false; } } else if (!strcmp(argv[i], "--windowed")) { @@ -658,6 +661,9 @@ static bool _cmd_run(int argc, char **argv) } } + total_warm_up_frame_count = warm_up_seconds * refresh_rate; + total_frame_count = total_seconds * refresh_rate; + return _run(width, height, refresh_rate, total_warm_up_frame_count, total_frame_count, windowed, vsync_off); }