1*4882a593SmuzhiyunFrom 1c41ba468681fcee3ebb9b9b0cf68095b7f13f1e Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com> 3*4882a593SmuzhiyunDate: Mon, 23 May 2022 13:13:45 +0800 4*4882a593SmuzhiyunSubject: [PATCH 3/3] core: Add --off-screen command-line option 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> 7*4882a593Smuzhiyun--- 8*4882a593Smuzhiyun src/main_loop.cpp | 7 +++++-- 9*4882a593Smuzhiyun src/options.cpp | 5 +++++ 10*4882a593Smuzhiyun src/options.h | 1 + 11*4882a593Smuzhiyun 3 files changed, 11 insertions(+), 2 deletions(-) 12*4882a593Smuzhiyun 13*4882a593Smuzhiyundiff --git a/src/main_loop.cpp b/src/main_loop.cpp 14*4882a593Smuzhiyunindex 5a6383b..94f4a12 100644 15*4882a593Smuzhiyun--- a/src/main_loop.cpp 16*4882a593Smuzhiyun+++ b/src/main_loop.cpp 17*4882a593Smuzhiyun@@ -123,8 +123,11 @@ void MainLoop::run() 18*4882a593Smuzhiyun !(should_quit = ws.should_quit()) && 19*4882a593Smuzhiyun !should_stop) 20*4882a593Smuzhiyun { 21*4882a593Smuzhiyun- ws.present_vulkan_image( 22*4882a593Smuzhiyun- scene.draw(ws.next_vulkan_image())); 23*4882a593Smuzhiyun+ if (options.off_screen) 24*4882a593Smuzhiyun+ scene.draw(ws.next_vulkan_image()); 25*4882a593Smuzhiyun+ else 26*4882a593Smuzhiyun+ ws.present_vulkan_image( 27*4882a593Smuzhiyun+ scene.draw(ws.next_vulkan_image())); 28*4882a593Smuzhiyun scene.update(); 29*4882a593Smuzhiyun } 30*4882a593Smuzhiyun 31*4882a593Smuzhiyundiff --git a/src/options.cpp b/src/options.cpp 32*4882a593Smuzhiyunindex 0ef58c9..6009949 100644 33*4882a593Smuzhiyun--- a/src/options.cpp 34*4882a593Smuzhiyun+++ b/src/options.cpp 35*4882a593Smuzhiyun@@ -50,6 +50,7 @@ struct option long_options[] = { 36*4882a593Smuzhiyun {"winsys-options", 1, 0, 0}, 37*4882a593Smuzhiyun {"list-devices", 0, 0, 0}, 38*4882a593Smuzhiyun {"run-forever", 0, 0, 0}, 39*4882a593Smuzhiyun+ {"off-screen", 0, 0, 0}, 40*4882a593Smuzhiyun {"debug", 0, 0, 0}, 41*4882a593Smuzhiyun {"help", 0, 0, 0}, 42*4882a593Smuzhiyun {0, 0, 0, 0} 43*4882a593Smuzhiyun@@ -136,6 +137,7 @@ Options::Options() 44*4882a593Smuzhiyun window_system_dir{VKMARK_WINDOW_SYSTEM_DIR}, 45*4882a593Smuzhiyun data_dir{VKMARK_DATA_DIR}, 46*4882a593Smuzhiyun run_forever{false}, 47*4882a593Smuzhiyun+ off_screen{false}, 48*4882a593Smuzhiyun show_debug{false}, 49*4882a593Smuzhiyun show_help{false}, 50*4882a593Smuzhiyun list_devices{false}, 51*4882a593Smuzhiyun@@ -167,6 +169,7 @@ std::string Options::help_string() 52*4882a593Smuzhiyun " --winsys-options OPTS Window system options as 'opt1=val1(:opt2=val2)*'\n" 53*4882a593Smuzhiyun " --run-forever Run indefinitely, looping from the last benchmark\n" 54*4882a593Smuzhiyun " back to the first\n" 55*4882a593Smuzhiyun+ " --off-screen Render to an off-screen surface\n" 56*4882a593Smuzhiyun " -d, --debug Display debug messages\n" 57*4882a593Smuzhiyun " -D --use-device Use Vulkan device with specified UUID\n" 58*4882a593Smuzhiyun " -L --list-devices List Vulkan devices\n" 59*4882a593Smuzhiyun@@ -223,6 +226,8 @@ bool Options::parse_args(int argc, char **argv) 60*4882a593Smuzhiyun window_system_options = parse_window_system_options(optarg); 61*4882a593Smuzhiyun else if (optname == "run-forever") 62*4882a593Smuzhiyun run_forever = true; 63*4882a593Smuzhiyun+ else if (optname == "off-screen") 64*4882a593Smuzhiyun+ off_screen = true; 65*4882a593Smuzhiyun else if (c == 'd' || optname == "debug") 66*4882a593Smuzhiyun show_debug = true; 67*4882a593Smuzhiyun else if (c == 'h' || optname == "help") 68*4882a593Smuzhiyundiff --git a/src/options.h b/src/options.h 69*4882a593Smuzhiyunindex eb5b6cf..69b37d4 100644 70*4882a593Smuzhiyun--- a/src/options.h 71*4882a593Smuzhiyun+++ b/src/options.h 72*4882a593Smuzhiyun@@ -55,6 +55,7 @@ struct Options 73*4882a593Smuzhiyun std::string window_system; 74*4882a593Smuzhiyun std::vector<WindowSystemOption> window_system_options; 75*4882a593Smuzhiyun bool run_forever; 76*4882a593Smuzhiyun+ bool off_screen; 77*4882a593Smuzhiyun bool show_debug; 78*4882a593Smuzhiyun bool show_help; 79*4882a593Smuzhiyun bool list_devices; 80*4882a593Smuzhiyun-- 81*4882a593Smuzhiyun2.20.1 82*4882a593Smuzhiyun 83